PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Избавиться от мерцания CanvasGadget, при ResizeGadget


Избавиться от мерцания CanvasGadget, при ResizeGadget

Сообщений 1 страница 2 из 2

1

gjrbyek ajhev

Отредактировано Webarion (13.06.2025 14:09:57)

0

2

Код:
Enumeration Windows
  #Window1
EndEnumeration

Enumeration Gadgets
  #Canvas1
EndEnumeration

Procedure _Draw()
  If StartDrawing( CanvasOutput(#Canvas1) )
    Protected.u W = OutputWidth(), H = OutputHeight()
    For i =0 To 7
      Box( i*20, i*20, W-(i*40), H-(i*40), RGB( 255-(i*20), 200-(i*20), 170-(i*17) ) )
    Next
    StopDrawing()
  EndIf
EndProcedure

Procedure CanvasEvent()
  If EventType() = #PB_EventType_Resize
    _Draw()
  EndIf
EndProcedure

Procedure _Event()
  ResizeGadget( #Canvas1, 10, 10, WindowWidth(#Window1)-20 , WindowHeight(#Window1)-20 )
EndProcedure


If OpenWindow( #Window1, 0, 0, 500, 300, "ТЕСТ (ИЗМЕНЯЙТЕ РАЗМЕР ОКНА С ПОМОЩЬЮ МЫШИ)", #PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_SizeGadget )
  SmartWindowRefresh(#Window1, #True)
  SetWindowColor( #Window1, $AAB220 )
  CanvasGadget( #Canvas1, 10, 10, WindowWidth(#Window1)-20 , WindowHeight(#Window1)-20 )
  _Draw()
  BindEvent( #PB_Event_SizeWindow , @_Event(), #Window1 )
  BindGadgetEvent(#Canvas1, @CanvasEvent())
  Repeat 
    Event=WaitWindowEvent()
  Until Event=#PB_Event_CloseWindow
EndIf
Webarion написал(а):

вполне можно было работать по отсечениям изменённых размеров (когда не стираются незатронутые области).

В предыдущих версиях так и было.

+1


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Избавиться от мерцания CanvasGadget, при ResizeGadget