solo_k 发表于 2015-1-6 17:17:44

请问如何清除GDI创建的文字和图形呀

_GDIPlus_GraphicsClear
使用这个函数不行,一用就全屏都成黑色了。

#include <GUIConstantsEx.au3>
#include <GDIPlus.au3>

_Main()

Func _Main()
        Local $hGUI, $hGraphic, $hBrush, $hFormat, $hFamily, $hFont, $tLayout
        Local $sString = "Hello world", $aInfo

        ; 创建 GUI
        $hGUI = GUICreate("GDI+", 400, 300)
        GUISetState()

        ; 描绘字符串
        _GDIPlus_Startup()
        $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
        $hBrush = _GDIPlus_BrushCreateSolid(0xFF00007F)
        $hFormat = _GDIPlus_StringFormatCreate()
        $hFamily = _GDIPlus_FontFamilyCreate("Arial")
        $hFont = _GDIPlus_FontCreate($hFamily, 12, 2)
        $tLayout = _GDIPlus_RectFCreate(140, 110, 0, 0)
        $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $sString, $hFont, $tLayout, $hFormat)
        _GDIPlus_GraphicsDrawStringEx($hGraphic, $sString, $hFont, $aInfo, $hFormat, $hBrush)

        ; 循环直到用户退出
        ;Do
        ;Until GUIGetMsg() = $GUI_EVENT_CLOSE
        MsgBox(0,1,_GDIPlus_GraphicsClear($hGraphic))
        ; 清理资源
        _GDIPlus_FontDispose($hFont)
        _GDIPlus_FontFamilyDispose($hFamily)
        _GDIPlus_StringFormatDispose($hFormat)
        _GDIPlus_BrushDispose($hBrush)
        _GDIPlus_GraphicsDispose($hGraphic)
        _GDIPlus_Shutdown()
       
        Do
        Until GUIGetMsg() = $GUI_EVENT_CLOSE

EndFunc   ;==>_Main

以上是示范代码,创建的文字没法清除呀!!!

solo_k 发表于 2015-1-6 17:25:38

{:face (229):}
木有人知道吗

zhouhaijin 发表于 2015-1-6 21:30:09

区域刷新。。。。。

solo_k 发表于 2015-1-6 21:46:06

回复 3# zhouhaijin


用哪个函数刷啊,求指点{:face (229):}

zhouhaijin 发表于 2015-1-6 22:11:03

#include <GUIConstantsEx.au3>
#include <GDIPlus.au3>
#include <WinAPIEx.au3>
#include <WindowsConstants.au3>


_Main()

Func _Main()
        Local $hGUI, $hGraphic, $hBrush, $hFormat, $hFamily, $hFont, $tLayout
        Local $sString = "Hello world", $aInfo

        ; 创建 GUI
        $hGUI = GUICreate("GDI+", 400, 300)
        GUISetState()

        ; 描绘字符串
        _GDIPlus_Startup()
        $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
        $hBrush = _GDIPlus_BrushCreateSolid(0xFF00007F)
        $hFormat = _GDIPlus_StringFormatCreate()
        $hFamily = _GDIPlus_FontFamilyCreate("Arial")
        $hFont = _GDIPlus_FontCreate($hFamily, 12, 2)
        $tLayout = _GDIPlus_RectFCreate(140, 110, 0, 0)
        $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $sString, $hFont, $tLayout, $hFormat)
        _GDIPlus_GraphicsDrawStringEx($hGraphic, $sString, $hFont, $aInfo, $hFormat, $hBrush)

        ; 循环直到用户退出
        Do
        Until GUIGetMsg() = $GUI_EVENT_CLOSE
        $myWinPos = WinGetPos($hGUI)
        $tPoint = _WinAPI_CreateRect($myWinPos, $myWinPos, $myWinPos + $myWinPos, $myWinPos + $myWinPos)
        _WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), $tPoint, 0, $RDW_INVALIDATE + $RDW_ALLCHILDREN)
        ; MsgBox(0,1,_GDIPlus_GraphicsClear($hGraphic))
        ; 清理资源
        _GDIPlus_FontDispose($hFont)
        _GDIPlus_FontFamilyDispose($hFamily)
        _GDIPlus_StringFormatDispose($hFormat)
        _GDIPlus_BrushDispose($hBrush)
        _GDIPlus_GraphicsDispose($hGraphic)
        _GDIPlus_Shutdown()

        Do
        Until GUIGetMsg() = $GUI_EVENT_CLOSE

EndFunc   ;==>_Main

solo_k 发表于 2015-1-7 11:54:32

回复 5# zhouhaijin
那样清理不掉的,按一次esc后,hello word还在

solo_k 发表于 2015-1-7 11:55:39

感觉太不科学了啊,GDI画出来的东西为啥不能清理

xfxecs 发表于 2015-1-7 12:54:17

虽然不懂 但期待有高手出来指点下

zhouhaijin 发表于 2015-1-11 16:00:52

回复 6# solo_k


    我测试可以清理掉

mshuking 发表于 2015-1-12 19:24:34

看下学习下

netegg 发表于 2015-1-12 20:26:32

#Include <GDIPlus.au3>
_GDIPlus_GraphicsReleaseDC
试试看,不行的话用这个再试试
#Include <GDIPlusEx.au3>
_GDIPlus_GraphicsFlush

deaph 发表于 2015-1-13 09:16:07

学习了,感谢分享!

wgzdaq 发表于 2015-1-13 16:06:34

学习了,感谢分享!
页: [1]
查看完整版本: 请问如何清除GDI创建的文字和图形呀