Hallo,
wie kann ich auf die GUI einen Icon + Schrift zeichnen? Im Moment sieht das so aus:
Bild1:
[Blockierte Grafik: http://deepsoftware.spacequadrat.de/Downloads/www.AutoIt.de/Bild2.jpg]
So sollte das aussehen:
Bild2:
[Blockierte Grafik: http://deepsoftware.spacequadrat.de/Downloads/www.AutoIt.de/Bild1.jpg]
Und noch eine Frage. Hier bei Bild2 sehen die Ränder folgendermaßen aus:
[Blockierte Grafik: http://deepsoftware.spacequadrat.de/Downloads/www.AutoIt.de/Bild3.jpg]
Wie bekommt man denn so was hin?
Ach ja: Ich erwarte von niemandem, dass er einen fertigen Script postet. Es reichen mir auch Links bzw. einzelne Befehle
.
Hier noch der Code:
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.0.0
Author: Burak Keskin ©
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
; Script Start - Add your code below here
[/autoit] [autoit][/autoit] [autoit]#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("WinTitleMatchMode", 4)
Local $TrayPos = WinGetPos("classname=Shell_TrayWnd")
Opt("WinTitleMatchMode", 1)
Global $Width = 227
Global $Height = 71
$Form1 = GUICreate("Form1", $Width, $Height, _
@DesktopWidth - $Width + 1 - 100, _
@DesktopHeight - $TrayPos[3] - $Height + 1 - 100, _
$WS_POPUP, BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE))
WinSetOnTop($Form1, "", 1)
_GDIPlus_Startup()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($Form1)
$Bitmap = _GDIPlus_BitmapCreateFromGraphics($Width, $Height, $hGraphic) ;create bitmap
$backbuffer = _GDIPlus_ImageGetGraphicsContext($Bitmap)
;~ _GDIPlus_GraphicsSetSmoothingMode($backbuffer, 2)
$hBrush = _GDIPlus_BrushCreateSolid(0xFFFFFF00)
_GDIPlus_GraphicsClear($backbuffer)
;Malt die Ränder auf die GUI
$hPen = _GDIPlus_PenCreate(0xFF767676)
_GDIPlus_GraphicsDrawLine($backbuffer, 0, 0, 227, 0, $hPen)
_GDIPlus_GraphicsDrawLine($backbuffer, 0, 69, 227, 69, $hPen)
_GDIPlus_GraphicsDrawLine($backbuffer, 0, 0, 0, 68, $hPen)
_GDIPlus_GraphicsDrawLine($backbuffer, 225, 0, 225, 68, $hPen)
;~ ;Malt die Hintergrundfarben
$Array = ColorGradient(0xFFFFFF, 0xE4E5F0, 68)
For $i = 1 To 68
$hPen = _GDIPlus_PenCreate("0xFF" & StringTrimLeft(Hex($Array[$i - 1]), 2))
_GDIPlus_GraphicsDrawLine($backbuffer, 1, $i, 224, $i, $hPen)
Next
;Malt die letzten Punkte
;~ $hPen = _GDIPlus_PenCreate(0xFF474747)
;~ _GDIPlus_GraphicsDrawLine($backbuffer, 0, 0, 1, 0, $hPen)
;~ _GDIPlus_GraphicsDrawLine($backbuffer, 0, 1, 0, 0, $hPen)
;Malt das Bild auf die GUI
_GDIPlus_GraphicsDrawImageRect($hGraphic, $Bitmap, 0, 0, $Width, $Height)
$hBitmap_GDI = _GDIPlus_BitmapCreateHBITMAPFromBitmap($Bitmap)
$capPic = GUICtrlCreatePic("", 0, 0, $Width, $Height)
_SetBitmapToCtrl($capPic, $hBitmap_GDI)
GuiRoundCorners($Form1, 0, 0, 2, 2)
[/autoit] [autoit][/autoit] [autoit]GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func Close()
;~ _GDIPlus_BrushDispose($hBrush)
;~ _GDIPlus_BitmapDispose($Bitmap)
;~ _GDIPlus_GraphicsDispose($backbuffer)
;~ _GDIPlus_GraphicsDispose($hGraphic)
;~ _GDIPlus_Shutdown()
Exit
EndFunc ;==>Close
Func ColorGradient($hInitialColor, $hFinalColor, $iReturnSize)
$hInitialColor = Hex($hInitialColor, 6)
$hFinalColor = Hex($hFinalColor, 6)
Local $iRed1 = Dec(StringLeft($hInitialColor, 2))
Local $iGreen1 = Dec(StringMid($hInitialColor, 3, 2))
Local $iBlue1 = Dec(StringMid($hInitialColor, 5, 2))
Local $iRed2 = Dec(StringLeft($hFinalColor, 2))
Local $iGreen2 = Dec(StringMid($hFinalColor, 3, 2))
Local $iBlue2 = Dec(StringMid($hFinalColor, 5, 2))
Local $iPlusRed = ($iRed2 - $iRed1) / ($iReturnSize - 1)
Local $iPlusBlue = ($iBlue2 - $iBlue1) / ($iReturnSize - 1)
Local $iPlusGreen = ($iGreen2 - $iGreen1) / ($iReturnSize - 1)
Dim $iColorArray[$iReturnSize]
For $i = 0 To $iReturnSize - 1
$iNowRed = Floor($iRed1 + ($iPlusRed * $i))
$iNowBlue = Floor($iBlue1 + ($iPlusBlue * $i))
$iNowGreen = Floor($iGreen1 + ($iPlusGreen * $i))
$iColorArray[$i] = Dec(Hex($iNowRed, 2) & Hex($iNowGreen, 2) & Hex($iNowBlue, 2))
Next
Return ($iColorArray)
EndFunc ;==>ColorGradient
Func GuiRoundCorners($h_win, $i_x1, $i_y1, $i_x3, $i_y3)
$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 ;==>GuiRoundCorners
Func _SetBitmapToCtrl($CtrlId, $hBitmap)
Local Const $STM_SETIMAGE = 0x0172
Local Const $IMAGE_BITMAP = 0
Local Const $SS_BITMAP = 0xE
Local Const $GWL_STYLE = -16
Local $hWnd = GUICtrlGetHandle($CtrlId)
If $hWnd = 0 Then Return SetError(1, 0, 0)
Local $oldStyle = DllCall("user32.dll", "long", "GetWindowLong", "hwnd", $hWnd, "int", $GWL_STYLE)
If @error Then Return SetError(2, 0, 0)
DllCall("user32.dll", "long", "SetWindowLong", "hwnd", $hWnd, "int", $GWL_STYLE, "long", BitOR($oldStyle[0], $SS_BITMAP))
If @error Then Return SetError(3, 0, 0)
Local $oldBmp = DllCall("user32.dll", "hwnd", "SendMessage", "hwnd", $hWnd, "int", $STM_SETIMAGE, "int", $IMAGE_BITMAP, "int", $hBitmap)
If @error Then Return SetError(4, 0, 0)
If $oldBmp[0] <> 0 Then DllCall("GDI32.dll", "int", "DeleteObject", "int", $oldBmp[0])
Return 1
EndFunc ;==>_SetBitmapToCtrl