1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. name22

Beiträge von name22

  • Mit einzelnem Tortenstück aus der Funktion _GDIPlus_GraphicsFillPie() weiterarbeiten

    • name22
    • 12. Februar 2013 um 15:14

    Ja ich meinte das in Bezug auf die Funktion. Du musst auch nicht ein Polygon erstellen, das war wohl schlecht formuliert. Du kannst einfach weiterhin _GDIPlus_GraphicsFillPie nutzen, nur zeichnest du den Ausschnitt der übrig bleibt, statt alles zu zeichnen und dann zu übermalen.

    Wie willst du es denn sonst zeichnen? Mit einer anderen Funktion? ^^
    Wenn du das Originalbild als Textur verwendest, kannst du dieses Tortenstück das nach dem Übermalen übrig bleibt hinzeichnen wo du willst.Dafür brauchst du allerdings die Koordinaten dieses Resttortenstücks bzw. dessen Winkel (je nachdem mit welcher Funktion du arbeitest).

  • Mit einzelnem Tortenstück aus der Funktion _GDIPlus_GraphicsFillPie() weiterarbeiten

    • name22
    • 12. Februar 2013 um 13:09

    Wie genau willst du denn damit weiterarbeiten? Du kannst ja mit einfach ein Polygon erstellen, dass genau die Koordinaten deines übriggebliebenen Tortenstücks hat. Dafür verwendest du als Textur dann das Originalbild. Dadurch kannst du das hinzeichnen wo du willst. Ich verstehe nicht ganz wo jetzt die Einschränkung für dich liegt.

  • Mit einzelnem Tortenstück aus der Funktion _GDIPlus_GraphicsFillPie() weiterarbeiten

    • name22
    • 12. Februar 2013 um 12:44

    Ich bin mir nicht sicher, ob das genau deinen Vorstellungen entspricht, aber ich denke _GDIPlus_TextureCreate und die anderen _Texture... Funktionen aus der GDIP.au3 könnten dir weiterhelfen.
    Ich hab damit vor Ewigkeiten ein kleines Testscript geschrieben, aber vielleicht findest du auch ein besseres Beispiel.

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $iGUIWidth = 400
    $iGUIHeight = 400
    $GUIColorBG = 0xFFFFFFFF

    [/autoit] [autoit][/autoit] [autoit]

    $iX = 0 ;X-Koordinate des rechteckigen Bitmap Ausschnitts
    $iY = 0 ;Y-Koordinate des rechteckigen Bitmap Ausschnitts
    $iX2 = 0 ;X-Koordinate der Ellipse
    $iY2 = 0 ;Y-Koordinate der Ellipse
    $iWidth = 300 ;Breite des rechteckigen Bitmap Ausschnitts
    $iHeight = 300 ;Höhe des rechteckigen Bitmap Ausschnitts
    $iWidth2 = 400 ;Breite der Ellipse
    $iHeight2 = 400 ;Höhe der Ellipse

    [/autoit] [autoit][/autoit] [autoit]

    $hWnd = GUICreate("Test", $iGUIWidth, $iGUIHeight)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iGUIWidth, $iGUIHeight, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)
    _GDIPlus_GraphicsClear($hGraphic, $GUIColorBG)
    _GDIPlus_GraphicsClear($hBuffer, $GUIColorBG)

    [/autoit] [autoit][/autoit] [autoit]

    $hImage = _GDIPlus_ImageLoadFromFile(FileOpenDialog("Select Image", "", "Image Files(*.*)"))

    [/autoit] [autoit][/autoit] [autoit]

    $hTextureBrush = _GDIPlus_TextureCreate2($hImage, $iX, $iY, $iWidth, $iHeight)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsFillEllipse($hBuffer, $iX2, $iY2, $iWidth2, $iHeight2, $hTextureBrush)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iGUIWidth, $iGUIHeight)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_BrushDispose($hTextureBrush)
    _GDIPlus_Shutdown()
    Exit
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ;Funtionen aus der GDIP.au3:

    [/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _GDIPlus_TextureCreate
    ; Description ...: Creates a TextureBrush object based on an image and a wrap mode
    ; Syntax.........: _GDIPlus_TextureCreate($hImage[, $iWrapMode = 0])
    ; Parameters ....: $hImage - Pointer to an Image object
    ; $iWrapMode - Wrap mode that specifies how repeated copies of an image are used to tile an area when it is
    ; +painted with the texture brush:
    ; |0 - Tiling without flipping
    ; |1 - Tiles are flipped horizontally as you move from one tile to the next in a row
    ; |2 - Tiles are flipped vertically as you move from one tile to the next in a column
    ; |3 - Tiles are flipped horizontally as you move along a row and flipped vertically as you move along a column
    ; |4 - No tiling takes place
    ; Return values .: Success - Pointer to a new TextureBrush object
    ; Failure - 0 and either:
    ; |@error and @extended are set if DllCall failed
    ; |$GDIP_STATUS contains a non zero value specifying the error code
    ; Remarks .......: The size of the brush defaults to the size of the image, so the entire image is used by the brush
    ; After you are done with the object, call _GDIPlus_BrushDispose to release the object resources
    ; Related .......: _GDIPlus_BrushDispose
    ; Link ..........; @@MsdnLink@@ GdipCreateTexture
    ; Example .......; No
    ; ===============================================================================================================================
    Func _GDIPlus_TextureCreate($hImage, $iWrapMode = 0)
    Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateTexture", "hwnd", $hImage, "int", $iWrapMode, "int*", 0)

    [/autoit] [autoit][/autoit] [autoit]

    If @error Then Return SetError(@error, @extended, 0)
    $GDIP_STATUS = $aResult[0]
    Return $aResult[3]
    EndFunc ;==>_GDIPlus_TextureCreate

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _GDIPlus_TextureCreate2
    ; Description ...: Creates a TextureBrush object based on an image, a wrap mode and a defining rectangle
    ; Syntax.........: _GDIPlus_TextureCreate2($hImage, $nX, $nY, $nWidth, $nHeight[, $iWrapMode = 0])
    ; Parameters ....: $hImage - Pointer to an Image object
    ; $nX - Leftmost coordinate of the image portion to be used by this brush
    ; $nY - Uppermost coordinate of the image portion to be used by this brush
    ; $nWidth - Width of the brush and width of the image portion to be used by the brush
    ; $nHeight - Height of the brush and height of the image portion to be used by the brush
    ; $iWrapMode - Wrap mode that specifies how repeated copies of an image are used to tile an area when it is
    ; +painted with the texture brush:
    ; |0 - Tiling without flipping
    ; |1 - Tiles are flipped horizontally as you move from one tile to the next in a row
    ; |2 - Tiles are flipped vertically as you move from one tile to the next in a column
    ; |3 - Tiles are flipped horizontally as you move along a row and flipped vertically as you move along a column
    ; |4 - No tiling takes place
    ; Return values .: Success - Pointer to a new TextureBrush object
    ; Failure - 0 and either:
    ; |@error and @extended are set if DllCall failed
    ; |$GDIP_STATUS contains a non zero value specifying the error code
    ; Remarks .......: After you are done with the object, call _GDIPlus_BrushDispose to release the object resources
    ; Related .......: _GDIPlus_BrushDispose
    ; Link ..........; @@MsdnLink@@ GdipCreateTexture2
    ; Example .......; No
    ; ===============================================================================================================================
    Func _GDIPlus_TextureCreate2($hImage, $nX, $nY, $nWidth, $nHeight, $iWrapMode = 0)
    Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateTexture2", "hwnd", $hImage, "int", $iWrapMode, "float", $nX, "float", $nY, "float", $nWidth, "float", $nHeight, "int*", 0)

    [/autoit] [autoit][/autoit] [autoit]

    If @error Then Return SetError(@error, @extended, 0)
    $GDIP_STATUS = $aResult[0]
    Return $aResult[7]
    EndFunc ;==>_GDIPlus_TextureCreate2

    [/autoit]
  • Halbkreis mit GDI+

    • name22
    • 12. Februar 2013 um 11:25

    Ich hab jetzt nicht nachgerechnet, aber so sollte es halbwegs korrekt sein. Der Radius des grünen Bogens muss ein bisschen größer sein, verschieben alleine reicht nicht aus. Wenn du ihn auf die selben Koordinaten setzt wie die schwarze Ellipse, dann siehst du dass genau die Mitte des Bogens auf der Kante der Ellipse liegt.
    Das ist ein Geometrieproblem, kein GDI+-Problem ;).

  • Halbkreis mit GDI+

    • name22
    • 12. Februar 2013 um 11:09

    Auf dem Bild sieht es so aus, als hätte die Ellipse andere Ausmaße als der Viertelkreis. Aber das kann man schlecht testen ohne deine UDF bzw. die Funktion _DrawMainMenu zu haben. Kontrolliere noch mal alle Koordinaten und Größen bei den Figuren die du zeichnest.

  • StringRegExp

    • name22
    • 11. Februar 2013 um 17:59
    Zitat

    1. Problem - Die Sind mit TAB getrennt.

    Das erzählst du jetzt? Deswegen habe ich doch vorhin extra gefragt wie die getrennt sind :pinch: .

    Zitat

    2. Problem es geht nicht mit den <>
    (sonderzeichen sind zu erwarten, alle)

    Sonderzeichen werden erwartet, alle. Ein RegExp "." unterscheidet nicht zwischen "normalen" und "Sonderzeichen", du musst also etwas genauer werden wenn etwas nicht so läuft wie du es dir vorstellst.

  • StringRegExp

    • name22
    • 11. Februar 2013 um 14:56

    Also so?

    [autoit]

    #include <Array.au3>

    [/autoit][autoit][/autoit][autoit]

    $sReg = "ENU_GUID REG_SZ {AC76BA86-7AD7-1031-7B44-AA1000000001}"
    $aSplit = StringRegExp($sReg, "([^ ]+) ([^ ]+) (.+)", 3)
    _ArrayDisplay($aSplit)

    [/autoit]
  • StringRegExp

    • name22
    • 11. Februar 2013 um 14:36

    Und der vorliegende String sieht wie aus? Sind die einzelnen Einträge durch Zeilenumbrüche getrennt, oder einfach aneinander gereiht? Welche Einträge willst du auslesen, welche nicht?

  • StringRegExp

    • name22
    • 11. Februar 2013 um 14:21

    Jetzt fehlt aber noch etas.. Was willst du eigentlich machen? ^^ Du hast nur geschrieben welche Daten vorliegen und dass du den Befehl nicht verstehst.

  • String in Float umwandeln

    • name22
    • 11. Februar 2013 um 13:06

    Du kannst entweder die entsprechende Einstellung in Excel ändern, oder direkt im Script mit StringReplace jeden Punkt in den einzelnen Strings durch ein Komma ersetzen.

  • Gui "durchlickbar" machen?

    • name22
    • 10. Februar 2013 um 20:13

    Verwende mal den erweiterten Stil $WS_EX_TRANSPARENT bei deiner GUI.

  • RegEnumKey bringt eigenariges Ergebnis

    • name22
    • 10. Februar 2013 um 11:34

    Hast du denn Adobe Produkte installiert? Falls ja, dann existiert dieser Schlüssel und Regedit zeigt ihn dir nicht an. Weder Regedit noch AutoIt können Schlüssel herbeizaubern, also müsste eigentlich derjenige Lügen der weniger Schlüssel anzeigt ^^.
    Könnte es daran liegen? http://www.winfaq.de/faq_html/Conte…p?h=tip2073.htm

  • Quotes in der Pfadangabe um eine "exe" per RUN mit Parametern zu starten.

    • name22
    • 10. Februar 2013 um 02:55

    Die einfachste Lösung wäre, 2 Arten von Quotes zu verwenden. Du kannst aber auch alle Quotes die in einen String eingefügt werden sollen verdoppeln: " -> "".
    Probier es mal so:

    [autoit]

    Run('"' & $Path_CF & '\SnapShotTool.exe" -c "' & @WORKINGDIR & '\SnapshotTool\snapshot_config.xml"', "", @SW_MAXIMIZE)

    [/autoit]
  • Unterschied (Switch case) (If Then endif)

    • name22
    • 9. Februar 2013 um 16:40

    @make-grafik Deine Switch Abfrage macht wenig Sinn. Switch vergleicht den Wert jeder einzelnen Case ... Zeile mit dem Wert hinter dem Switch Statement. Du vergleichst den Wert von $nMsg mit dem Ergebnis von $nMsg = $slider1 (bei dem nur True oder False rauskommt).
    Du könntest die Abfrage auch gleich weglassen, weil diese Zeile "GUICtrlSetData($Label1, GUICtrlRead($Slider1))" sowieso bei fast jedem Schleifendurchgang ausgeführt wird.

  • Zeitsynchronisierung bei defekter BIOS-Batterie

    • name22
    • 9. Februar 2013 um 16:03

    Laut Beschreibung macht das hier genau das was du willts, aber all zu viele Rückmeldungen gibt es dafür nicht...

  • GUI: Buttons mit Funktionen verknüpfen? (Anfänger)

    • name22
    • 9. Februar 2013 um 12:42
    Zitat

    Also bist du der Meinung ich hätte nen neuen Thread für die Frage, die eigentlich sehr viel mit dem Thema zu tun hat, erstellen sollen? O.O


    Ja. Das hättest du machen sollen. Ich bezweifle, dass du exakt das gleiche Problem hast und es lohnt sich wirklich nicht alte H&U Threads auszugraben. Dieser Thread ist so alt, dass die damalige AutoIt Version nicht unbedingt kompatibel mit der heutigen ist.
    Bitte erstelle einfach einen neuen Thread mit einer ausführlichen Problembeschreibung.

    @Mod/Admin Wäre es möglich diesen Thread zu closen? Damals schien das Gesprächsthema sowieso nicht mit unseren Forenregeln kompatibel zu sein.

  • CityMark 0.1 - OpenGL 3D Benchmark

    • name22
    • 5. Februar 2013 um 19:58

    Dann sag das doch gleich ^^. Du könntest auch einfach deinem Script diese Präprozessoranweisug hinzufügen:

    [autoit]

    #AutoIt3Wrapper_UseX64=0

    [/autoit]


    Mein Ergebnis: Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Und hier die Konsolenausgabe (Meine CPU läuft eigentlich mit 4 GHz):

    Konsole

    =============== MINX-O-MAT =====================================
    - CPU: Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz (4 x 3300MHz)
    - CPU-Cooldown [====================]
    + Test 1: 782132 points.
    + Test 2: 31850 points.
    + Test 3: 168999 points.
    + Test 4: 18030 points.
    + Test 5: 3442792 points.


    Jetzt da ich das ganze auch sehen konnte: Tolle Leistung minx :D. Das Programm gefällt mir, aber an der Generierung des Bildes mit der Punktzahl könntest du noch feilen :P.

    Bilder

    • CityMark_Result_2013_02_05.png
      • 1,02 kB
      • 156 × 14
  • CityMark 0.1 - OpenGL 3D Benchmark

    • name22
    • 5. Februar 2013 um 18:55

    Ich sehe gar nichts... Das Bild am Ende wird nicht erstellt und von der eigentlichen Benchmark ist keine Spur. Ich hab also nur die Konsolenausgabe, in der auch keine Fehlermeldungen erkennbar sind.

  • Happy Glückwunsch Andy zum 47'ten

    • name22
    • 4. Februar 2013 um 15:58

    Alles Gute :D. Ich hoffe du stellst uns weiterhin dein immenses Fachwissen zur Verfügung. Feier schön und mach dir nen schönen Tag.;).

  • YouTube UDF mit API ?

    • name22
    • 3. Februar 2013 um 19:52

    Sag mal... Was soll denn das!? Du lieferst hier einen obskuren Beitrag in dem nirgendwo eine Frage steht außer im Titel. Dann sagst du, du hättest bereits Lösungen probiert nennst aber keine einzige bzw. wieso sie nicht funktioniert haben.
    Das alles wäre ja kein Problem, aber jetzt meinst du nach 4 Stunden bereits deinen Thread pushen zu müssen? 8| Du brauchst dich nicht wundern, dass bis jetzt keiner eine Lösung gepostet hat. Stell erstmal eine richtige Frage.
    Deinem jetzigen Thread entsprechend ürde meine Antwort nämlich folgendermaßen lauten: "Youtube Videos abspielen? Ganz einfach. Im Browser öffnen und auf abspielen drücken."

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™