purebasic.info

PureBasic forum
Текущее время: Пн апр 22, 2019 7:32 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Нарисовать линию
СообщениеДобавлено: Сб апр 13, 2019 11:28 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 796
Благодарил (а): 2 раз.
Поблагодарили: 37 раз.
Пункты репутации: 9
Собственно в чём разница Line() и LineXY()?
В гди вроде бы ху это от конца предыдущей рисует до ху а тут одно и тоже? :roll:
ps:хотя что то с координатами тут
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
  If OpenWindow(0, 0, 0, 200, 200, "2DDrawing Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    If CreateImage(0, 200, 200) And StartDrawing(ImageOutput(0))
      Box(0, 0, 200, 200, RGB(255, 255, 255))
      For Width = 1 To 180 Step 5
        Line(10, 10, Width, 180, RGB(Random(255), Random(255), Random(255)))
      Next Width
      StopDrawing()
      ImageGadget(0, 0, 0, 200, 200, ImageID(0))
    EndIf
   
    Repeat
      Event = WaitWindowEvent()
    Until Event = #PB_Event_CloseWindow
  EndIf
 If OpenWindow(0, 0, 0, 200, 200, "2DDrawing Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    If CreateImage(0, 200, 200) And StartDrawing(ImageOutput(0))
      Box(0, 0, 200, 200, RGB(255, 255, 255))
      For Width = 1 To 180 Step 5
        LineXY(10, 10, Width, 180, RGB(Random(255), Random(255), Random(255)))
      Next Width
      StopDrawing()
      ImageGadget(0, 0, 0, 200, 200, ImageID(0))
    EndIf
   
    Repeat
      Event = WaitWindowEvent()
    Until Event = #PB_Event_CloseWindow
  EndIf
 



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Нарисовать линию
СообщениеДобавлено: Сб апр 13, 2019 11:55 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 796
Благодарил (а): 2 раз.
Поблагодарили: 37 раз.
Пункты репутации: 9
Ладно вроде бы понял что одна координаты коца линии смещает а другая нет.
только вот первая не рисует при смещении 0 это похоже на ошибку. :roll:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
 
Procedure vyvod(zadanie.i)
  Protected i.i
Protected i1.i
;{;=================Подготовка к рисованию
  StartDrawing(CanvasOutput(0))
  DrawingMode(#PB_2DDrawing_Default)
;};
 
  Line(30, 30, 0, 470, RGB(Random(255), Random(255), Random(255)))
 
 
  ;LineXY(30, 30, 30, 470, RGB(Random(255), Random(255), Random(255)))
 
 
 
 
 
 ;{;Завершение рисования
 
 StopDrawing()
;};
 
EndProcedure
 
 
Procedure formy()
If OpenWindow(0, 0, 0,700, 500, "График",#PB_Window_SystemMenu | #PB_Window_ScreenCentered|#PB_Window_MinimizeGadget)
  CanvasGadget(0,0,0,700,500,#WS_CLIPCHILDREN|#PB_Canvas_Border|#PB_Canvas_Image)
 
  vyvod(zadanie.i)
 EndIf  
EndProcedure
formy();Вход в программу
;{;главный цикл обработки программы
 
Repeat
   Select WaitWindowEvent()
     Case #PB_Event_CloseWindow
     
       Break
     Case #WM_LBUTTONDOWN;нажата левая кнопка мыши
 
         
     Case #WM_RBUTTONDOWN      
     Case #WM_RBUTTONUP
 
EndSelect
 
 ForEver
 End
;};
 
 



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Нарисовать линию
СообщениеДобавлено: Сб апр 13, 2019 12:02 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11432
Благодарил (а): 4 раз.
Поблагодарили: 459 раз.
Сергейчик писал(а):
только вот первая не рисует при смещении 0 это похоже на ошибку.
В справке об этом написано. https://www.purebasic.com/documentation ... /line.html
Цитата:
These values include the starting point so a Height of 1 draws a horizontal line while a Height of 0 draws nothing at all.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Нарисовать линию
СообщениеДобавлено: Вс апр 14, 2019 7:00 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 792
Благодарил (а): 76 раз.
Поблагодарили: 23 раз.
Пункты репутации: 5
ты каким справочником пользуешься?
по русски ж написано как эта функция работает
Цитата:
Синтаксис

Line(x, y, Width, Height [, Color])
Описание

Рисует линию из точки (X,Y) в точку (X+Width,Y+Height), являющуюся диагональю воображаемого прямоугольника с координатами левого верхнего угла в точке (X,Y) и размерами сторон Width, Height. Текущая поверхность вывода графики устанавливается с помощью StartDrawing().
Параметры

x, y Координаты начальной точки линии, которая будет нарисована.

Width, Height Задают размеры воображаемого прямоугольника, диагональ которого и будет линией. Эти значения включают начальную точку, таким образом Height 1 даст горизонтальную линию, в то время как Height 0 не даст вообще ничего.

(дополн.) Color Цвет для вывода линии. Если этот параметр не задан, то будет использоваться цвет установленный функцией FrontColor(). Значение цвета может быть в формате RGBA или RGB.




а во второй всё совсем просто, там начальные и конечные координаты
и поверь наслово, оба варианта удобны для разных целей


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Нарисовать линию
СообщениеДобавлено: Вс апр 14, 2019 1:13 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 796
Благодарил (а): 2 раз.
Поблагодарили: 37 раз.
Пункты репутации: 9
Подскажите как ширину линии менять без гди?(для кроссплатформености) :roll:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Нарисовать линию
СообщениеДобавлено: Пн апр 15, 2019 6:00 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 792
Благодарил (а): 76 раз.
Поблагодарили: 23 раз.
Пункты репутации: 5
в 2D ни как, только в векторе, там есть параметр, или рисуй паралельно несколько штук


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Нарисовать линию
СообщениеДобавлено: Пн апр 15, 2019 10:38 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11432
Благодарил (а): 4 раз.
Поблагодарили: 459 раз.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
If OpenWindow(0, 0, 0, 400, 200, "VectorDrawing", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CanvasGadget(0, 0, 0, 400, 200)
 
  If StartVectorDrawing(CanvasVectorOutput(0))
   
    MovePathCursor(10, 100)
    AddPathLine(390, 100)
   
    VectorSourceColor(RGBA(0, 255, 0, 255))
    StrokePath(10)
   
    StopVectorDrawing()
  EndIf
 
  Repeat
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow
EndIf


_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Нарисовать линию
СообщениеДобавлено: Пн апр 15, 2019 8:07 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 796
Благодарил (а): 2 раз.
Поблагодарили: 37 раз.
Пункты репутации: 9
В том то и дело что версия 5.31 даже не знаю что там за вектор(бы ло бы интересно)
Наверное остаётся либа каиро,она же кроссплатформенная?
Ps:ну или действительно несколько линий рисовать у меня график с диаганалями в 100 линий.
или опенгл задействовать но я с его шрифтом не пробывал,хотя наверное можно и через канвасоутпут? :roll:


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB