请问如何清除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
以上是示范代码,创建的文字没法清除呀!!! {:face (229):}
木有人知道吗 区域刷新。。。。。 回复 3# zhouhaijin
用哪个函数刷啊,求指点{:face (229):} #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 回复 5# zhouhaijin
那样清理不掉的,按一次esc后,hello word还在 感觉太不科学了啊,GDI画出来的东西为啥不能清理 虽然不懂 但期待有高手出来指点下 回复 6# solo_k
我测试可以清理掉 看下学习下 #Include <GDIPlus.au3>
_GDIPlus_GraphicsReleaseDC
试试看,不行的话用这个再试试
#Include <GDIPlusEx.au3>
_GDIPlus_GraphicsFlush 学习了,感谢分享! 学习了,感谢分享!
页:
[1]