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

  • ;/ Label Problem

    • name22
    • 24. Februar 2012 um 18:44
    Zitat

    Tut mir leid, aber ich brauche es ohne AdlibRegister , darum geht es ja, dass er bei hoher Wechselgeschwindigkeit nicht flackert.


    Dann musst du mal schauen ob du irgendwie etwas an dem Doublebuffersystem von Windows ändern kannst, oder das ganze dann doch mit GDI+ machen.
    Wieso willst du, dass das Label öfter aktualisiert wird, als das menschliche Auge/Gehirn erfassen kann? :huh:

  • Anti ACTA

    • name22
    • 24. Februar 2012 um 18:27
    Zitat

    Man will scharf gegen Urheberrechtsverletzungen, vor allem bei Musikstücken vorgehen... wäre mir neu, das diese in dem Forum hier ein Thema wären...


    Naja... Nicht in allen Bereichen. Bei den Spielen möglicherweise, aber da haben wir uns bis jetzt ja vorsichtig bewegt. Aber wenn ich mir Doodle Jump für PC angucke, ist es doch irrelevant ob das nun Musik oder Bild ist ^^.

  • ;/ Label Problem

    • name22
    • 24. Februar 2012 um 18:13

    letsgo Ich glaube AdlibRegister wäre da noch die einfachere Lösung. Und in dem Fall macht es ja das selbe. ^^

  • ;/ Label Problem

    • name22
    • 24. Februar 2012 um 18:05

    Ich sehe mehrere Probleme in deinem Script... Das Flackern liegt einfach daran, dass du das Label in einem gefühlten 10ms Intervall updatest. Das ist viiieel zu schnell, und lesen kann das so schnell eh keiner ;).
    Außerdem solltest du das Label nicht in der Hauptschleife mit GUIGetMsg verwalten, weil der Befehl bei Bedarf automatisch den Scriptablauf verzögert (wenn die Maus nicht innerhalb der GUI ist). Benutze lieber Adlibregister mit einem sinnvolleren Intervall (wie z.B. 100-200ms) und registrier damit eine extra Funktion die das mit dem Label übernimmt.

  • Bild bearbeiten

    • name22
    • 24. Februar 2012 um 16:17

    Wie wäre es wenn du die drei Farbkomponenten (RGB) beider Farben jeweils einzeln addierst, und dann durch zwei teilst? Dann hast du die exakte (mathematische) Mitte zwischen den beiden Farbtönen. Aber ob das dann auch so aussieht weiß ich nicht.

  • Fenster nicht verlassen

    • name22
    • 24. Februar 2012 um 15:50

    Das wäre aber blödsinnig... Dann müssten sie einen ja auch verklagen, wenn man ein Youtube Video aufruft. Ist im Grunde auch nur ein Parameter. Ich halte es für unwahrscheinlich, dass der Google Konzern so etwas "übersieht", oder das das irgendwie Konsequenzen haben könnte, wenn man das Verhalten eines ganz normalen Browsers emuliert. Der Browser bekommt per HTTP schließlich die selbe Textdatei zugeschickt, von der hier die Rede ist.

  • Fenster nicht verlassen

    • name22
    • 24. Februar 2012 um 15:02

    Klar funktioniert das. Ich weiß nicht wie du das versucht hast, aber das hier z.B. funktioniert: http://translate.google.de/translate_a/t?client=t&text=Buch&hl=de&sl=de&tl=en&multires=1&otf=1&pc=1&ssel=0&tsel=0&sc=1

  • Fenster nicht verlassen

    • name22
    • 24. Februar 2012 um 14:40
    Zitat

    und es kann euch eigentlich egal sein, ob ich so selbstlos und dermaßen hilfsbereit bin und meinen lösungsweg präsentiere.


    Aha :huh: . Mir persönlich ist es auch egal, aber es kam mir so vor als ob der Thread Ersteller die Lösung zu seinem Problem überlesen hat.

  • Fenster nicht verlassen

    • name22
    • 24. Februar 2012 um 14:28
    Zitat

    BlockInput() only affects user-input. Input from functions like Send() or MouseMove() still work.


    Ups ^^. Ich glaube ich hab das mit was anderem verwechselt.

  • Fenster nicht verlassen

    • name22
    • 24. Februar 2012 um 14:20

    Ähm...

    Zitat von Twodollarbillie

    translate.google.de/translate_a/t?client=t&text=test&hl=de&sl=en&tl=de&multires=1&oc=6&prev=btn&ssel=3&tsel=6&sc=1
    dieses file kannst du runterladen und auslesen. die übersetzung steht in dem txt-file


    Wie bereits mehrfach gesagt wurde, lässt sich der Google Übersetzer Problemlos komplett über die URL steuern und die Übersetzung kannst du einfach runterladen. Wo liegt das Problem? :huh:

  • Fenster nicht verlassen

    • name22
    • 24. Februar 2012 um 13:41
    Zitat

    BlockInput()


    Dann würden die Send Befehle aber auch nicht mehr funktionieren, denke ich.
    Wie wäre es denn, wenn du stattdessen einfach die IE Funktionen verwendest um z.B. Formulardaten einzugeben oder Buttons zu klicken? Wenn du direkt das IE Objekt ansteuerst ist es irrelevant, wo das IE Fenster ist, ob es aktiv, oder überhaupt sichtbar ist.
    Außerdem kannst du den Google Übersetzer größtenteils über URLs steuern... Achte mal auf die Adressleiste wenn du etwas in das Übersetzungsfeld eingibst.

  • InetGet() oder _FTP_FileGet() ohne Speicherung im TIF

    • name22
    • 24. Februar 2012 um 13:33

    Du könntest es ja mal per WinHTTP versuchen. Es gibt eine sehr gut dokumentierte UDF dafür im englischen Forum. Ich weiß leider nicht wie die Zwischenspeicherung bei WinHTTP gehandhabt wird.
    Oder du könntest es auf dem direkten Weg mit den TCP Funktionen versuchen. Ich hab mal einen Downloader gemacht der nach diesem Prinzip arbeitet. Es könnte geringfügig langsamer sein, als die anderen Methoden, aber du hättest die volle Kontrolle darüber was wo gespeichert wird.

  • Hallo Community :D

    • name22
    • 23. Februar 2012 um 19:39

    Na dann. Ein leicht verspätetes Herzlich Willkommen und weiterhin viel Spaß im Forum. ;)

  • _ispressed If-Abfrage

    • name22
    • 22. Februar 2012 um 15:49

    Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <Misc.au3>

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

    Global $iTargetKeyIndex = 3
    Global $aKeys[16][3]

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

    $vU32Dll = DllOpen("user32.dll")
    OnAutoItExitRegister("_Shutdown")

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

    #region Keys
    $aKeys[0][0] = "1"
    $aKeys[0][1] = "31"
    $aKeys[0][2] = 1
    $aKeys[1][0] = "2"
    $aKeys[1][1] = "32"
    $aKeys[1][2] = 1
    $aKeys[2][0] = "3"
    $aKeys[2][1] = "33"
    $aKeys[2][2] = 1
    $aKeys[3][0] = "4"
    $aKeys[3][1] = "34"
    $aKeys[3][2] = 1
    $aKeys[4][0] = "5"
    $aKeys[4][1] = "35"
    $aKeys[4][2] = 1
    $aKeys[5][0] = "6"
    $aKeys[5][1] = "36"
    $aKeys[5][2] = 1
    $aKeys[6][0] = "7"
    $aKeys[6][1] = "37"
    $aKeys[6][2] = 1
    $aKeys[7][0] = "8"
    $aKeys[7][1] = "38"
    $aKeys[7][2] = 1
    $aKeys[8][0] = "9"
    $aKeys[8][1] = "39"
    $aKeys[8][2] = 1
    $aKeys[9][0] = "0"
    $aKeys[9][1] = "30"
    $aKeys[9][2] = 1

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

    $aKeys[10][0] = "q"
    $aKeys[10][1] = "51"
    $aKeys[10][2] = 2
    $aKeys[11][0] = "w"
    $aKeys[11][1] = "57"
    $aKeys[11][2] = 2
    $aKeys[12][0] = "e"
    $aKeys[12][1] = "45"
    $aKeys[12][2] = 2
    $aKeys[13][0] = "r"
    $aKeys[13][1] = 52
    $aKeys[13][2] = 2
    $aKeys[14][0] = "t"
    $aKeys[14][1] = "54"
    $aKeys[14][2] = 2
    $aKeys[15][0] = "z"
    $aKeys[15][1] = "5A"
    $aKeys[15][2] = 2
    #endregion Keys

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

    While Sleep(40)
    For $i = 0 To 15
    If _IsPressed($aKeys[$i][1], $vU32Dll) Then
    If $iTargetKeyIndex = $i Then
    MsgBox(64, "Info", "Richtige Taste (" & $aKeys[$i][0] & ").")
    Else
    If $aKeys[$i][2] = $aKeys[$iTargetKeyIndex][2] Then
    MsgBox(64, "Info", "Richtige Gruppe")
    Else
    MsgBox(64, "Info", "Weit daneben")
    EndIf
    EndIf
    EndIf
    Next
    WEnd

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

    Func _Shutdown()
    DllClose($vU32Dll)
    EndFunc

    [/autoit]
  • _ispressed If-Abfrage

    • name22
    • 22. Februar 2012 um 14:18

    Das mit dem 2-dimensionalen Array wird so wie ich es mir gedacht hab nicht wirklich klappen. Besser wäre es vielleicht so:
    $Array[105][3] ;erster Index = Anzahl der Tasten
    $Array[0][0] = "1" ;Name der Taste ("e", "1", "Escape", "Return" etc.)
    $Array[0][1] = "31" ;_IsPressed ID
    $Array[0][2] = 2 ;Tastengruppe zu der die Taste gehört.

    In einer For Schleife kannst du dann jede einzelne Taste abfragen:
    For $i = 0 To 104
    If _IsPressed($Array[$i][1]) Then ...
    Next
    Das machst du wiederholt im Abstand von z.B. 30-50ms.

    Falls ein Tastendruck registriert wurde, fragst du als erstes ab, ob es die richtige Taste ist. Falls nicht, fragst du ab, ob es die richtige Gruppe ist (Array-Index 2). Dann kannst du für jeden Fall eine entsprechende Antwort formulieren. Das ganze lässt sich natürlich noch weiter ausbauen.

  • GDIPlus Fraktale

    • name22
    • 22. Februar 2012 um 13:16

    UEZ, BadBunny: Danke :D.

    Zitat

    Man müsste mal eine eigene Form erstellen^^


    Dann leg mal los ;).

  • _ispressed If-Abfrage

    • name22
    • 22. Februar 2012 um 13:13

    Du könntest die Tasten in einem zweidimensionalem Array speichern. Die erste Dimension würde für die verschiedenen Bereiche der Tastatur stehen, während die zweite die einzelnen Tasten (und evtl. auch ihre IDs für _IsPressed) beinhalten würde.
    Dieses Array fragst du in bestimmten Zeitabständen (z.B. 30-50ms) mithilfe von 2 For Schleifen ab. Eine für den ersten Index und eine für den Zweiten. Wenn eine Taste gedrückt wird, und es ist nicht die richtige, kannst du danach direkt abfragen ob es denn der richtige Bereich ist (mit dem ersten Index). Je nach Ergebnis kannst du dann verschiedene MsgBoxes generieren.

  • GDIPlus Fraktale

    • name22
    • 22. Februar 2012 um 13:04

    Ich hab hier im Forum schon einige Fraktal-Scripts gesehen, und da wollte ich es einmal selbst versuchen. :)
    Diese 4 Programme sind dabei herausgekommen, ich würde mich über Rückmeldungen freuen ;).
    Für jedes Script wird die GDIP.au3 benötigt, da ich es für blödsinnig hielt so viele Funktionen manuell in jedes Script zu kopieren. (Falls ihr je gedacht habt, dass die standard UDF GDIPlus.au3 unvollständig scheint, werdet ihr den Download nicht bereuen ^^.)

    Drachenkurve

    [Blockierte Grafik: http://upload.wikimedia.org/wikipedia/de/thumb/d/d6/Drachen_p_2.PNG/200px-Drachen_p_2.PNG]

    [autoit]

    #include <GDIP.au3>

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

    $iWidth = 1000
    $iHeight = 1000
    $iDistance = 50
    $iIterations = 13 ;Bitte vorsichtig erhöhen, da ALLE Koordinaten des Fraktals zum selben Zeitpunkt im Speicher sind.

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

    $hWnd = GUICreate("GDI+ Dragon-Curve | Iterations: " & $iIterations, $iWidth, $iHeight)
    GUISetState()

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

    _GDIPlus_Startup()

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

    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphics)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)
    _GDIPlus_GraphicsClear($hGraphics, 0xFFFFFFFF)

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

    $hPen = _GDIPlus_PenCreate(0xFF000000, 1)
    $hPath = _GDIPlus_PathCreate()

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

    _GDIPlus_PathAddLine($hPath, 1, 0, 0, 0)
    _GDIPlus_PathAddLine($hPath, 0, 0, 0, 1)
    _GDIPlus_PathAddLine($hPath, 0, 1, 1, 1)
    _GDIPlus_PathAddLine($hPath, 1, 1, 1, 2)

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

    For $iI = 1 To $iIterations
    $aPoint = _GDIPlus_PathGetLastPoint($hPath)
    $hPathBuffer = _GDIPlus_PathClone($hPath)

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

    $hMatrix_R = _GDIPlus_MatrixCreate()
    _GDIPlus_MatrixTranslate($hMatrix_R, $aPoint[0], $aPoint[1])
    _GDIPlus_MatrixRotate($hMatrix_R, 90)
    _GDIPlus_MatrixTranslate($hMatrix_R, -$aPoint[0], -$aPoint[1])

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

    _GDIPlus_PathTransform($hPathBuffer, $hMatrix_R)
    _GDIPlus_PathReverse($hPathBuffer)
    _GDIPlus_PathAddPath($hPath, $hPathBuffer, False)

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

    _GDIPlus_PathDispose($hPathBuffer)
    _GDIPlus_MatrixDispose($hMatrix_R)
    Next

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

    Do
    $aBounds = _GDIPlus_PathGetWorldBounds($hPath, 0, $hPen)
    If $aBounds[2] > $aBounds[3] Then
    $nScale = ($iWidth - $iDistance * 2) / $aBounds[2]
    Else
    $nScale = ($iHeight - $iDistance * 2) / $aBounds[3]
    EndIf

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

    $hMatrix = _GDIPlus_MatrixCreate()
    _GDIPlus_MatrixScale($hMatrix, $nScale, $nScale)
    _GDIPlus_PathTransform($hPath, $hMatrix)
    _GDIPlus_MatrixDispose($hMatrix)

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

    $aBounds = _GDIPlus_PathGetWorldBounds($hPath, 0, $hPen)
    Until Abs(($iWidth - $iDistance * 2) - $aBounds[2]) <= 10 Or Abs(($iHeight - $iDistance * 2) - $aBounds[3]) <= 10

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

    $hMatrix = _GDIPlus_MatrixCreate()
    _GDIPlus_MatrixTranslate($hMatrix, -$aBounds[0] + $iWidth / 2 - $aBounds[2] / 2, -$aBounds[1] + $iHeight / 2 - $aBounds[3] / 2)
    _GDIPlus_PathTransform($hPath, $hMatrix)
    _GDIPlus_MatrixDispose($hMatrix)

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

    _GDIPlus_GraphicsDrawPath($hBuffer, $hPath, $hPen)
    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $iWidth, $iHeight)

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

    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_PathDispose($hPath)
    _GDIPlus_Shutdown()

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

    While GUIGetMsg() <> -3
    WEnd

    [/autoit]
    Koch-Kurve

    [Blockierte Grafik: http://upload.wikimedia.org/wikipedia/commons/thumb/b/b8/Kochkurve.png/600px-Kochkurve.png]

    [autoit]

    #include <GDIP.au3>

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

    $iWidth = 800
    $iHeight = 300
    $iDistance = 10

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

    $nAngle = 60
    $iIterations = 8 ;Bitte vorsichtig erhöhen, da ALLE Koordinaten des Fraktals zum selben Zeitpunkt im Speicher sind.

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

    $hWnd = GUICreate("GDI+ Koch-Curve | Iterations: " & $iIterations, $iWidth, $iHeight)
    GUISetState()

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

    _GDIPlus_Startup()

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

    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphics)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)
    _GDIPlus_GraphicsClear($hGraphics, 0xFFFFFFFF)

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

    $hPen = _GDIPlus_PenCreate(0xFF000000, 1)
    $hPath = _GDIPlus_PathCreate()

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

    ;~ _GDIPlus_PathStartFigure($hPath)
    _GDIPlus_PathAddLine($hPath, 0, 0, 1, 0)

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

    For $iI = 1 To $iIterations
    $hPathBuffer = _GDIPlus_PathClone($hPath)

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

    $aPoint = _GDIPlus_PathGetLastPoint($hPath)
    $hMatrix = _GDIPlus_MatrixCreate()
    _GDIPlus_MatrixTranslate($hMatrix, $aPoint[0], $aPoint[1])
    _GDIPlus_MatrixRotate($hMatrix, -$nAngle)

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

    _GDIPlus_PathTransform($hPathBuffer, $hMatrix)
    _GDIPlus_PathAddPath($hPath, $hPathBuffer, True)
    _GDIPlus_MatrixDispose($hMatrix)
    _GDIPlus_PathDispose($hPathBuffer)

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

    $hPathBuffer = _GDIPlus_PathClone($hPath)
    _GDIPlus_PathReverse($hPathBuffer)

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

    $aPoint = _GDIPlus_PathGetLastPoint($hPath)
    $hMatrix = _GDIPlus_MatrixCreate()
    _GDIPlus_MatrixSetElements($hMatrix, -1, 0, 0, 1, $aPoint[0] * 2, 0)

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

    _GDIPlus_PathTransform($hPathBuffer, $hMatrix)
    _GDIPlus_PathAddPath($hPath, $hPathBuffer, True)
    _GDIPlus_MatrixDispose($hMatrix)
    _GDIPlus_PathDispose($hPathBuffer)
    Next

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

    ;~ _GDIPlus_PathCloseFigure($hPath)

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

    Do
    $aBounds = _GDIPlus_PathGetWorldBounds($hPath, 0, $hPen)
    If $aBounds[2] > $aBounds[3] Then
    $nScale = ($iWidth - $iDistance * 2) / $aBounds[2]
    Else
    $nScale = ($iHeight - $iDistance * 2) / $aBounds[3]
    EndIf

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

    $hMatrix = _GDIPlus_MatrixCreate()
    _GDIPlus_MatrixScale($hMatrix, $nScale, $nScale)
    _GDIPlus_PathTransform($hPath, $hMatrix)
    _GDIPlus_MatrixDispose($hMatrix)

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

    $aBounds = _GDIPlus_PathGetWorldBounds($hPath, 0, $hPen)
    Until Abs(($iWidth - $iDistance * 2) - $aBounds[2]) <= 10 Or Abs(($iHeight - $iDistance * 2) - $aBounds[3]) <= 10

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

    $hMatrix = _GDIPlus_MatrixCreate()
    _GDIPlus_MatrixTranslate($hMatrix, -$aBounds[0] + $iWidth / 2 - $aBounds[2] / 2, -$aBounds[1] + $iHeight / 2 - $aBounds[3] / 2)
    _GDIPlus_PathTransform($hPath, $hMatrix)
    _GDIPlus_MatrixDispose($hMatrix)

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

    _GDIPlus_GraphicsDrawPath($hBuffer, $hPath, $hPen)
    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $iWidth, $iHeight)

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

    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_PathDispose($hPath)
    _GDIPlus_Shutdown()

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

    While GUIGetMsg() <> -3
    WEnd

    [/autoit]
    Sierpinski-Dreieck

    [Blockierte Grafik: http://upload.wikimedia.org/wikipedia/commons/thumb/a/ad/Sierpinski-Trigon-7.svg/300px-Sierpinski-Trigon-7.svg.png]

    [autoit]

    #include <GDIP.au3>
    #include <Array.au3>

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

    $iWidth = 800
    $iHeight = 800

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

    $iIterations = 8 ;Bitte vorsichtig erhöhen, da ALLE Koordinaten des Fraktals zum selben Zeitpunkt im Speicher sind.

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

    $hWnd = GUICreate("GDI+ Sierpinski-Triangle | Iterations: " & $iIterations, $iWidth, $iHeight)
    GUISetState()

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

    _GDIPlus_Startup()

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

    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphics)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)
    _GDIPlus_GraphicsSetPixelOffsetMode($hGraphics, 2)
    _GDIPlus_GraphicsClear($hBuffer, 0xFFFFFFFF)

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

    $hBrush = _GDIPlus_BrushCreateSolid()

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

    Global $aCoord[3 ^ ($iIterations + 1) + 1][2] = [[3]]
    $aCoord[1][0] = 0
    $aCoord[1][1] = 0
    $aCoord[2][0] = $iWidth
    $aCoord[2][1] = 0
    $aCoord[3][0] = $iWidth / 2
    $aCoord[3][1] = Sqrt($iWidth ^ 2 - ($iWidth / 2) ^ 2)

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

    For $iI = 1 To $iIterations
    $aOld = $aCoord
    $aCoord[0][0] = 0
    For $i = 1 To $aOld[0][0] Step 3
    $nTriBX = $aOld[$i + 2][0] - $aOld[$i][0]
    $nTriCX = ($aOld[$i + 2][0] - $aOld[$i][0]) / 2
    $nTriCY = ($aOld[$i + 2][1] - $aOld[$i][1]) / 2

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

    $aCoord[0][0] += 1
    $aCoord[$aCoord[0][0]][0] = $aOld[$i][0]
    $aCoord[$aCoord[0][0]][1] = $aOld[$i][1]

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

    $aCoord[0][0] += 1
    $aCoord[$aCoord[0][0]][0] = $aOld[$i][0] + $nTriBX
    $aCoord[$aCoord[0][0]][1] = $aOld[$i][1]

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

    $aCoord[0][0] += 1
    $aCoord[$aCoord[0][0]][0] = $aOld[$i][0] + $nTriCX
    $aCoord[$aCoord[0][0]][1] = $aOld[$i][1] + $nTriCY

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

    $aCoord[0][0] += 1
    $aCoord[$aCoord[0][0]][0] = $aOld[$i][0] + $nTriBX
    $aCoord[$aCoord[0][0]][1] = $aOld[$i][1]

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

    $aCoord[0][0] += 1
    $aCoord[$aCoord[0][0]][0] = $aOld[$i + 1][0]
    $aCoord[$aCoord[0][0]][1] = $aOld[$i][1]

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

    $aCoord[0][0] += 1
    $aCoord[$aCoord[0][0]][0] = $aOld[$i][0] + $nTriBX + $nTriCX
    $aCoord[$aCoord[0][0]][1] = $aOld[$i][1] + $nTriCY

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

    $aCoord[0][0] += 1
    $aCoord[$aCoord[0][0]][0] = $aOld[$i][0] + $nTriCX
    $aCoord[$aCoord[0][0]][1] = $aOld[$i][1] + $nTriCY

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

    $aCoord[0][0] += 1
    $aCoord[$aCoord[0][0]][0] = $aOld[$i][0] + $nTriBX + $nTriCX
    $aCoord[$aCoord[0][0]][1] = $aOld[$i][1] + $nTriCY

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

    $aCoord[0][0] += 1
    $aCoord[$aCoord[0][0]][0] = $aOld[$i + 2][0]
    $aCoord[$aCoord[0][0]][1] = $aOld[$i + 2][1]
    Next
    Next

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

    Dim $aTmp[4][2] = [[3]]
    For $i = 1 To $aCoord[0][0] Step 3
    $aTmp[1][0] = $aCoord[$i][0]
    $aTmp[1][1] = $iHeight - $aCoord[$i][1]
    $aTmp[2][0] = $aCoord[$i + 1][0]
    $aTmp[2][1] = $iHeight - $aCoord[$i + 1][1]
    $aTmp[3][0] = $aCoord[$i + 2][0]
    $aTmp[3][1] = $iHeight - $aCoord[$i + 2][1]
    _GDIPlus_GraphicsFillPolygon($hBuffer, $aTmp, $hBrush)
    Next

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

    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $iWidth, $iHeight)

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

    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_Shutdown()

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

    While GUIGetMsg() <> -3
    WEnd

    [/autoit]
    Sierpinski-Dreieck v2.0

    Diese Version basiert auf der verarbeitung von Bitmaps in einem IFS. D.h. es können auch Bilder oder Ellipsen als Grundobjekt zur Konstruktion des Fraktals verwendet werden (dazu muss lediglich eine Zeile im Code verändert werden). Die entsprechende Stelle findet ihr in Zeile 22-24.

    [autoit]

    #include <GDIP.au3>

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

    $iWidth = 1150
    $iHeight = Sqrt($iWidth ^ 2 - ($iWidth / 2) ^ 2)
    $iIterations = 5 ;Bitte vorsichtig erhöhen, da ALLE Koordinaten des Fraktals zum selben Zeitpunkt im Speicher sind.

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

    $hWnd = GUICreate("GDI+ Sierpinski-Triangle | Iterations: " & $iIterations, $iWidth, $iHeight)
    GUISetState()

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

    _GDIPlus_Startup()

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

    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap1 = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphics)
    $hBitmap2 = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphics)
    $hBuffer1 = _GDIPlus_ImageGetGraphicsContext($hBitmap1)
    $hBuffer2 = _GDIPlus_ImageGetGraphicsContext($hBitmap2)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer1, 2)
    _GDIPlus_GraphicsSetInterpolationMode($hBuffer1, 2)
    _GDIPlus_GraphicsSetInterpolationMode($hBuffer2, 2)
    _GDIPlus_GraphicsClear($hGraphics, 0xFFFFFFFF)

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

    ;~ Dim $aPoints[4][2] = [[3],[0, 0],[$iWidth, 0],[$iWidth / 2, $iHeight]]
    ;~ _GDIPlus_GraphicsFillPolygon($hBuffer1, $aPoints)
    _GDIPlus_GraphicsFillEllipse($hBuffer1, $iWidth / 2 - $iHeight / 2, 0, $iHeight, $iHeight) ;Durch beliebige geometrische Figur ersetzen. Bilder sind auch möglich.

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

    For $iI = 1 To $iIterations
    If Mod($iI, 2) Then
    $hBuffer = $hBuffer2
    $hBitmap = $hBitmap1
    Else
    $hBuffer = $hBuffer1
    $hBitmap = $hBitmap2
    EndIf
    _GDIPlus_GraphicsClear($hBuffer, 0)
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $hBitmap, 0, 0, $iWidth / 2, $iHeight / 2)
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $hBitmap, $iWidth / 2, 0, $iWidth / 2, $iHeight / 2)
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $hBitmap, $iWidth / 4, $iHeight / 2, $iWidth / 2, $iHeight / 2)
    Next

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

    If Mod($iIterations + 1, 2) Then
    $hBuffer = $hBuffer2
    $hBitmap = $hBitmap1
    Else
    $hBuffer = $hBuffer1
    $hBitmap = $hBitmap2
    EndIf
    _GDIPlus_GraphicsTranslateTransform($hGraphics, $iWidth / 2, $iHeight / 2)
    _GDIPlus_GraphicsRotateTransform($hGraphics, 180)
    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, -$iWidth / 2, -$iHeight / 2, $iWidth, $iHeight)

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

    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_GraphicsDispose($hBuffer1)
    _GDIPlus_GraphicsDispose($hBuffer2)
    _GDIPlus_BitmapDispose($hBitmap1)
    _GDIPlus_BitmapDispose($hBitmap2)
    _GDIPlus_Shutdown()

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

    While GUIGetMsg() <> -3
    WEnd

    [/autoit]


    Jedes dieser Fraktale wird nach dem IFS Prinzip generiert. (Das Grundobjekt wird durch eine endliche Anzahl von Funktionen, die aus einer Matrix und einem Verschiebungsvektor bestehen jeweils kopiert, dann verkleinert, rotiert und verschoben. Dieser Vorgang wird je nach gewünschter Iterationstiefe beliebig oft wiederholt.) Dabei macht man sich die Selbstähnlichkeit der Fraktale zunutze.

    Dateien

    Dragon-Curve.au3 2,57 kB – 383 Downloads Koch-Curve.au3 2,83 kB – 485 Downloads Sierpinski-Triangle v1.0.au3 2,97 kB – 447 Downloads Sierpinski-Triangle v2.0.au3 2,27 kB – 383 Downloads
  • _ispressed If-Abfrage

    • name22
    • 22. Februar 2012 um 12:31

    Soll das eine Art Trainingsspiel werden, oder wieso drückt dein Programm nicht direkt für den fast blinden Anwender die F5 Taste? :huh:

  • GDIPlus Digitaluhr

    • name22
    • 21. Februar 2012 um 22:23

    UEZ Deinen Post bezüglich des Fonts hab ich doch glatt überlesen... Das wäre auch eine Idee, das Font einfach per MemFont ins Script zu packen. Aber davor möchte ich lieber erstmal eine freie Auswahl des Fonts ermöglichen ;).

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™