Das sind lineare Gradiente. Die lassen sich mit der Funktion erstellen die ich bereits genannt habe. Die Fortschrittsbalken aus der GDIpProgress.au3 die so aussehen wie die entsprechenden Controls aus Vista sind tatsächlich aus Bildern konstruiert.
Beiträge von name22
-
-
Was meinst du damit, dass du nichts mit der GDIP.au3 anfangen kannst? Die UDF ist im Grunde nur eine Erweiterung der Funktionsbibliothek die von der GDIPlus.au3 zur Verfügung gestellt wird.
Zu einigen Funktionen findest du auch Beispiele, falls du unsicher bist wie man sie anwendet. Wenn du nicht weißt, was genau du an Effekten haben willst, dann musst du erstmal erklären was du unter einem 3D Button verstehst...
-
Also ein bisschen Eigeninitiative sollte schon drin sein :P.
Erstes Ergebnis für die Suche nach "GDIP.au3" bei Google. https://www.google.de/search?q=gdip.au3 -
Es gibt immer die Möglichkeit den Button in einem Bildbearbeitungsprogramm wie z.B. Photoshop oder GIMP zu erstellen und das Bild mit GDI+ auf die GUI zu zeichnen. Damit lassen sich wesentlich komplexere Designs erstellen.
Wenn du bei deinem jetzigen Ansatz bleiben möchtest, dann solltest du dir definitiv die GDIP.au3 ansehen. Dort sind einige Funktionen erhalten mit denen sich diverse Effekte, wie etwa Farbverläufe (_GDIPlus_LineBrushCreate), auf eine Grafik zaubern lassen. -
Sonst gibt es auch noch diese Funktion aus der GDIP.au3, die das gleiche macht:
Spoiler anzeigen
[autoit]; #FUNCTION# ====================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Name...........: _GDIPlus_GraphicsSetInterpolationMode
; Description ...: Sets the interpolation mode of a Graphics object
; Syntax.........: _GDIPlus_GraphicsSetInterpolationMode($hGraphics, $iInterpolationMode)
; Parameters ....: $hGraphics - Pointer to a Graphics object
; $iInterpolationMode - Interpolation mode:
; |0 - Default interpolation mode
; |1 - Low-quality mode
; |2 - High-quality mode
; |3 - Bilinear interpolation. No prefiltering is done
; |4 - Bicubic interpolation. No prefiltering is done
; |5 - Nearest-neighbor interpolation
; |6 - High-quality, bilinear interpolation. Prefiltering is performed to ensure high-quality shrinking
; |7 - High-quality, bicubic interpolation. Prefiltering is performed to ensure high-quality shrinking
; 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 .......: The interpolation mode determines the algorithm that is used when images are scaled or rotated
; Related .......: _GDIPlus_GraphicsGetInterpolationMode
; Link ..........; @@MsdnLink@@ GdipSetInterpolationMode
; Example .......; No
; ===============================================================================================================================
Func _GDIPlus_GraphicsSetInterpolationMode($hGraphics, $iInterpolationMode)
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "hwnd", $hGraphics, "int", $iInterpolationMode)If @error Then Return SetError(@error, @extended, False)
[/autoit]
$GDIP_STATUS = $aResult[0]
Return $aResult[0] = 0
EndFunc ;==>_GDIPlus_GraphicsSetInterpolationMode -
Hier ist eine Tabelle mit den Fehlercodes für Shellexecute. Vielleicht wirst du ja schlau daraus ;).
-
Andy hat recht :P. Dennoch habe ich dein Script entsprechend deiner Fragestellung überarbeitet. Wenn du in eine Bitmap zeichnen willst, dann musst du sie in einen DC kopieren und die Operation mit dem DC durchführen. Das gilt übrigens auch für die BitBlt Funktion, da muss auch ein DC eingetragen werden in dem sich die gewünschte Bitmap befindet, nicht das Handle zur Bitmap ;).
Spoiler anzeigen
[autoit]#include <WinAPI.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <FontConstants.au3>
#include <WindowsConstants.au3>$hGUI = GUICreate('', 800, 600)
[/autoit] [autoit][/autoit] [autoit]
GUISetState()$hDC_Window = _WinAPI_GetDC($hGUI)
[/autoit] [autoit][/autoit] [autoit]
$hDC_Bitmap = _WinAPI_CreateCompatibleDC($hDC_Window)
$hBitmap = _WinAPI_CreateCompatibleBitmap($hDC_Window, 800, 600)
$hOldBitmap = _WinAPI_SelectObject($hDC_Bitmap, $hBitmap)$hPen = _WinAPI_CreatePen($PS_SOLID, 4, 0x0000FF)
[/autoit] [autoit][/autoit] [autoit]
$hOldPen = _WinAPI_SelectObject($hDC_Bitmap, $hPen)_WinAPI_SetBkColor($hDC_Bitmap, 0x000000)
[/autoit] [autoit][/autoit] [autoit]_WinAPI_DrawLine($hDC_Bitmap, 0, 0, 800, 600)
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_BitBlt($hDC_Window, 0, 0, 800, 600, $hDC_Bitmap, 0, 0, $SRCCOPY)While GUIGetMsg() <> -3
[/autoit] [autoit][/autoit] [autoit]
WEnd_WinAPI_SelectObject($hDC_Bitmap, $hOldBitmap)
[/autoit]
_WinAPI_SelectObject($hDC_Bitmap, $hOldPen)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteDC($hDC_Bitmap)
_WinAPI_ReleaseDC($hGUI, $hDC_Window) -
Alles Gute zum Geburtstag euch beiden!

-
So. Für mehr Aufwand habe ich leider keine Zeit...

-
Klar geht sowas. Aber darauf stößt man auch alleine wenn man ein paar Minuten in Google investiert.
Ich kenne zwar die Namen der benötigten Funktionen, aber ich habe es mal zum Prinzip gemacht, Suchvorlagen für Google zu erstellen die möglichst deinen Wortlaut verwenden.1. "autoit gdiplus brush mit muster": https://www.google.de/search?q=autoi…rush+mit+muster
2. "autoit gdiplus brush farbverlauf": https://www.google.de/search?q=autoi…ush+farbverlauf
Jeweils das erste Suchergebnis sollte bereits das sein was du suchst. Es sind sogar Beispiele vorhanden.Und grundsätzlich akzeptieren so gut wie alle Funktionen in GDI+ ARGB Farbwerte. Also ist Transparenz durch modifikation des Alphachannels möglich (i.e. 0xFF00FF00 -> 0xA500FF00).
-
Zitat von YaeroxXO
Außer CounterStrike gab es aber auch kein Spiel von Valve was mich wirklich interessiert hat, oder was ich erstaunlich gut umgesetzt finde
Nichts für ungut, aber da würde mich interessieren wie viele Spiele von Valve du bis jetzt gespielt hast.
Das mit Abstand erfolgreichste Spiel von Valve ist immer noch Half-Life (50 Auszeichnungen als Spiel des Jahres). Half-Life gilt bis heute als einer der am besten umgesetzten Shooter und hatte einen großen Einfluss auf alle zukünftigen Spiele in diesem Genre.
Portal gilt als eines der besten und innovativsten Gesamtkonzepte überhaupt und hat fast keine negative Kritik bekommen.Zum Thema:
Ich sehe großes Potenzial in dem SteamBox Konzept und habe für meinen Teil keine großen Zweifel daran, dass die Umsetzung kaum Wünsche übrig lassen wird.
Ob das ganze erfolgreich wird hängt meiner Meinung nach vom Release-Zeitpunkt ab. Aus meiner Sicht steht das momentan noch in den Wolken. Aber obwohl ich von allem was ich bisher gehört habe sehr beeindruckt bin, weiß ich nicht ob ich noch einmal so viel Geld für soetwas ausgeben möchte. Die meisten potenziellen Kunden dieses Produkts werden bereits einen entsprechend guten PC haben... Je nachdem wie gut sich das Produkt (bzw. die Produkte) da hervorheben können, könnte das auch ein Hindernis für den Erfolg darstellen. -
Alles Gute zum Geburtstag Der_Doc, BugFix und i2cs Schwesterchen.
Lasst euch feiern ;): -
Ich hätte noch dieses alte Script von meiner Wenigkeit im Angebot: GDI+ Auf Desktop/Bildschirm zeichnen.
Damit könntest du eine transparente GUI über dein Fenster legen und darin nach belieben herummalen. -
Alles Gute zum Geburtstag, Raupi :D.
Hoffentlich haust du auch kräftig auf den Putz, so eine Gelegenheit kommt ja schließlich nur einmal pro Jahr ;). -
Dies ist ein großer, denkwürdiger Tag in der Geschichte der Menschheit. UEZ ist nun bereits das 5. Jahr in diesem Forum aktiv. Wir fühlen uns geehrt.
Meine besten Glückwünsche - name22. -
Der Text Parameter gilt für das Fenster, in dem sich das Control befindet, nicht das Control selbst. Das steht auch in der Hilfe zu diesem Befehl.
[autoit]
Du kannst aber das hier versuchen:$aPos = ControlGetPos("Microsoft Power Point", "", "[CLASS:MsoCommandBar;TEXT:Duden Korrektor;]")
[/autoit]
ConsoleWrite($aPos[0] & @TAB & $aPos[1] & @CRLF) -
Das ist nicht gerade einfach umzusetzen in AutoIt. Ich habe vor ein paar Jahren mal mit anderen Leuten aus dem Forum an so einer Funktion herumgebastelt. Die einfachste Möglichkeit ein Abbild des Bildschirms zu machen ist den Inhalt des Desktops per BitBlt in eine Bitmap zu kopieren. Das ist in AutoIt aber alles andere als performant und eignet sich nur sehr bedingt zum erstellen von flüssigen Aufnahmen (besonders bei größeren Auflösungen wird es kritisch).
Ich schließe mich meinem Vorredner an, über die Suchfunktion bzw. Google stößt du sicher auf eine nützlichere Aufnahmemethode in AutoIt (vielleicht sogar eine fertige UDF). -
Das macht so schon Sinn... Schließlich erlaubt Windows es dir die Dateien "Bild.jpeg" und "Bild.jpg" im selben Verzeichnis zu haben. Wäre ja auch schlimm wenn nicht... Daher musst du die Datei auch eindeutig identifizieren. Schreibfehler sind nicht die Schuld des Systems.
-
Das ist kein Farbcode sondern lediglich die Zahl 0 in Hexadezimalform und der Datengröße eines Handles (das was du eigentlich zurückbekommen solltest).
Und erneut kann man nur raten was dort schiefgelaufen ist. Ich vermute, dass die Dateien nicht im Verzeichnis des Scripts liegen (und ja ich meine dieses Script, nicht deine "UDF"). -
Zitat
denn ich hatte ein kleines Testscript erstellt in dem ich diese au3 included habe
Ach, und das erzählst du mir jetzt? Wie äußerst hilfreich...
ZitatTrotzdem nichts zu sehen, fehler werden auch keine ausgegeben
Das war ein Fehler meinerseits, ich habe übersehen, dass du alle Variablen schon vor der Funktion global deklariert hast. Dadurch werfen die Variablen bei ihrer Verwendung in der Funktion keinen Fehler sondern haben liedglich keinen Inhalt. Um die Fehler zu sehen müsstest du @error auslesen bzw. die Rückgabewerte der Funktionen ausgeben lassen die eben genannte Variablen verwenden.
Zitatnein das ist definitiv nicht das Problem
Ach echt? Tut mir leid, mein Fehler. Ich weiß leider auch nicht mehr weiter wenn es daran "definitiv nicht" liegen kann.
Da muss wohl jemand mit mehr Kompetenz ran...