Naja.. EInen Gameboy aufmöbeln kann man damit aber trotzdem ^^. Das wäre dann aber ein ziemlich leistungsfähiger Gameboy :S...
Aber ich finde damit kann man noch so viel mehr anfangen, dass es fast schon schade wäre, es nur darauf zu beschränken.
Beiträge von name22
-
-
Zitat
weil sonst ständig die cmd geöffnet ist
Das kann man auch verhindern...
Das Problem bei dem löschen einer verwendeten Datei ist, dass Windows das nicht zulässt (zum Glück... Sonst würde pures Chaos auf deinem Dateisystem ausbrechen ^^). Du musst entweder den Zugriff dieses Programms auf die Datei stoppen, oder die Datei löschen wenn der Prozess nicht darauf zugreift.
Es gibt einige Tools die sowas können, aber mit AutoIt ist das nicht ohne Weiteres möglich. Vielleicht gibt es ja automatisierbare Tools die das können. Aber besonders empfehlenswert für einen so häufig wiederholten Vorgang finde ich das nicht. Dein Browser wird mir dabei vermutlich zustimmen (manche Dateien kann man afaik auch mit speziellen Tools nicht "freigeben"). Und wenn das doch funktionieren sollte, könnte es passieren, das manche Programme danach abstürzen oder einfach den Dienst verweigern. -
Zitat
Naja, ein Bild als Hintergrund habe ich bereits.
Wie meinst du das? Ich hab ja auch nur ein Beispiel gemacht. Größe des Ladebalkens, verwendete Bilder, das lässt sich alles mit ein paar Variablen ändern. Ich dachte das wäre das wonach du suchst, wenn dem nicht so ist, wonach suchst du dann? -
Zitat
Leider funktioniert es damit irgend wie auch nicht

Interessante Fehlerbeschreibung... Wie wäre es wenn du es mit GDI+ machst?
Spoiler anzeigen
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <GDIPlus.au3>$iX = 50
[/autoit] [autoit][/autoit] [autoit]
$iY = 15
$iWidth = 300
$iHeight = 50
$iProgress = 0$sPath_ImageBG = @ScriptDir & "\BG.png"
[/autoit] [autoit][/autoit] [autoit]
$sPath_ImageBar = @ScriptDir & "\Bar.png"$hWnd = GUICreate("Test", 400, 100)
[/autoit] [autoit][/autoit] [autoit]
$cButton_Add = GUICtrlCreateButton("+10", 205, 70, 40, 20)
$cButton_Sub = GUICtrlCreateButton("-10", 155, 70, 40, 20)
GUISetState()_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWnd)
[/autoit] [autoit][/autoit] [autoit]
$hBitmap = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphics)
$hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsSetClipRect($hGraphics, $iX, $iY, $iWidth, $iHeight)
_GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)$hImageBG = _GDIPlus_ImageLoadFromFile($sPath_ImageBG)
[/autoit] [autoit][/autoit] [autoit]
$hImageBar = _GDIPlus_ImageLoadFromFile($sPath_ImageBar)_DrawProgress($iProgress)
[/autoit] [autoit][/autoit] [autoit]OnAutoItExitRegister("_Shutdown")
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_PAINT, "_ReDraw")While True
[/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_RESTORE
_ReDraw()
Case $cButton_Add
If $iProgress < 100 Then
$iProgress += 10
_DrawProgress($iProgress)
EndIf
Case $cButton_Sub
If $iProgress > 0 Then
$iProgress -= 10
_DrawProgress($iProgress)
EndIf
EndSwitch
WEndFunc _DrawProgress($iPercent)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsSetClipRect($hBuffer, 0, 0, $iWidth, $iHeight)
_GDIPlus_GraphicsClear($hBuffer, 0xFFFFFFFF)
_GDIPlus_GraphicsDrawImageRect($hBuffer, $hImageBG, 0, 0, $iWidth, $iHeight)_GDIPlus_GraphicsSetClipRect($hBuffer, 0, 0, $iWidth / 100 * $iPercent, $iHeight)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($hBuffer, $hImageBar, 0, 0, $iWidth, $iHeight)_GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, $iX, $iY, $iWidth, $iHeight)
[/autoit] [autoit][/autoit] [autoit]
EndFuncFunc _Shutdown()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_GraphicsDispose($hBuffer)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_ImageDispose($hImageBG)
_GDIPlus_ImageDispose($hImageBar)
_GDIPlus_Shutdown()
EndFuncFunc _ReDraw()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, $iX, $iY, $iWidth, $iHeight)
EndFunc;-GDIP.au3 Functions:
[/autoit] [autoit][/autoit] [autoit]
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)
[/autoit]
$GDIP_STATUS = $aResult[0]
Return $aResult[0] = 0
EndFunc ;==>_GDIPlus_GraphicsSetClipRect
Kopier mal die beiden Bilder im Anhang in das Scriptverzeichnis. Mit den Buttons kannst du die Progressbar steuern.
Ist das wirklich so schwer? -
Zitat
So, wie würde ich den jetzt bei meiner Funktion die Gui Transparent bekommen?
Mit ein paar Funktionen die wesentlich aufwendiger und komplizierter sind als der GDI+ Code der nötig wäre um das auch so zu machen...
Wenn du unbedingt wissen willst wie das geht, dann kannst du ja mal dieses Script von mir anschauen mit dem man auf einem transparenten Fenster zeichnen kann.
Ansonsten würde ich dir empfehlen das einfach mal mit GDI+ zu versuchen. Das ist nicht so kompliziert wie viele denken, und außerdem benutzt du ja jetzt schon jede Menge Funktionen aus dieser UDF.
Falls du das nicht hinkriegst kann man dir hier auch helfen, dafür ist das Forum ja da ;). -
Ich finde das ist viel zu viel Aufwand.. Du könntest auch einfach GDI+ verwenden, anstatt zu versuchen mit unnötig viel Code dem Pic Control in AutoIt die selbe Funktionalität wie GDI+ zu geben.

-
Ich sehe gerade, dass GUICTrlCreatePic wohl doch Teiltransparenz unterstützt (also Bitmaps mit Alphachannel). Und jetzt weiß ich auch wo dein Problem liegt..
Dieser weiße Rand ist der Hintergrund der GUI die du in deiner GUICreatePic Funktion erstellst. Das Bild mag transparent sein, aber die GUI ist es nicht. Du müsstest also den Hintergrund der GUI von deinem Pic Control ändern, oder das Bild in ein Pic Control in deiner HauptGUI packen. Beispiel:Spoiler anzeigen
[autoit]#include <Constants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <GDIPlus.au3>Global Const $STM_SETIMAGE = 0x0172
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$bImage_Pic = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Test.png")
[/autoit] [autoit][/autoit] [autoit]
$bWidth = _GDIPlus_ImageGetWidth($bImage_Pic)
$bHeight = _GDIPlus_ImageGetHeight($bImage_Pic)
$hbmpPic = _GDIPlus_BitmapCreateHBITMAPFromBitmap($bImage_Pic)$hwnd = GUICreate("ddd")
[/autoit] [autoit][/autoit] [autoit]
$iPic = GUICtrlCreatePic("", 50, 50, $bWidth, $bHeight, BitOR($SS_NOTIFY, $WS_CLIPSIBLINGS, $GUI_SS_DEFAULT_PIC))
GUICtrlSendMsg($iPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hbmpPic)
GUISetState()While GUIGetMsg() <> -3
[/autoit] [autoit][/autoit] [autoit]
WEnd_GDIPlus_ImageDispose($bImage_Pic)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_Shutdown()_WinAPI_DeleteObject($hbmpPic)
[/autoit]
Falls du aber eine füssige Animation suchst, bist du wahrscheinlich mit reinem GDI+ ohne Pic Control besser bedient. Pic Controls sind eher für statische Bilder gedacht ;). -
PNGs werden nicht vom Pic Control unterstützt und die von ihm unterstützten Bitmaps (die Funktion wandelt nur PNG zu BMP) können auch keinen Alphachannel haben soweit ich weiß. Es gibt nur die Möglichkeit eine GIF zu benutzen, aber die unterstützt nur volle oder gar keine Transparenz, keine zwischenwerte. Du könntest entweder das Bild direkt mit GDI+ auf die GUI zeichnen, oder den Hintergrund deines Ladebalkenbildes in der Hintergrundfarbe der GUI färben.
-
Zitat
Die Seiten lassen sich dich auch mit deaktiviertem Javascript problemlos (wenn auch nicht ganz so bequem) nutzen. Auf ein paar Sachen muss man halt ohne Javascript verzichten (z.B. Schnellantwort auf AutoIt.de).
Oder auch auf die Shoutbox, alle Buttons im Beitragseditor etc... Die Liste ist endlos, das betrifft nicht nur eine Sache oder so.
Und inwiefern funktionieren die anderen Seiten denn bitte noch? Youtube ohne Javascript? Unbequem ist da ein wenig untertrieben schließlich kann man so keine Videos mehr anschauen (Was willst du da sonst machen?).
Bei Google funktioniert InstantSearch nicht mehr, und auch diverse andere Suchhilfsmittel sind eingeschränkt. Und wie Google Maps ohne Javascript laufen soll verstehe ich leider auch nicht. Facebook ist bei mir völlig verbuggt, und einige Buttons sehen komisch aus und lassen keine Rückschlüsse auf ihre Funktion zu. Javascript ist im Internet Omnipräsent. Es gibt nicht viele Webseiten die ganz ohne Javascript auskommen, und ich finde es ein wenig bescheuert, wenn man aufgrund von einigen Sicherheitsrisiken o.Ä. (das Internet an sich ist ein einziges Sicherheitsrisiko) es zur Voraussetzung macht, seine Seite komplett ohne Javascript funktionieren zu lassen, oder einfach Javascript ganz abschaltet und Webseitenbetreibern praktisch sagt, dass sie ihre Webseiten ohne Javascript betreiben sollen. In einigen Fällen ist Javascript essenziell das lässt sich nicht vermeiden und ist nicht negativ. So sehe ich das zumindest. -
Zitat
@BB: Naja, Javascript sollte man bei einer Webseite eher vermeiden, da es von vielen Leuten deaktiviert wird. Auf jeden Fall sollte die Webseite auch ohne Javascript einigermasen funktionieren.
AutoIt.de ohne Javascript? Oder Google, oder YouTube, oder Facebook... -
Das selbe in Grün....
Du musst übrigens auch GraphicsClear nach jedem Schritt anwenden und das alles neuzeichnen was normalerweise erscheint. Dann zeichnest du das Rechteck drüber. -
Mir ist gerade beim experimentieren mit diesem Script eine Idee gekommen.. Wie wäre es mit 3dimensionalen Fraktalen in AutoIt mit GDI+? Die Berechnungen würden am Anfang zwar eine Menge Zeit in Anspruch nehmen, aber "einfachere Dinge" wie zum Beispiel der Menger-Schwamm sollten doch möglich sein, oder?
-
Zeichneimmer wieder ein Rechteck über das gesamte Fenster. Den Brush für dieses Rechteck kannst du Scritt für Schritt so anpassen:
[autoit]_GDIPlus_BrushSetSolidColor($hBrush, BitShift($iTrans, -32) + 0x00FF00 ;Ungetestet, ich weiß nicht ob AutoIt mit so großen Integern umgeht wie ich es mir vorstelle...)
[/autoit]
$iTrans darf nur Integerwerte von 0 (Transparent) bis 255 (nicht Transparent) annehmen. Die zweite Hexadezimalzahl stellt die Farbe dar die dein Rechteck nachher haben soll im Format RRGGBB.
Am Anfang sollte der Brush mit $iTrans = 255 erstellt werden, danach kannst du bis auf 0 herunterzählen (nicht unter 0, danach muss abgebrichen werden!). Wenn du willst, kannst du auch die Sinusfunktion verwenden, um einen "weicheren" Übergang zu erzeugen, nur musst du dann mit Round oder Int die Zahl auf den einen ganzzahligen Wert runden. -
Danke eukalyptus :D. Endlich hab ich verstanden wie das geht. Ich hab mal ein wenig mit dem System herumexperimentiert, und das ist dabei herausgekommen:
Spoiler anzeigen
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <GDIP.au3>
#include <WinAPI.au3>; - Author: name22 (http://www.autoit.de), eukalyptus (original)
[/autoit] [autoit][/autoit] [autoit]Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
Opt("MouseCoordMode", 2);###-v-SETTINGS-v-###
[/autoit] [autoit][/autoit] [autoit]$iWidth = 800
[/autoit] [autoit][/autoit] [autoit]
$iHeight = 800
$iDepth = 800
$iX_Offset = 0
$iY_Offset = 0
$fPersp = 0.6$iARGB_BG = 0xFF000000
[/autoit] [autoit][/autoit] [autoit]
$nFPS = 80$iX_Vel = 0
[/autoit] [autoit][/autoit] [autoit]
$iY_Vel = 0
$iZ_Vel = -1000;###-^-SETTINGS-^-###
[/autoit] [autoit][/autoit] [autoit]$iW_Rect = Random(60, 300, 1)
[/autoit] [autoit][/autoit] [autoit]
$iH_Rect = $iW_Rect
$iD_Rect = Random(60, 300, 1)
$iX_Rect = Random(0, $iWidth - $iW_Rect, 1)
$iY_Rect = Random(0, $iHeight - $iH_Rect, 1)
$iZ_Rect = 2000Global $aWarp_V[5][2] = [[4], [0, 0], [$iWidth / 2 * $fPersp + $iX_Offset, $iHeight / 2 * $fPersp + $iY_Offset], [0, $iHeight], [$iWidth / 2 * $fPersp + $iX_Offset, $iHeight - $iHeight / 2 * $fPersp + $iY_Offset]]
[/autoit] [autoit][/autoit] [autoit]
Global $aWarp_H[5][2] = [[4], [0, $iHeight], [$iWidth, $iHeight], [$iWidth / 2 * $fPersp + $iX_Offset, $iHeight - $iHeight / 2 * $fPersp + $iY_Offset], [$iWidth - $iWidth / 2 * $fPersp + $iX_Offset, $iHeight - $iHeight / 2 * $fPersp + $iY_Offset]]$nSleepTime = 1000 / $nFPS
[/autoit] [autoit][/autoit] [autoit]$nFPS_Display = 0
[/autoit] [autoit][/autoit] [autoit]
$nFPS_Average = $nFPS$vNTdll = DllOpen("ntdll.dll")
[/autoit] [autoit][/autoit] [autoit]
$vU32Dll = DllOpen("user32.dll")$tPrecSleep = DllStructCreate("int64 time;")
[/autoit] [autoit][/autoit] [autoit]
$pPrecSleep = DllStructGetPtr($tPrecSleep)$hMain = GUICreate("Example by name22", $iWidth, $iHeight)
[/autoit] [autoit][/autoit] [autoit]
GUISetState()$hDC_Main = _WinAPI_GetDC($hMain)
[/autoit] [autoit][/autoit] [autoit]
$hDC_Buffer = _WinAPI_CreateCompatibleDC($hDC_Main)
$hBitmap_Buffer = _WinAPI_CreateCompatibleBitmap($hDC_Main, $iWidth, $iHeight)
_WinAPI_SelectObject($hDC_Buffer, $hBitmap_Buffer)_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphics = _GDIPlus_GraphicsCreateFromHDC($hDC_Buffer)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2)$hImageFront = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Front.png")
[/autoit] [autoit][/autoit] [autoit]$hPen_Cube = _GDIPlus_PenCreate(0xFF00FF00)
[/autoit] [autoit][/autoit] [autoit]
$hBrush_FPS = _GDIPlus_BrushCreateSolid(0xFF808080)
$hBrush_Walls = _GDIPlus_BrushCreateSolid(0xFFF0F0F0)$hStringFormat = _GDIPlus_StringFormatCreate()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_StringFormatSetAlign($hStringFormat, 2)
$hFamily_FPS = _GDIPlus_FontFamilyCreate("Sony Sketch EF")
$hFont_FPS = _GDIPlus_FontCreate($hFamily_FPS,
$aMeasure = _GDIPlus_GraphicsMeasureString($hGraphics, "FPS: 0", $hFont_FPS, _GDIPlus_RectFCreate(), $hStringFormat)
[/autoit] [autoit][/autoit] [autoit]
$tLayout_FPS = _GDIPlus_RectFCreate(0, $iHeight - DllStructGetData($aMeasure[0], "Height"), $iWidth, 0)GUISetOnEvent($GUI_EVENT_CLOSE, "_Close", $hMain)
[/autoit] [autoit][/autoit] [autoit]
OnAutoItExitRegister("_Shutdown")MouseMove($iWidth / 2, $iHeight / 2, 0)
[/autoit] [autoit][/autoit] [autoit]$aMousePosOld = MouseGetPos()
[/autoit] [autoit][/autoit] [autoit]
$nT_UpdateFPS = TimerInit()
$nT_Sleep = TimerInit() + $nSleepTime
While True
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]
If TimerDiff($nT_UpdateFPS) >= 1000 Then
$nFPS_Display = $nFPS_Cur
$nT_UpdateFPS = TimerInit()
EndIf$aMousePosNew = MouseGetPos()
[/autoit] [autoit][/autoit] [autoit]
If $aMousePosOld[0] <> $aMousePosNew[0] Or $aMousePosOld[1] <> $aMousePosNew[1] Then
$iX_Offset = $aMousePosNew[0] - $iWidth / 2
$iY_Offset = $aMousePosNew[1] - $iHeight / 2
$aWarp_V[2][0] = $iWidth / 2 * $fPersp + $iX_Offset
$aWarp_V[2][1] = $iHeight / 2 * $fPersp + $iY_Offset
$aWarp_V[4][0] = $aWarp_V[2][0]
$aWarp_V[4][1] = $iHeight - $iHeight / 2 * $fPersp + $iY_Offset
$aWarp_H[3][0] = $aWarp_V[2][0]
$aWarp_H[3][1] = $aWarp_V[4][1]
$aWarp_H[4][0] = $iWidth - $iWidth / 2 * $fPersp + $iX_Offset
$aWarp_H[4][1] = $aWarp_V[4][1]
$aMousePosOld = $aMousePosNew
EndIf$iX_Rect += $iX_Vel / $nFPS_Cur
[/autoit] [autoit][/autoit] [autoit]
$iY_Rect += $iY_Vel / $nFPS_Cur
$iZ_Rect += $iZ_Vel / $nFPS_CurIf $iZ_Rect < 0 Then
[/autoit] [autoit][/autoit] [autoit]
$iW_Rect = Random(60, 300, 1)
$iH_Rect = $iW_Rect
$iD_Rect = Random(60, 300, 1)
$iX_Rect = Random(0, $iWidth - $iW_Rect, 1)
$iY_Rect = Random(0, $iHeight - $iH_Rect, 1)
$iZ_Rect = 2000
EndIf$hPath_V = _GDIPlus_PathCreate()
[/autoit] [autoit][/autoit] [autoit]
$hPath_H = _GDIPlus_PathCreate()_GDIPlus_PathAddRectangle($hPath_V, $iZ_Rect, $iY_Rect, $iD_Rect, $iH_Rect)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_PathAddRectangle($hPath_H, $iX_Rect, $iZ_Rect, $iW_Rect, $iD_Rect)_GDIPlus_PathWarp($hPath_V, 0, $aWarp_V, 0, 0, $iDepth, $iHeight)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_PathWarp($hPath_H, 0, $aWarp_H, 0, 0, $iWidth, $iDepth)$aPoints_V = _GDIPlus_PathGetPoints($hPath_V)
[/autoit] [autoit][/autoit] [autoit]
$aPoints_H = _GDIPlus_PathGetPoints($hPath_H)_GDIPlus_PathDispose($hPath_V)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_PathDispose($hPath_H)_GDIPlus_GraphicsClear($hGraphics, $iARGB_BG)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsFillPolygon($hGraphics, $aWarp_H, $hBrush_Walls)
_GDIPlus_GraphicsFillPolygon($hGraphics, $aWarp_V, $hBrush_Walls)
_GDIPlus_GraphicsDrawPolygon($hGraphics, $aPoints_H, $hPen_Cube)
_GDIPlus_GraphicsDrawPolygon($hGraphics, $aPoints_V, $hPen_Cube);Punkte Horizontal
[/autoit] [autoit][/autoit] [autoit]
; 4---3
; / \
;1------2;Punkte Vertikal
[/autoit] [autoit][/autoit] [autoit]
;1--__
;| --2
;| |
;| __--3
;4--;Punkte 3D
[/autoit] [autoit][/autoit] [autoit]
;1----2
;|\ |\
;| 5----6
;4----3 |
; \| \|
; 8----7_GDIPlus_GraphicsDrawLine($hGraphics, $aPoints_H[1][0], $aPoints_V[4][1], $aPoints_H[2][0], $aPoints_V[4][1], $hPen_Cube)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawLine($hGraphics, $aPoints_H[2][0], $aPoints_V[4][1], $aPoints_H[3][0], $aPoints_V[3][1], $hPen_Cube)
_GDIPlus_GraphicsDrawLine($hGraphics, $aPoints_H[3][0], $aPoints_V[3][1], $aPoints_H[4][0], $aPoints_V[3][1], $hPen_Cube)
_GDIPlus_GraphicsDrawLine($hGraphics, $aPoints_H[4][0], $aPoints_V[3][1], $aPoints_H[1][0], $aPoints_V[4][1], $hPen_Cube)_GDIPlus_GraphicsDrawLine($hGraphics, $aPoints_H[1][0], $aPoints_V[1][1], $aPoints_H[2][0], $aPoints_V[1][1], $hPen_Cube)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawLine($hGraphics, $aPoints_H[2][0], $aPoints_V[1][1], $aPoints_H[3][0], $aPoints_V[2][1], $hPen_Cube)
_GDIPlus_GraphicsDrawLine($hGraphics, $aPoints_H[3][0], $aPoints_V[2][1], $aPoints_H[4][0], $aPoints_V[2][1], $hPen_Cube)
_GDIPlus_GraphicsDrawLine($hGraphics, $aPoints_H[4][0], $aPoints_V[2][1], $aPoints_H[1][0], $aPoints_V[1][1], $hPen_Cube)_GDIPlus_GraphicsDrawLine($hGraphics, $aPoints_H[1][0], $aPoints_V[1][1], $aPoints_H[1][0], $aPoints_V[4][1], $hPen_Cube)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawLine($hGraphics, $aPoints_H[2][0], $aPoints_V[1][1], $aPoints_H[2][0], $aPoints_V[4][1], $hPen_Cube)
_GDIPlus_GraphicsDrawLine($hGraphics, $aPoints_H[3][0], $aPoints_V[2][1], $aPoints_H[3][0], $aPoints_V[3][1], $hPen_Cube)
_GDIPlus_GraphicsDrawLine($hGraphics, $aPoints_H[4][0], $aPoints_V[2][1], $aPoints_H[4][0], $aPoints_V[3][1], $hPen_Cube)_GDIPlus_GraphicsDrawImageRect($hGraphics, $hImageFront, $aPoints_H[1][0], $aPoints_V[1][1], Abs($aPoints_H[2][0] - $aPoints_H[1][0]), Abs($aPoints_V[4][1] - $aPoints_V[1][1]))
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsDrawStringEx($hGraphics, "FPS: " & Int($nFPS_Display), $hFont_FPS, $tLayout_FPS, $hStringFormat, $hBrush_FPS)
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_BitBlt($hDC_Main, 0, 0, $iWidth, $iHeight, $hDC_Buffer, 0, 0, $SRCCOPY)
WEndFunc _Close()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFunc ;==>_CloseFunc _Shutdown()
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_ReleaseDC($hMain, $hDC_Main)
_WinAPI_DeleteDC($hDC_Buffer)
_WinAPI_DeleteObject($hBitmap_Buffer)_GDIPlus_GraphicsDispose($hGraphics)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_ImageDispose($hImageFront)
_GDIPlus_BrushDispose($hBrush_FPS)
_GDIPlus_BrushDispose($hBrush_Walls)
_GDIPlus_PenDispose($hPen_Cube)
_GDIPlus_StringFormatDispose($hStringFormat)
_GDIPlus_FontFamilyDispose($hFamily_FPS)
_GDIPlus_FontDispose($hFont_FPS)
_GDIPlus_Shutdown()DllClose($vNTdll)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
DllClose($vU32Dll)
EndFunc ;==>_Shutdown; #FUNCTION#;===============================================================================
[/autoit]
;
; Name...........: _HighPrecisionSleep()
; Description ...: Sleeps down to 0.1 microseconds
; Syntax.........: _HighPrecisionSleep( $iMicroSeconds, $hDll=False)
; Parameters ....: $iMicroSeconds - Amount of microseconds to sleep
; $hDll - Can be supplied so the UDF doesn't have to re-open the dll all the time.
; Return values .: None
; Author ........: Andreas Karlsson (monoceres)
; Modified.......:
; Remarks .......: Even though this has high precision you need to take into consideration that it will take some time for autoit to call the function.
; Related .......:
; Link ..........;
; Example .......; No
;
;;==========================================================================================
Func _HighPrecisionSleep($iMicroSeconds, $hDll = False)
Local $hStruct, $bLoaded
If Not $hDll Then
$hDll = DllOpen("ntdll.dll")
$bLoaded = True
EndIf
$hStruct = DllStructCreate("int64 time;")
DllStructSetData($hStruct, "time", -1 * ($iMicroSeconds * 10))
DllCall($hDll, "dword", "ZwDelayExecution", "int", 0, "ptr", DllStructGetPtr($hStruct))
If $bLoaded Then DllClose($hDll)
EndFunc ;==>_HighPrecisionSleep
Falls ihr wollt, könnt ihr das Bild (oder auch ein komplett anderes) in das Scriptverzeichnis packen (oder den Pfad in Zeile 63 anpassen). -
Zitat
was bestimmt auch gute Ergebnisse liefert!
Standardmäßig sehen die Bilder danach schon recht gut aus, aber man kann auch mit einer Funktion aus der GDIP.au3 (_GDIPlus_GraphicsSetInterpolationMode) den Modus auf das gewünschte Verfahren setzen. Manche sind schneller aber liefern schlechte Bilder, andere sind langsam aber liefern super Bildqualität. Es gbt auch optimierungen für Verkleinerung bzw. Vergrößerung eines Bildes. -
Zitat
und wird nach ein paar Sekunden wieder entfernt.
Nein. Es wird genau dann entfernt wenn Wndows es will, also wenn du etwas anderes dadrüber Positionierst. Wie z.B. das Auswahlrechteck oder ein Fenster..ZitatIch lass es jetzt einfach wie es war und autoit startet das Fenster danach einfach neu.
Wie denn das?ZitatIst immerhin weniger Arbeit als ein transparentes GUI drüber zu legen.
Nicht wirklich.. An meinem Script müsste man nicht viel anpassen um das zu ändern. Abgesehen davon hätte ich dir dabei auch helfen können. -
Zitat
in IrfaView gibt es einen speziellen Modus mit Namen: "Speichern fürs Web". Den man als Plugin bekommt. Einen solchen Modus haben die besseren Bildbearbeitungsprogramme auch.

Und was macht der? -
Wie wärs mit
[autoit]_DateDiff
[/autoit]
;+
@YEAR ;Aktuelles Jahr
@MON ;Aktueller Monat
@MDAY ;Aktueler Tag
@HOUR ;Aktuelle Stunde
@MIN ;Aktuelle Minute
;und
MsgBox
?
-
So...
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#Include <GDIPlus.au3>$hGUI = GUICreate("Form1", 360, 60, 129, 124)
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)_GDIPlus_Startup ()
[/autoit] [autoit][/autoit] [autoit]$hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hGUI)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2)$hImageProgress = _GDIPlus_ImageLoadFromFile ("C:\Users\Torge\Documents\Jellyfish.jpg") ; Bild, welches als Progressbar benutzt werden soll
[/autoit] [autoit][/autoit] [autoit]
$hImageBG = _GDIPlus_ImageLoadFromFile ("C:\Users\Torge\Documents\Prog.jpg") ; Hintergrundbild, auf dem die Progressbar benutzt werden sollFor $i = 1 to 360
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsSetClipRect($hGraphic, 0, 0, $i, 60) ;Begrenzt den Zeichenbereich der Grafik auf das angegebene Rechteck
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hImageBG, 0, 0, 360, 60)
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hImageProgress, 0, 0, 360, 60)
NextOnAutoItExitRegister("_Shutdown") ;Führt _Shutdown vor dem beenden des Scripts aus.
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEndFunc _Shutdown()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDispose($hGraphic) ;Grafik Objekt löschen
_GDIPlus_ImageDispose($hImageProgress) ;Bild löschen
_GDIPlus_ImageDispose($hImageBG) ;Bild löschen
_GDIPlus_Shutdown() ;Standard Ressourcen löschen und DLL Handle schließen.
EndFunc;GDIP.au3 Funcion:
[/autoit] [autoit][/autoit] [autoit]
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)
[/autoit]
$GDIP_STATUS = $aResult[0]
Return $aResult[0] = 0
EndFunc ;==>_GDIPlus_GraphicsSetClipRect
Das ist zwar immer noch nicht besonders gut, aber es sollte korrekt funktionieren. Wenn dein bild flackern sollte musst du noch einen Backbuffer einbauen (dazu gibt es ein Tutorial im Forum "GDI+ Tutorial").
Wenn du dann noch das beachtest was Greenhorn gepostet hat, könnte daraus sogar noch was werden. Dein Bild sollte übrigens die Maße 360x60 Pixel haben (exakt). Sonst bringt das hier keinen Geschwindigkeitsvorteil. -
Räum mal deinen Code auf, dann sehen wir weiter... Ich hab schon den passenden Befehl dafür.