purebasic.info

PureBasic forum
Текущее время: Сб июл 21, 2018 8:23 pm

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




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Рисование мышью
СообщениеДобавлено: Вс окт 10, 2010 4:10 pm 
Не в сети
ассистент

Зарегистрирован: Чт янв 07, 2010 8:54 pm
Сообщений: 19
Откуда: Броды, Украина
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Предлагаю Вашему вниманию небольшой примерчик рисования мышью в Image
Код:
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
 
Global m_lb.l = 0 ; нажата ли левая кнопка
Global m_rb.l = 0 ; нажата ли правая кнопка
 
Global lb_color.l = RGB(0,0,255) ;цвет левой кнопки
Global rb_color.l = RGB(255,0,0) ; цвет правой кнопки
 
Procedure MyPaint(x.l,y.l)
  Static xx.l=0, yy.l=0
  StartDrawing(ImageOutput(500))  
    If m_lb = 1 : LineXY(xx,yy,x,y,lb_color) : EndIf
    If m_rb = 1 : LineXY(xx,yy,x,y,rb_color) :EndIf
    xx = x : yy = y
  StopDrawing()
  SetGadgetState(0,ImageID(500))
EndProcedure
 
If OpenWindow(0,0,0,400,300,"Рисовалка",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CreateImage(500,400,300)
  StartDrawing(ImageOutput(500)) : Box(0,0,400,300,RGB(255,255,255)):  StopDrawing() ; фон
  ImageGadget(0,0,0,400,300,ImageID(500))
 Repeat
   event = WaitWindowEvent()
   ;Debug "Event: " + StrU(Event,#PB_Long) + " Hex: " + Hex(Event,#PB_Long)
    Select Event
        ; поскольку для статических контролов (гаджетов) событие нажатия левой кнопки мыши
        ; не генерируеться - делаем следующее извращение
      Case #PB_Event_Gadget      
        If EventType() = #PB_EventType_LeftClick
            m_lb = 1
        EndIf
        ; конец извращения        
      Case #WM_LBUTTONUP ; Event = 514
        m_lb =0
      Case #WM_RBUTTONDOWN ;  Event = 516
        m_rb = 1
      Case #WM_RBUTTONUP ; Event = 517
        m_rb =0
      Case #WM_MOUSEMOVE ; Event = 512
       myPaint(WindowMouseX(0),WindowMouseY(0))        
    EndSelect
  Until Event = #PB_Event_CloseWindow
EndIf
End
; проверено на Windows XP SP3 PureBasic 4.50 (x86)
 



:)


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

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


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

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


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

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