Что нового

Как сделать что бы графика сделанная на GDIPlus не исчезала

sasha-ld

Новичок
Сообщения
48
Репутация
0
Здравствуйте!
Как можно сделать чтобы к примеру прямоугольник нарисованный через GDIPlus не исчезал при изменении размеров окна или сворачивании?
Стоит свернуть или изменить размер то все исчезает.
Код:
#include <GUIConstantsEx.au3>
#include <GDIPlus.au3>
$hGui = guicreate('', 300, 200, -1, -1, -1, -1)
GUISetState()
_GDIPlus_Startup ()
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $hBrush = _GDIPlus_LineBrushCreate(0, 0, 200, 0, 0xffff0000, 0xff00ff00, 1)
   _GDIPlus_GraphicsFillRect($hGraphics, 10, 10, 200, 100, $hBrush)


while 1
   $msg = GUIGetMsg()
   Switch $Msg
   Case $GUI_EVENT_CLOSE
      _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_Shutdown()
      Exit
   EndSwitch
WEnd

Или все время перерисовывать через цикл?
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Или все время перерисовывать через цикл?

Вместо этого вы можете создать Bitmap и установить его на GUICtrlCreatePic
Код:
;~ AutoIt Version: 3.3.14.5
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <GDIPlus.au3>
Local $hGUI = GUICreate("", 300, 200)

_GDIPlus_Startup()
Local $hBMP = _GDIPlus_BitmapCreateFromScan0(200, 100)
Local $hGraphics = _GDIPlus_ImageGetGraphicsContext($hBMP)
Local $hBrush = _GDIPlus_LineBrushCreate(0, 0, 200, 0, 0xffff0000, 0xff00ff00, 1)
_GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 200, 100, $hBrush)
Local $hHBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hBMP)
GUICtrlCreatePic("", 10, 10, 200, 100)
_WinAPI_DeleteObject(GUICtrlSendMsg(-1, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBMP))
_WinAPI_DeleteObject($hHBMP)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_BitmapDispose($hBMP)
_GDIPlus_Shutdown()

GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
 
Последнее редактирование:
  • Like
Реакции: Norm
Верх