torels Posted July 4, 2008 Posted July 4, 2008 Hi there how do I create a rounded corner rect in GDIPlus ? thanks in advance Some Projects:[list][*]ZIP UDF using no external files[*]iPod Music Transfer [*]iTunes UDF - fully integrate iTunes with au3[*]iTunes info (taskbar player hover)[*]Instant Run - run scripts without saving them before :)[*]Get Tube - YouTube Downloader[*]Lyric Finder 2 - Find Lyrics to any of your song[*]DeskBox - A Desktop Extension Tool[/list]indifference will ruin the world, but in the end... WHO CARES :P---------------http://torels.altervista.org
Andreik Posted July 4, 2008 Posted July 4, 2008 Hi there how do I create a rounded corner rect in GDIPlus ? thanks in advanceUsing gdi32.dll: Func _GuiRoundCorners($h_win, $i_x1, $i_y1, $i_x3, $i_y3) Dim $pos, $ret, $ret2 $pos = WinGetPos($h_win) $ret = DllCall("gdi32.dll", "long", "CreateRoundRectRgn", "long", $i_x1, "long", $i_y1, "long", $pos[2], "long", $pos[3], "long", $i_x3, "long", $i_y3) If $ret[0] Then $ret2 = DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $h_win, "long", $ret[0], "int", 1) If $ret2[0] Then Return 1 Else Return 0 EndIf Else Return 0 EndIf EndFunc
torels Posted July 4, 2008 Author Posted July 4, 2008 I need it as an image and not as a gui... thanks anyway muttley any other suggestions ? Some Projects:[list][*]ZIP UDF using no external files[*]iPod Music Transfer [*]iTunes UDF - fully integrate iTunes with au3[*]iTunes info (taskbar player hover)[*]Instant Run - run scripts without saving them before :)[*]Get Tube - YouTube Downloader[*]Lyric Finder 2 - Find Lyrics to any of your song[*]DeskBox - A Desktop Extension Tool[/list]indifference will ruin the world, but in the end... WHO CARES :P---------------http://torels.altervista.org
Malkey Posted July 4, 2008 Posted July 4, 2008 Hi there how do I create a rounded corner rect in GDIPlus ? thanks in advance Adding to/expanding Andreik example, we have :- expandcollapse popup#include <GDIPlus.au3> #include <GuiConstantsEx.au3> #include <WindowsConstants.au3> #include <misc.au3> #include <GuiMenu.au3> Global $iPath = "C:\Documents and Settings\My Documents\My Pictures\autoit9_wall_blue_800x600.jpg" Global $GuiSizeX = 400, $GuiSizeY = 400 Global $PicturePoints[4][2] = [[3,0],[0,0],[$GuiSizeX,0],[0,$GuiSizeY]] $hGui = GUICreate("MyGUI", $GuiSizeX, $GuiSizeX, -1, -1, -1, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST)) _GuiRoundCorners($hGui, 0, 0,$GuiSizeX, $GuiSizeX, 80, 80) GUISetState() _GDIPlus_Startup () $hWnd = _WinAPI_GetDC ($hGui) $hDC = _WinAPI_CreateCompatibleDC ($hWnd) $hBitmap = _WinAPI_CreateCompatibleBitmap ($hWnd, $GuiSizeX, $GuiSizeY) _WinAPI_SelectObject ($hDC, $hBitmap) $hGraphic = _GDIPlus_GraphicsCreateFromHDC ($hDC) $hImage = _GDIPlus_ImageLoadFromFile ($iPath) _GDIPlus_DrawImagePoints($hGraphic, $hImage, $PicturePoints[1][0], $PicturePoints[1][1], _ $PicturePoints[2][0], $PicturePoints[2][1], $PicturePoints[3][0], $PicturePoints[3][1]) $tSize = DllStructCreate($tagSIZE) $pSize = DllStructGetPtr($tSize) DllStructSetData($tSize, "X", $GuiSizeX) DllStructSetData($tSize, "Y", $GuiSizeY) $tSource = DllStructCreate($tagPOINT) $pSource = DllStructGetPtr($tSource) $tBlend = DllStructCreate($tagBLENDFUNCTION) $pBlend = DllStructGetPtr($tBlend) DllStructSetData($tBlend, "Alpha", 254) DllStructSetData($tBlend, "Format", 1) _WinAPI_UpdateLayeredWindow ($hGui, $hWnd, 0, $pSize, $hDC, $pSource, 0, $pBlend, $ULW_ALPHA) _GDIPlus_GraphicsDispose ($hGraphic) _WinAPI_ReleaseDC ($hGui, $hWnd) _WinAPI_DeleteObject ($hBitmap) _WinAPI_DeleteDC ($hDC) _GDIPlus_ShutDown () While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case Else ;;; EndSelect WEnd Exit ;Ref http://www.autoitscript.com/forum/index.php?s=&showtopic=27269&view=findpost&p=542801 ;From CreateRoundRectRgn() Author(s): Larry ; Parameter(s): handle of GUI, left, top, width, height, horizontal rounding, vertical rounding Func _GuiRoundCorners($h_win, $i_x1, $i_y1, $iWidth, $iHeight, $i_x3, $i_y3) Dim $ret, $ret2 $ret = DllCall("gdi32.dll", "long", "CreateRoundRectRgn", "long", $i_x1, "long", $i_y1, "long", $iWidth, _ "long", $iHeight, "long", $i_x3, "long", $i_y3) If $ret[0]Then $ret2 = DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $h_win, "long", $ret[0], "int", 1) If $ret2[0]Then Return 1 Else Return 0 EndIf Else Return 0 EndIf EndFunc ;==>_GuiRoundCorners Note: Add your own Image file path and name @ Global $iPath = " " in script.
GaryFrost Posted July 4, 2008 Posted July 4, 2008 Adding to/expanding Andreik example, we have :- expandcollapse popup#include <GDIPlus.au3> #include <GuiConstantsEx.au3> #include <WindowsConstants.au3> #include <misc.au3> #include <GuiMenu.au3> Global $iPath = "C:\Documents and Settings\My Documents\My Pictures\autoit9_wall_blue_800x600.jpg" Global $GuiSizeX = 400, $GuiSizeY = 400 Global $PicturePoints[4][2] = [[3,0],[0,0],[$GuiSizeX,0],[0,$GuiSizeY]] $hGui = GUICreate("MyGUI", $GuiSizeX, $GuiSizeX, -1, -1, -1, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST)) _GuiRoundCorners($hGui, 0, 0,$GuiSizeX, $GuiSizeX, 80, 80) GUISetState() _GDIPlus_Startup () $hWnd = _WinAPI_GetDC ($hGui) $hDC = _WinAPI_CreateCompatibleDC ($hWnd) $hBitmap = _WinAPI_CreateCompatibleBitmap ($hWnd, $GuiSizeX, $GuiSizeY) _WinAPI_SelectObject ($hDC, $hBitmap) $hGraphic = _GDIPlus_GraphicsCreateFromHDC ($hDC) $hImage = _GDIPlus_ImageLoadFromFile ($iPath) _GDIPlus_DrawImagePoints($hGraphic, $hImage, $PicturePoints[1][0], $PicturePoints[1][1], _ $PicturePoints[2][0], $PicturePoints[2][1], $PicturePoints[3][0], $PicturePoints[3][1]) $tSize = DllStructCreate($tagSIZE) $pSize = DllStructGetPtr($tSize) DllStructSetData($tSize, "X", $GuiSizeX) DllStructSetData($tSize, "Y", $GuiSizeY) $tSource = DllStructCreate($tagPOINT) $pSource = DllStructGetPtr($tSource) $tBlend = DllStructCreate($tagBLENDFUNCTION) $pBlend = DllStructGetPtr($tBlend) DllStructSetData($tBlend, "Alpha", 254) DllStructSetData($tBlend, "Format", 1) _WinAPI_UpdateLayeredWindow ($hGui, $hWnd, 0, $pSize, $hDC, $pSource, 0, $pBlend, $ULW_ALPHA) _GDIPlus_GraphicsDispose ($hGraphic) _WinAPI_ReleaseDC ($hGui, $hWnd) _WinAPI_DeleteObject ($hBitmap) _WinAPI_DeleteDC ($hDC) _GDIPlus_ShutDown () While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case Else ;;; EndSelect WEnd Exit ;Ref http://www.autoitscript.com/forum/index.php?s=&showtopic=27269&view=findpost&p=542801 ;From CreateRoundRectRgn() Author(s): Larry ; Parameter(s): handle of GUI, left, top, width, height, horizontal rounding, vertical rounding Func _GuiRoundCorners($h_win, $i_x1, $i_y1, $iWidth, $iHeight, $i_x3, $i_y3) Dim $ret, $ret2 $ret = DllCall("gdi32.dll", "long", "CreateRoundRectRgn", "long", $i_x1, "long", $i_y1, "long", $iWidth, _ "long", $iHeight, "long", $i_x3, "long", $i_y3) If $ret[0]Then $ret2 = DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $h_win, "long", $ret[0], "int", 1) If $ret2[0]Then Return 1 Else Return 0 EndIf Else Return 0 EndIf EndFunc ;==>_GuiRoundCorners Note: Add your own Image file path and name @ Global $iPath = " " in script. http://www.autoitscript.com/forum/index.ph...GuiRoundCorners SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now