Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Как сохранить фон при перерисовки положения линии созданной с помощью GDI

Ответить
Настройки темы
Как сохранить фон при перерисовки положения линии созданной с помощью GDI

Пользователь


Сообщения: 143
Благодарности: 24

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
#include <GuiConstantsEx.au3>
#include <GDIPlus.au3>
#include <Misc.au3>
Global $hGUI, $hGraphics, $hPen, $hBmp, $hBmpGraphics, $line_y = 100, $line_x = 100

$dll = DllOpen("user32.dll")

_Main()

DllClose($dll)

Func _Main()


    $hGUI = GUICreate("GDI+", 300, 300)
    $oIE = ObjCreate("Shell.Explorer.2")
    $GUIActiveX = GUICtrlCreateObj ($oIE, 0, 0, 400, 300)
    $oIE.navigate('')
    GUISetState()

    _GDIPlus_Startup ()
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND ($hGUI)
    $hBmp = _GDIPlus_BitmapCreateFromGraphics(400, 300, $hGraphics)
    $hBmpGraphics = _GDIPlus_ImageGetGraphicsContext($hBmp)
    $hPen = _GDIPlus_PenCreate (0xFFFF0000)

    _GDIPlus_GraphicsDrawLine ($hGraphics, 0, $line_y, 300, $line_y, $hPen)
    _GDIPlus_GraphicsDrawLine ($hGraphics, $line_x, 0, $line_x, 300, $hPen)
    _GDIPlus_GraphicsDrawString ($hGraphics, '['&$line_x&' ; '&$line_y&']', $line_x-55, $line_y-15, 'Arial', 8)

    Do
        If _IsPressed("26", $dll) Then line_move($line_x, $line_y - 1)

        If _IsPressed("28", $dll) Then line_move($line_x, $line_y + 1)

        If _IsPressed("25", $dll) Then line_move($line_x - 1, $line_y)

        If _IsPressed("27", $dll) Then line_move($line_x + 1, $line_y)

    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    _GDIPlus_PenDispose ($hPen)
    _GDIPlus_GraphicsDispose ($hGraphics)
    _GDIPlus_Shutdown ()

EndFunc   ;==>_Main

Func line_move($x, $y)
    $line_x = $x
    $line_y = $y
    _GDIPlus_GraphicsClear($hBmpGraphics, 0xFFF0F0F0)
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBmp, 0, 0)
    _GDIPlus_GraphicsDrawLine ($hGraphics, $x, 0, $x, 300, $hPen)
    _GDIPlus_GraphicsDrawLine ($hGraphics, 0, $y, 300, $y, $hPen)
    _GDIPlus_GraphicsDrawString ($hGraphics, '['&$line_x&' ; '&$line_y&']', $line_x-55, $line_y-15, 'Arial', 8)
EndFunc
Управлять перекрестием, стрелочками влево,вправо, вверх, вниз.
Тут при перерисовки линии фон перерисовывается, если закоментировать _GDIPlus_GraphicsClear($hBmpGraphics, 0xFFF0F0F0) то получится заливка. Как сделать ток чтобы при новом положении линии фон не изменялся?

Отправлено: 18:00, 23-06-2010

 


Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Как сохранить фон при перерисовки положения линии созданной с помощью GDI

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] WinApi, Как сохранить GDI регион на жесткий диск? Diamond AutoIt 7 10-09-2009 12:37
Как сохранить настройки dial-up при переустановке XP mutator Microsoft Windows 2000/XP 4 20-02-2008 10:09
как сохранить настройки пользователей при их включении в домен? SmerchLA Microsoft Windows NT/2000/2003 1 28-05-2007 12:28
Как почистить и сохранить данные при продаже ПК? bimbus Хочу все знать 5 08-06-2005 09:22
Как соединить 2 компа с помощью тел. линии Evgenii Хочу все знать 3 02-02-2004 08:09




 
Переход