Schaue mal hier rein: http://www.autoitscript.com/forum/topic/10…gdi-line-graphs
Gruß,
UEZ
Schaue mal hier rein: http://www.autoitscript.com/forum/topic/10…gdi-line-graphs
Gruß,
UEZ
Klar kannst du in Hex rechnen:
[autoit]
$ADDR_Base = 0x123ABC00
$ADDR_Offset = 0x2BC12
$A = $ADDR_Base + $ADDR_Offset
msgbox (0,"$A","0x"&Hex($A,8)) ; -> 123D7812
$B = $A + 0x54
msgbox (0,"$B","0x"&Hex($B,8)) ; -> 00000000
Hex() dient nur zum Anzeigen der Hex Werte!
Gruß,
UEZ
Ich schließe mich auch an und wünsche dir alles Gute zum Geburtstag!
Gruß,
UEZ
Standard Control sollte flackern und Graphic Control nicht!
Der Rest ist Geschmacksache!
Greenhorn: leider hilft $WS_EX_COMPOSITED nicht...
Gruß,
UEZ
Hier noch eine Version:
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
_GDIPlus_Startup()
$hGUI = GUICreate("Test", 300, 150)
$iLabel = GUICtrlCreateLabel("Standard Control: 0000000000", 10, 10, 290, 50)
GUICtrlSetFont(-1, 11, 400, 0, "Arial")
$iPic = GUICtrlCreatePic("", 10, 80, 250, 50)
GUISetState()
_GDIPlus_DrwTxt2Ctrl($hGUI, $iPic, "Graphic Control: 0000000000")
Do
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
GUIDelete()
_GDIPlus_Shutdown()
Exit
EndSwitch
GUICtrlSetData($iLabel, "Standard Control: " & Random(1111111111, 99999999999, 1))
_GDIPlus_DrwTxt2Ctrl($hGUI, $iPic, "Graphic Control: " & Random(1111111111, 99999999999, 1))
Until False
Func _GDIPlus_DrwTxt2Ctrl($hWnd, $iCtrl, $sText, $iFontSize = 11, $sFont = "Arial", $iFontColor = 0xFF000000, $iBgColor = 0xFFF0F0F0, $bAntiAlias = False) ;coded by UEZ build 2013-01-17
Local $hCtrl = GUICtrlGetHandle($iCtrl)
Local $aSize = ControlGetPos($hWnd, "", $iCtrl)
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $aSize[2], "int", $aSize[3], "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
Local $hBitmap = $aResult[6]
Local $hCtxt = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsClear($hCtxt, $iBgColor)
If $bAntiAlias Then
_GDIPlus_GraphicsSetSmoothingMode($hCtxt, 2)
DllCall($ghGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $hCtxt, "int", 4)
EndIf
Local $hBrush = _GDIPlus_BrushCreateSolid($iFontColor)
Local $hFormat = _GDIPlus_StringFormatCreate()
Local $hFamily = _GDIPlus_FontFamilyCreate($sFont)
Local $hFont = _GDIPlus_FontCreate($hFamily, $iFontSize)
Local $tLayout = _GDIPlus_RectFCreate(0, 0, $aSize[2], $aSize[3])
_GDIPlus_GraphicsDrawStringEx($hCtxt, $sText, $hFont, $tLayout, $hFormat, $hBrush)
_GDIPlus_FontDispose($hFont)
_GDIPlus_FontFamilyDispose($hFamily)
_GDIPlus_StringFormatDispose($hFormat)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_GraphicsDispose($hCtxt)
Local $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
_GDIPlus_BitmapDispose($hBitmap)
Local $hB = GUICtrlSendMsg($iCtrl, 0x0172, 0, $hHBitmap)
If $hB Then _WinAPI_DeleteObject($hB)
_WinAPI_DeleteObject($hHBitmap)
Return 1
EndFunc
Gruß,
UEZ
Danke für dem ASM Kurs!
Gruß,
UEZ
hmm, die Verwendung von Windows-Standard-Funktionen funktioniert nicht bei Win8? Btw. was funktioniert nicht bzw. was ist der Fehler?
Bestätigt mein bisheriges Vorgehen, immer nur jede 2. BS-Version zu verwenden.
Auf der physikalischen Kiste sehe ich nur ein graues Bild, sonst nichts. In der VM funzt allerdings der Effekt; komisch!
Scheint vielleicht an meiner Nvidia Gfx Karte zu liegen...
Im Großen und Ganzen laufen alle die von mir getesteten Skripte, bis auf einige Kleinigkeiten. Win8 ist sehr gewohnheitsbedürftig und hat micht nicht vom Hocker gerissen, aber schnell im Booten.
Mit der Zeit wird sich herausstellen, ob Win8 was taugt oder nicht.
Gruß,
UEZ
Ich liebe den Aero Effekt. Leider gibt's den nicht mehr unter Win8! ![]()
Apropos Win8: das Skript läuft nicht unter Win8 auf meiner physikalischen Kiste!
Gruß,
UEZ
Aha, jetzt sieht man den Effekt! ![]()
Alternativ kann man auch Aero abschalten:
#include <ScreenCapture.au3>;....................
Global Const $hDwmApiDll = DllOpen("dwmapi.dll")
Global $sChkAero = DllStructCreate("int;")
DllCall($hDwmApiDll, "int", "DwmIsCompositionEnabled", "ptr", DllStructGetPtr($sChkAero))
Global $aero = DllStructGetData($sChkAero, 1)
If $aero Then DllCall($hDwmApiDll, "int", "DwmEnableComposition", "uint", False)
Sleep(500)
Local $1=Opt("GUIOnEventMode",1),$c=b(0),$a= _;..
@DesktopWidth,$b=@DesktopHeight,$3= _;...........
_ScreenCapture_Capture("m.bmp",0,0,-1,-1, _;.....
False),$d = GUICreate(0,$a,$b,0,0,0x80000000), _;
$4=GUISetOnEvent(-3,"a"),$5=GUICtrlCreatePic( _;.
"m.bmp",0,0,$a,$b),$e=b($d),$6=GUISetState();....
Local $f,$g,$h,$i,$7
While 1;.........................................
$f=($a-128)*random(0,1)
$g=($b-128)*random(0,1)
$h=2*random(0,1)-1
$i=2*random(0,1) -1
$7=DllCall("gdi32.dll","bool","BitBlt","handle",$e,"int",$f+$h,"int",$g+$i,"int",128,"int",128,"handle",$c,"int",$f,"int",$g,"dword",0x00CC0020);....................................
;~ $7 = DllCall("gdi32.dll","bool","BitBlt","handle",$e,"int",int($f + $h), "int",int($g + $i),"int",128, "int",128,"handle",$e,"int",int($f),"int",int($g), "dword", 0x00CC0020) ;Andy's Variante
WEnd;............................................
Local $8=DllCall("user32.dll","int","ReleaseDC" _
,"hwnd",$d,"handle",$e),$9=DllCall("user32.dll" _
,"int","ReleaseDC","hwnd",0,"handle",$c);........
Func a();........................................
If $aero Then DllCall($hDwmApiDll, "int", "DwmEnableComposition", "uint", True)
Exit;............................................
EndFunc;.........................................
Func b($j);......................................
$k=DllCall("user32.dll","handle","GetDC","hwnd" _
,$j);............................................
Return $k[0];....................................
EndFunc;.........................................
Gruß,
UEZ
Bin kein RegEx Guru, aber hier eine Möglichkeit:
[autoit]
$sDatei1 = "Test123ABC134_1.jpg"
$sDatei2 = "123_456_789.jpg"
ConsoleWrite(StringRegExp($sDatei1, "(?i)[^_\d\.jpg]", 0) & @LF)
ConsoleWrite(StringRegExp($sDatei2, "(?i)[^_\d\.jpg]", 0) & @LF)
Gruß,
UEZ
D.h., wenn im Namen kein Buchstabe vorkommt, dann soll die Datei in den entsprechenden Ordner verschoben werden, ansonsten in einen anderen Ordner.
Ferner kommen die Buchstaben nur am Anfang vor.
Richtig?
Gruß,
UEZ
Very impressiv Andy, meine Eukalyptus ![]()
Das hast du also zu Weihnachten gemacht! ![]()
Starkes Stück arbeit, vor allem der ASM Teil ist der Hammer! Cool wäre noch eine Art Animation...
Ich habe da auch eine Vision als Intro für meine Watermark App, aber ich habe keine Ahnung, ob ich die Vision in Bits und Bytes bringen kann... ![]()
LG,
UEZ
Diese Version habe ich benutzt: http://users.telenet.be/ws36637/download/quricol.zip
Mit diesem Code funzt es unter X64:
[autoit]
#AutoIt3Wrapper_UseX64=y
Global $iMargin = 4, $iPixelSize = 2
$sPath = @ScriptDir & "\"
$_sImageName = "Test"
$_sText = "Test"
$a = DllCall("quricol64.dll", "none", "GenerateBMPW", "wstr", $sPath & $_sImageName & ".bmp", "str", $_sText, "int", $iMargin, "int", $iPixelSize) ; == funktioniert
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $a = ' & $a & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
; == TErrorCorretion
Global Enum $QR_ECLEVEL_L = 0, $QR_ECLEVEL_M, $QR_ECLEVEL_Q, $QR_ECLEVEL_H
$b = DllCall("quricol64.dll", "none", "GenerateBMPW", "wstr", $sPath & $_sImageName & "2.bmp", "str", $_sText, "int", $iMargin, "int", $iPixelSize, "int", $QR_ECLEVEL_Q) ; == funktioniert nicht
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $b = ' & $b & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
;~ DllCall("quricol32.dll", "none", "DestroyBuffer", "ptr", $iAddress) ; <== CRASH!!!
[/autoit]Es werden 2 BMPs erstellt, die unterschiedlich sind.
Keine Ahnung, wann man DestroyBuffer benutzen muss. Vielleicht ist dieser Link nützlich: http://delphi32.blogspot.de/2011/11/qurico…or-library.html
Gruß,
UEZ
Probiere es mal damit:
#AutoIt3Wrapper_OutFile=c:\windows\system32\Test.scr
#AutoIt3Wrapper_UseX64=n
#include <Date.au3>
#include <GDIPlus.au3>
#include <Misc.au3>
#include <Timers.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
_Singleton(@AutoItExe)
; -Authors: name22 (http://www.autoit.de), Andy (http://www.autoit.de), Facemix (http://www.autoit.de)
[/autoit] [autoit][/autoit] [autoit]Global $idle_o, $idle_n, $parent_pid, $aChildProcess, $iFlakeCount, $iMaxRadius
[/autoit] [autoit][/autoit] [autoit]#region WINDOWSTOOL
[/autoit] [autoit][/autoit] [autoit]Global $iCount = 10, $iExplosion = 100, $iExplosionGround = 1, $iRadius = 600, $iBack = 0x09000000, $iSleep = 5
[/autoit] [autoit][/autoit] [autoit]Global Const $app_name = "GDI+ Countdown-Screensaver by (C) Clemens 2012"
Global Const $ver = "v1.0 build 2012-11-24"
Global $hGUI, $iW, $iH, $GUI_H, $GUI_W, $GUI_X, $GUI_Y, $r, $show_FPS = 0
Global $maxStars = 150, $size = 1
Global $parent_pid, $aChildProcess
Global Const $hFullScreen = WinGetHandle("Program Manager")
Global Const $aFullScreen = WinGetPos($hFullScreen)
Global $main_screen_x = Abs($aFullScreen[0])
Global Const $ini_file = @ScriptDir & "\GDI+ Countdown-Screensaver.ini"
Global $cmdparam = "/s"
If $CmdLine[0] Then $cmdparam = StringLeft($CmdLine[1], 2)
Switch $cmdparam
Case "/s"
$iW = @DesktopWidth
$iH = @DesktopHeight
$GUI_X = $aFullScreen[0]
$GUI_Y = $aFullScreen[1]
$GUI_W = $aFullScreen[2]
$GUI_H = $aFullScreen[3]
$hGUI = GUICreate($app_name, $GUI_W, $GUI_H, $GUI_X, $GUI_Y, $WS_POPUP, $WS_EX_TOPMOST)
$iFlakeCount = 500
$iMaxRadius = 3
Case "/c"
Opt("GUIOnEventMode", 0)
MsgBox(0,"Einstellungen","Die Einstellungen sind derzeit noch nicht vorhanden! - made by (C) Clemens")
Exit
Case "/p"
$iFlakeCount = 50
$iMaxRadius = 2
$iW = 152
$iH = 112
$GUI_X = 0
$GUI_Y = 0
$GUI_W = $iW
$GUI_H = $iH
$main_screen_x = 0
$show_FPS = False
;$maxStars = 30
$size = 1
$hGUI = GUICreate("GDI+ Countdown-Screensaver by (C) Clemens", $GUI_W, $GUI_H, $GUI_X, $GUI_Y, $WS_POPUP)
_WinAPI_SetParent($hGUI, $CmdLine[2])
$parent_pid = _WinAPI_GetParentProcess(@AutoItPID)
EndSwitch
#endregion WINDOWSTOOL
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[/autoit] [autoit][/autoit] [autoit]#region BILDSCHIRMSCHOHNER
Global Const $nTau = ACos(-1) * 2
Global $vNTdll = DllOpen("ntdll.dll")
Global $tPrecSleep = DllStructCreate("int64 time;")
Global $pPrecSleep = DllStructGetPtr($tPrecSleep)
#region SETTINGS
[/autoit] [autoit][/autoit] [autoit]Global $iWidth = $iW
Global $iHeight = $iH
Global $nFPS = 25
Global $nStepSpeed = 1
[/autoit] [autoit][/autoit] [autoit]#region COLORS
Global $iARGB_BG = 0xFF505050
Global $iARGB_Snow = 0xFFFFFFFF
Global $iARGB_TextFill = 0xFF0000FF
Global $iARGB_TextFill2 = 0xFFFF0000
Global $iARGB_TextFill3 = 0xFF0000FF
Global $iARGB_TextFill4 = 0xFF353535
Global $iARGB_TextBorder = 0xFFA00000
#endregion COLORS
#region SNOWFLAKES
Global $iMinFallingSpeed = 20, $iMaxFallingSpeed = 50
Global $iMinOscillations = 2, $iMaxOscillations = 5
Global $iMinOscillationDist = 10, $iMaxOscillationDist = 50
Global $iMinRadius = 1
#endregion SNOWFLAKES
#region SNOWBLAST
Global $iBlastRadius = 200
Global $iBlastAccell = 300
Global $nAirFriction = 0.95
#endregion SNOWBLAST
#endregion SETTINGS
[/autoit] [autoit][/autoit] [autoit]#region Global Variables
Global $aFlakes[$iFlakeCount + 1][8] = [[$iFlakeCount]]
Global $hDC_Window, $hDC_Bitmap, $hBitmap, $hGraphics, $hOldObj, $hBrush_Snow, $hBrush_TextFill, $hPen_Border
Global $hMatrix, $tLayout, $hFormat, $hFamily, $hPath, $nScale, $nStep = 0, $iM, $iS, $iD, $sText, $sTextOld
Global $nSleepTime = 1000 / $nFPS
#endregion Global Variables
#region Generate Snow
For $i = 1 To $aFlakes[0][0]
$aFlakes[$i][0] = Random(10, $iWidth - 10, 1)
$aFlakes[$i][1] = Random(-$iHeight, 0, 1)
$aFlakes[$i][2] = 0
$aFlakes[$i][3] = 0
$aFlakes[$i][4] = Random($iMinRadius, $iMaxRadius, 1)
$aFlakes[$i][5] = Random($iMinFallingSpeed, $iMaxFallingSpeed)
$aFlakes[$i][6] = Random($iMinOscillations, $iMaxOscillations, 1)
$aFlakes[$i][7] = Random($iMinOscillationDist, $iMaxOscillationDist) * (-1) ^ Random(1, 2, 1)
Next
#endregion Generate Snow
GUISetState()
[/autoit] [autoit][/autoit] [autoit]#region Initialize GFX Resources
$hDC_Window = _WinAPI_GetDC($hGUI)
$hDC_Bitmap = _WinAPI_CreateCompatibleDC($hDC_Window)
$hBitmap = _WinAPI_CreateCompatibleBitmap($hDC_Window, $iWidth, $iHeight)
$hOldObj = _WinAPI_SelectObject($hDC_Bitmap, $hBitmap)
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphics = _GDIPlus_GraphicsCreateFromHDC($hDC_Bitmap)
_GDIPlus_GraphicsSetClipRect($hGraphics, 0, 0, $iWidth, $iHeight)
_GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2)
$hBrush_Snow = _GDIPlus_BrushCreateSolid($iARGB_Snow)
$hBrush_TextFill = _GDIPlus_BrushCreateSolid($iARGB_TextFill)
$hPen_Border = _GDIPlus_PenCreate($iARGB_TextBorder, 3)
DllCall($ghGDIPDll, "uint", "GdipSetPenLineJoin", "hwnd", $hPen_Border, "int", 2)
$hMatrix = _GDIPlus_MatrixCreate()
$tLayout = _GDIPlus_RectFCreate(0, 0, 0, 0)
$hFormat = _GDIPlus_StringFormatCreate()
$hFamily = _GDIPlus_FontFamilyCreate("Arial")
$hPath = _CreatePath("88 - 88:88:88")
_GDIPlus_GraphicsClear($hGraphics, $iARGB_BG)
_Redraw()
#endregion Initialize GFX Resources
#region Register Events
OnAutoItExitRegister("_Shutdown")
GUIRegisterMsg($WM_PAINT, "_Redraw")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Close")
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "_Click")
AdlibRegister("_UpdateTime", 100)
#endregion Register Events
$nT_Sleep = TimerInit() + $nSleepTime
[/autoit] [autoit][/autoit] [autoit]While True
If $cmdparam = "/s" Then
GUISetCursor(16, 1, $hGUI)
$idle_n = _Timer_GetIdleTime()
If $idle_n < $idle_o Then _Close()
$idle_o = $idle_n
Else
If Not BitAND(WinGetState($hGUI), 2) Then _Close()
$aChildProcess = _WinAPI_EnumChildProcess($parent_pid)
If $aChildProcess[0][0] > 1 Then _Close()
EndIf
DllStructSetData($tPrecSleep, "time", -10000 * ($nSleepTime - TimerDiff($nT_Sleep)))
DllCall($vNTdll, "dword", "ZwDelayExecution", "int", 0, "ptr", $pPrecSleep)
$nFrameTime = TimerDiff($nT_Sleep)
$nT_Sleep = TimerInit()
$nFPS_Cur = 1000 / $nFrameTime
[/autoit] [autoit][/autoit] [autoit]$nStep += $nStepSpeed / $nFPS_Cur
$nScale = Abs(Sin($nStep))
_GDIPlus_GraphicsClear($hGraphics, $iARGB_BG)
[/autoit] [autoit][/autoit] [autoit]DllCall($ghGDIPDll, "uint", "GdipTranslateWorldTransform", "hwnd", $hGraphics, "float", -$iWidth / 2, "float", -$iHeight / 2, "int", False)
DllCall($ghGDIPDll, "uint", "GdipScaleWorldTransform", "hwnd", $hGraphics, "float", $nScale, "float", $nScale, "int", True)
DllCall($ghGDIPDll, "uint", "GdipTranslateWorldTransform", "hwnd", $hGraphics, "float", $iWidth / 2, "float", $iHeight / 2, "int", True)
DllCall($ghGDIPDll, "uint", "GdipDrawPath", "hwnd", $hGraphics, "hwnd", $hPen_Border, "hwnd", $hPath)
DllCall($ghGDIPDll, "uint", "GdipFillPath", "hwnd", $hGraphics, "hwnd", $hBrush_TextFill, "hwnd", $hPath)
DllCall($ghGDIPDll, "uint", "GdipResetWorldTransform", "hwnd", $hGraphics)
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To $aFlakes[0][0]
$aFlakes[$i][1] += ($aFlakes[$i][5] + $aFlakes[$i][3]) / $nFPS_Cur
$aFlakes[$i][0] += (Sin($aFlakes[$i][1] / $iHeight * $nTau * $aFlakes[$i][6]) * $aFlakes[$i][7] + $aFlakes[$i][2]) / $nFPS_Cur
$aFlakes[$i][2] *= $nAirFriction
$aFlakes[$i][3] *= $nAirFriction
If $aFlakes[$i][1] > $iHeight Or $aFlakes[$i][0] < -20 Or $aFlakes[$i][0] > $iWidth + 20 Then
$aFlakes[$i][0] = Random(10, $iWidth - 10, 1)
$aFlakes[$i][1] = Random(-$iHeight, 0, 1)
$aFlakes[$i][2] = 0
$aFlakes[$i][3] = 0
$aFlakes[$i][4] = Random($iMinRadius, $iMaxRadius, 1)
$aFlakes[$i][5] = Random($iMinFallingSpeed, $iMaxFallingSpeed)
$aFlakes[$i][6] = Random($iMinOscillations, $iMaxOscillations, 1)
$aFlakes[$i][7] = Random($iMinOscillationDist, $iMaxOscillationDist)
EndIf
_GDIPlus_GraphicsFillEllipse($hGraphics, $aFlakes[$i][0] - $aFlakes[$i][4] / 2, $aFlakes[$i][1] - $aFlakes[$i][4] / 2, $aFlakes[$i][4] * 2, $aFlakes[$i][4] * 2, $hBrush_Snow)
Next
_WinAPI_BitBlt($hDC_Window, 0, 0, $iWidth, $iHeight, $hDC_Bitmap, 0, 0, $SRCCOPY)
WEnd
Func _UpdateTime()
_TicksToTime(_DateDiff('s', _NowCalc(), @YEAR + 1 & "/01/01 00:00:00") * 1000, $iH, $iM, $iS)
If $iH > 23 Then
$iD = StringFormat("%02i", $iH / 24); volle Tage
$iH = $iH - ($iD * 24); volle Tage abziehen
Else
$iD = 0
EndIf
If $sText = "00 - 00:00:00" Then
AdlibUnRegister("_UpdateTime")
Feuerwerk() ; Funktion Feuerwerk soll dann ausgeführt werden
Else
$sText = StringFormat("%02i - %02i:%02i:%02i", $iD, $iH, $iM, $iS)
EndIf
If $sText <> $sTextOld Then
$sTextOld = $sText
DllCall($ghGDIPDll, "uint", "GdipResetPath", "hwnd", $hPath)
DllCall($ghGDIPDll, "uint", "GdipAddPathString", "hwnd", $hPath, "wstr", $sText, "int", -1, "hwnd", $hFamily, "int", 1, "float", 100, "ptr", DllStructGetPtr($tLayout), "hwnd", $hFormat)
DllCall($ghGDIPDll, "uint", "GdipTransformPath", "hwnd", $hPath, "hwnd", $hMatrix)
EndIf
EndFunc
Func _Click()
Local $tMousePos = _WinAPI_GetMousePos(True, $hGUI)
For $i = 1 To $aFlakes[0][0]
$iX_Dist = ($aFlakes[$i][0] - $aFlakes[$i][4]) - DllStructGetData($tMousePos, "X")
$iY_Dist = ($aFlakes[$i][1] - $aFlakes[$i][4]) - DllStructGetData($tMousePos, "Y")
$iDist = Sqrt($iX_Dist ^ 2 + $iY_Dist ^ 2)
If $iDist = 0 Then ContinueLoop
If $iDist < $iBlastRadius Then
$aFlakes[$i][2] = (1 - $iDist / $iBlastRadius) * ($iX_Dist / $iDist) * $iBlastAccell
$aFlakes[$i][3] = (1 - $iDist / $iBlastRadius) * ($iY_Dist / $iDist) * $iBlastAccell
EndIf
Next
EndFunc ;==>_Click
Func _Redraw()
_WinAPI_BitBlt($hDC_Window, 0, 0, $iWidth, $iHeight, $hDC_Bitmap, 0, 0, $SRCCOPY)
EndFunc ;==>_Redraw
Func _Close()
_Shutdown()
GUIDelete($hGUI)
Exit
EndFunc ;==>_Close
Func _Shutdown()
_WinAPI_SelectObject($hDC_Bitmap, $hOldObj)
_WinAPI_ReleaseDC($hGUI, $hDC_Window)
_WinAPI_DeleteDC($hDC_Bitmap)
_WinAPI_DeleteObject($hBitmap)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_BrushDispose($hBrush_Snow)
_GDIPlus_PenDispose($hPen_Border)
_GDIPlus_MatrixDispose($hMatrix)
_GDIPlus_StringFormatDispose($hFormat)
_GDIPlus_FontFamilyDispose($hFamily)
DllCall($ghGDIPDll, "uint", "GdipDeletePath", "hwnd", $hPath)
_GDIPlus_Shutdown()
DllClose($vNTdll)
EndFunc ;==>_Shutdown
Func _CreatePath($sText)
[/autoit] [autoit][/autoit] [autoit]Local $tBounds = _GDIPlus_RectFCreate(0, 0, 0, 0)
[/autoit] [autoit][/autoit] [autoit]Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreatePath", "int", 0, "int*", 0)
If @error Or Not IsArray($aResult) Then Return SetError(1, 1, False)
Local $hPath = $aResult[2]
DllCall($ghGDIPDll, "uint", "GdipAddPathString", "hwnd", $hPath, "wstr", $sText, "int", -1, "hwnd", $hFamily, "int", 1, "float", 100, "ptr", DllStructGetPtr($tLayout), "hwnd", $hFormat)
DllCall($ghGDIPDll, "uint", "GdipGetPathWorldBounds", "hwnd", $hPath, "ptr", DllStructGetPtr($tBounds), "hwnd", 0, "hwnd", 0)
_GDIPlus_MatrixTranslate($hMatrix, -DllStructGetData($tBounds, "X"), -DllStructGetData($tBounds, "Y"))
_GDIPlus_MatrixScale($hMatrix, $iWidth / DllStructGetData($tBounds, "Width"), $iHeight / DllStructGetData($tBounds, "Height"), True)
DllCall($ghGDIPDll, "uint", "GdipTransformPath", "hwnd", $hPath, "hwnd", $hMatrix)
Return $hPath
EndFunc ;==>_CreatePath
#region FEUERWERK
[/autoit] [autoit][/autoit] [autoit]Func Feuerwerk()
Local $aDraw
Local $iCount = 10, $iExplosion = 100, $iExplosionGround = 1, $iRadius = 600, $iBack = 0x09000000, $iSleep = 5
Global $iWidth2 = @DesktopWidth, $iHeight2 = @DesktopHeight, $aStart[$iCount][4] = [[Random(0, $iWidth2, 0), Random(0, $iHeight2, 0), 0, _GDIPlus_PenCreate(Random(0xFF000000, 0xFFFFFFFF, 0))],[Random(0, $iWidth2, 0), Random(0, $iHeight2, 0), 0, _GDIPlus_PenCreate(Random(0xFF000000, 0xFFFFFFFF, 0))]], $iSleeping = 0
For $i = 0 To UBound($aStart) - 1
$aStart[$i][0] = Random(0, $iWidth2, 0)
$aStart[$i][1] = Random(0, $iHeight2, 0)
$aStart[$i][2] = $iExplosion
$aStart[$i][3] = _GDIPlus_PenCreate(Random(0xFF000000, 0xFFFFFFFF, 0))
Next
While True
_GDIPlus_GraphicsClear($hGraphics, $iBack)
If $iSleeping = 0 Then
For $j = 0 To UBound($aStart) - 1
For $i = 0 To 35
$aDraw = Dreieck($i * 10, $aStart[$j][2] - $iExplosion)
_GDIPlus_GraphicsDrawRect($hGraphics, $aStart[$j][0] + Round($aDraw[0], 0), $aStart[$j][1] + Round($aDraw[1], 0), 2, 2, $aStart[$j][3])
Next
$aStart[$j][2] += $iExplosionGround + Ceiling(10 * $iExplosion / ($aStart[$j][2]))
If $aStart[$j][2] > $iRadius Then
$iSleeping = $iSleep
$aStart[$j][0] = Random(0, $iWidth2, 0)
$aStart[$j][1] = Random(0, $iHeight2, 0)
$aStart[$j][2] = $iExplosion
_GDIPlus_PenDispose($aStart[$j][3])
$aStart[$j][3] = _GDIPlus_PenCreate(Random(0xFF000000, 0xFFFFFFFF, 0))
EndIf
Next
Else
$iSleeping -= 1
EndIf
_WinAPI_RedrawWindow($hGUI, 0, 0, 2)
WEnd
EndFunc ;==>Feuerwerk
Func Dreieck($iWinkel, $iLaenge)
Local $iDeg = 0.0174532925199433, $aRet[2]
$aRet[0] = Sin($iWinkel * $iDeg) * $iLaenge
$aRet[1] = Cos($iWinkel * $iDeg) * $iLaenge
Return $aRet
EndFunc ;==>Dreieck
#endregion FEUERWERK
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]; #FUNCTION# ====================================================================================================================
; Name...........: _GDIPlus_GraphicsSetClipRect
; Description ...: Updates the clipping region of a Graphics object to a region that is the combination of itself and a rectangle
; Syntax.........: _GDIPlus_GraphicsSetClipRect($hGraphics, $nX, $nY, $nWidth, $nHeight[, $iCombineMode = 0])
; Parameters ....: $hGraphics - Pointer to a Graphics object
; $nX - X coordinate of the upper-left corner of the rectangle
; $nY - Y coordinate of the upper-left corner of the rectangle
; $nWidth - Width of the rectangle
; $nHeight - Height of the rectangle
; $iCombineMode - Regions combination mode:
; |0 - The existing region is replaced by the new region
; |1 - The existing region is replaced by the intersection of itself and the new region
; |2 - The existing region is replaced by the union of itself and the new region
; |3 - The existing region is replaced by the result of performing an XOR on the two regions
; |4 - The existing region is replaced by the portion of itself that is outside of the new region
; |5 - The existing region is replaced by the portion of the new region that is outside of the existing region
; Return values .: Success - True
; Failure - False and either:
; |@error and @extended are set if DllCall failed
; |$GDIP_STATUS contains a non zero value specifying the error code
; Remarks .......: None
; Related .......: None
; Link ..........; @@MsdnLink@@ GdipSetClipRect
; Example .......; No
; ===============================================================================================================================
Func _GDIPlus_GraphicsSetClipRect($hGraphics, $nX, $nY, $nWidth, $nHeight, $iCombineMode = 0)
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipSetClipRect", "hwnd", $hGraphics, "float", $nX, "float", $nY, "float", $nWidth, "float", $nHeight, "int", $iCombineMode)
If @error Then Return SetError(@error, @extended, False)
$GDIP_STATUS = $aResult[0]
Return $aResult[0] = 0
EndFunc ;==>_GDIPlus_GraphicsSetClipRect
#region WinAPIEx.au3 functions
Func _WinAPI_GetParentProcess($PID = 0)
If Not $PID Then
$PID = _WinAPI_GetCurrentProcessID()
If Not $PID Then Return SetError(1, 0, 0)
EndIf
Local $hSnapshot = DllCall('kernel32.dll', 'ptr', 'CreateToolhelp32Snapshot', 'dword', 0x00000002, 'dword', 0)
If (@error) Or (Not $hSnapshot[0]) Then Return SetError(1, 0, 0)
Local $tPROCESSENTRY32 = DllStructCreate('dword Size;dword Usage;dword ProcessID;ulong_ptr DefaultHeapID;dword ModuleID;dword Threads;dword ParentProcessID;long PriClassBase;dword Flags;wchar ExeFile[260]')
Local $pPROCESSENTRY32 = DllStructGetPtr($tPROCESSENTRY32)
Local $Ret, $Result = 0
$hSnapshot = $hSnapshot[0]
DllStructSetData($tPROCESSENTRY32, 'Size', DllStructGetSize($tPROCESSENTRY32))
$Ret = DllCall('kernel32.dll', 'int', 'Process32FirstW', 'ptr', $hSnapshot, 'ptr', $pPROCESSENTRY32)
While (Not @error) And ($Ret[0])
If DllStructGetData($tPROCESSENTRY32, 'ProcessID') = $PID Then
$Result = DllStructGetData($tPROCESSENTRY32, 'ParentProcessID')
ExitLoop
EndIf
$Ret = DllCall('kernel32.dll', 'int', 'Process32NextW', 'ptr', $hSnapshot, 'ptr', $pPROCESSENTRY32)
WEnd
_WinAPI_CloseHandle($hSnapshot)
If Not $Result Then Return SetError(1, 0, 0)
Return $Result
EndFunc ;==>_WinAPI_GetParentProcess
Func _WinAPI_EnumChildProcess($PID = 0)
If Not $PID Then
$PID = _WinAPI_GetCurrentProcessID()
If Not $PID Then Return SetError(1, 0, 0)
EndIf
Local $hSnapshot = DllCall('kernel32.dll', 'ptr', 'CreateToolhelp32Snapshot', 'dword', 0x00000002, 'dword', 0)
If (@error) Or (Not $hSnapshot[0]) Then Return SetError(1, 0, 0)
Local $tPROCESSENTRY32 = DllStructCreate('dword Size;dword Usage;dword ProcessID;ulong_ptr DefaultHeapID;dword ModuleID;dword Threads;dword ParentProcessID;long PriClassBase;dword Flags;wchar ExeFile[260]')
Local $pPROCESSENTRY32 = DllStructGetPtr($tPROCESSENTRY32)
Local $Ret, $Result[101][2] = [[0]]
$hSnapshot = $hSnapshot[0]
DllStructSetData($tPROCESSENTRY32, 'Size', DllStructGetSize($tPROCESSENTRY32))
$Ret = DllCall('kernel32.dll', 'int', 'Process32FirstW', 'ptr', $hSnapshot, 'ptr', $pPROCESSENTRY32)
While (Not @error) And ($Ret[0])
If DllStructGetData($tPROCESSENTRY32, 'ParentProcessID') = $PID Then
$Result[0][0] += 1
If $Result[0][0] > UBound($Result) - 1 Then
ReDim $Result[$Result[0][0] + 100][2]
EndIf
$Result[$Result[0][0]][0] = DllStructGetData($tPROCESSENTRY32, 'ProcessID')
$Result[$Result[0][0]][1] = DllStructGetData($tPROCESSENTRY32, 'ExeFile')
EndIf
$Ret = DllCall('kernel32.dll', 'int', 'Process32NextW', 'ptr', $hSnapshot, 'ptr', $pPROCESSENTRY32)
WEnd
_WinAPI_CloseHandle($hSnapshot)
If $Result[0][0] Then
ReDim $Result[$Result[0][0] + 1][2]
Else
Return SetError(1, 0, 0)
EndIf
Return $Result
EndFunc ;==>_WinAPI_EnumChildProcess
#endregion
#endregion BILDSCHIRMSCHOHNER
Hier noch ein Link: Beispiel für einen Bildschirmschoner
Gruß,
UEZ
Probiere mal dies aus:
[autoit]
#include <GDIPlus.au3>
_GDIPlus_Startup()
[/autoit][autoit][/autoit][autoit]$hBitmap_Map = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\FFIOriginsMap9.png")
$iW = 20
$iH = 20
$hBitmap_area = _GDIPlus_BitmapCloneArea($hBitmap_Map, 0, 0, 16, 16)
$hBitmap_20x20 = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iW, "int", $iH, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
$hBitmap_20x20 = $hBitmap_20x20[6]
$hCtxt = _GDIPlus_ImageGetGraphicsContext($hBitmap_20x20)
_GDIPlus_GraphicsDrawImageRect($hCtxt, $hBitmap_area, 0, 0, $iW, $iH)
_GDIPlus_ImageSaveToFile($hBitmap_20x20, @ScriptDir & "\New_20x20.bmp")
_GDIPlus_GraphicsDispose($hCtxt)
_GDIPlus_BitmapDispose($hBitmap_20x20)
_GDIPlus_BitmapDispose($hBitmap_Map)
_GDIPlus_BitmapDispose($hBitmap_area)
_GDIPlus_Shutdown()
ShellExecute(@ScriptDir & "\New_20x20.bmp")
Exit
Habe die Beispiele oben noch nicht angesehen!
Gruß,
UEZ
Bitte auch die Überschrift ändern. ![]()
Gruß,
UEZ
Happy Birthday und alles Gute!
Gruß,
UEZ
Ich schließe mich meinen Vorredner an und wünsche euch beiden alles Gute, viel Gesundheit und viel Erfolg in eurem Leben.
Gruß,
UEZ
Sieht echt cooooooll aus! ![]()
Freue mich auf weitere kreative Werke von dir ![]()
Gruß,
UEZ