a781805288 发表于 2010-5-21 14:47:06

帮我看下 PNG边缘有毛边怎么办啊


#include <GuiConstantsEX.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>

Global $hGraphic
Global $y
Global $x
Global $a
GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")

_GDIPlus_StartUp ()
$hGui = GUICreate("show png", 350, 300,193, 125, $WS_POPUP, $WS_EX_LAYERED)
$Button = GUICtrlCreateButton("view", 270, 270, 75, 21)
GUISetState()
GUISetBkColor(0xABCDEF)
_API_SetLayeredWindowAttributes($hGui, 0xABCDEF)

$x=50
$y=50
$a=1

While $a<10


$OpenFile = "d:\png\"&$a&".png"
$hImage = _GDIPlus_ImageLoadFromFile ($OpenFile)
$hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hGui)
_WinAPI_InvalidateRect(WinGetHandle($hGui))
Sleep(1000)
$a=$a+1

WEnd



Func MY_WM_PAINT($hWnd, $msg, $wParam, $lParam)
   _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW)
   If $hGraphic <> "" Then_GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage, 0, 0, $x, $y)
   _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_VALIDATE)
   Return $GUI_RUNDEFMSG
EndFunc   ;==>MY_WM_PAINT
Func _API_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $isColorRef = False)
        Local Const $AC_SRC_ALPHA = 1
        Local Const $ULW_ALPHA = 2
        Local Const $LWA_ALPHA = 0x2
        Local Const $LWA_COLORKEY = 0x1
        If Not $isColorRef Then
                $i_transcolor = Hex(String($i_transcolor), 6)
                $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
        EndIf
        Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $LWA_COLORKEY + $LWA_ALPHA)
        Select
                Case @error
                        Return SetError(@error, 0, 0)
                Case $Ret = 0
                        Return SetError(4, 0, 0)
                Case Else
                        Return 1
        EndSelect
EndFunc   ;==>_API_SetLayeredWindowAttributes
页: [1]
查看完整版本: 帮我看下 PNG边缘有毛边怎么办啊