GDI+: Die 2. (von Blume)

  • Hey Leute,

    Da ich ja grade GDI+ am lernen bin, ist ein kleines Script entstanden.
    Die Formel ist wirklich durch Zufall entstanden

    Spoiler anzeigen
    [autoit]


    #include <GDIPlus.au3>

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

    _GDIPlus_Startup() ;GDI+ starten

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

    Opt("GUIOnEventMode", 1) ;OnEvent Modus einschalten

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

    Global Const $iWidth = 400 ;Width Gui
    Global Const $iHeight = 300 ;Height Gui

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

    Global $hPen_Red = _GDIPlus_PenCreate(0xFFFF0000) ;Pen Rot
    Global $hPen_Yellow = _GDIPlus_PenCreate(0xFFFFFF00) ;Pen Gelb
    Global $hPen_Green = _GDIPlus_PenCreate(0xFF00FF00) ;Pen Grün
    Global $hPen_White = _GDIPlus_PenCreate(0xFFFFFFFF) ;Pen Weiß

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

    Global $hBrush_Black = _GDIPlus_BrushCreateSolid(0xFF000000) ;Für den schwarzen Hintergrund
    Global $i1_Start_X = 0, $i1_End_X = $iWidth ;X Start & X Ende für Linie 1
    Global $i1_Start_Y = 0, $i1_End_Y = $iHeight ;Y Start & Y Ende für Linie 1
    Global $i2_Start_X = $iWidth, $i2_End_X = 0 ;X Start & X Ende für Linie 2
    Global $i2_Start_Y = $iHeight, $i2_End_Y = 0 ;Y Start & Y Ende für Linie 2

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

    Global $hGui = GUICreate("GDI+", $iWidth, $iHeight) ;Gui erstellen
    GUISetOnEvent(-3, "_Exit") ;Bei Klick auf X (Schliessen), Funktion _Exit aufrufen
    GUISetState() ;Gui anzeigen

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

    Global $hWnd = _GDIPlus_GraphicsCreateFromHWND($hGui) ;HWND für _GDIPlus_* - Funktionen bekommen
    AdlibRegister("_Draw", 25) ;Funktion zum Zeichnen jede 25 MS aufrufen

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

    _GDIPlus_GraphicsFillRect($hWnd, 0, 0, $iWidth, $iHeight, $hBrush_Black) ;Hintergrund malen

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

    While 1
    Sleep(10) ;Damit das Programm am laufen bleibt
    WEnd

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

    Func _Draw()
    _GDIPlus_GraphicsDrawLine($hWnd, $i1_Start_X, $i1_Start_Y, $i1_End_X, $i1_End_Y, _GetRandomPen()) ;Linie 1 zeichnen
    _GDIPlus_GraphicsDrawLine($hWnd, $i2_Start_X, $i2_Start_Y, $i2_End_X, $i2_End_Y, _GetRandomPen()) ;Linie 2 zeichnen

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

    $i1_Start_X += 10 ;Ein bisschen Rechnen :D
    $i1_End_X -= 20 ;Ein bisschen Rechnen :D
    $i1_Start_Y += 30 ;Ein bisschen Rechnen :D
    $i1_End_Y -= 40 ;Ein bisschen Rechnen :D

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

    $i2_Start_X -= 10 ;Ein bisschen Rechnen :D
    $i2_End_X += 20 ;Ein bisschen Rechnen :D
    $i2_Start_Y -= 30 ;Ein bisschen Rechnen :D
    $i2_End_Y += 40 ;Ein bisschen Rechnen :D
    EndFunc

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

    Func _GetRandomPen()
    Switch Random(1, 4, 1)
    Case 1
    Return $hPen_Red
    Case 2
    Return $hPen_Yellow
    Case 3
    Return $hPen_Green
    EndSwitch
    Return $hPen_White
    EndFunc

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

    Func _Exit()
    _GDIPlus_BrushDispose($hBrush_Black) ;Brush releasen
    _GDIPlus_PenDispose($hPen_Red) ;Pen releasen
    _GDIPlus_PenDispose($hPen_Yellow) ;Pen releasen
    _GDIPlus_PenDispose($hPen_Green) ;Pen releasen
    _GDIPlus_PenDispose($hPen_White) ;Pen releasen
    _GDIPlus_GraphicsDispose($hWnd) ;HWND freigeben
    _GDIPlus_Shutdown() ;GDI+ beenden
    Exit
    EndFunc

    [/autoit]

    Lg, Blume :)

  • Sieht sehr gut aus :D .
    Mein Tipp wäre an dich, dass ich GDI+ wirlich nur lernen konnte, indem ich wirlich mir was in Paint gezeichnet habe und das umgesetzt hatte und noch besser hab ichs verstanden, als ich sogar ein kleines Spiel zu geschrieben hatte. Als ich angefangen hab mit GDI+ hab ich solange nichts verstanden bis ich mal heit ein größeres Projekt gemacht hatte, dann hab ich viele Befehle verstanden, die ich sons nie benutzt(@ Bitmaps) oder gefunden hätte (@ GDIP.au3).

    Nur keine Hektik - das Leben ist stressig genug

  • :D Sieht cool aus ich hab auch schonmal was gemacht durch Zufall was lustig aussah :D Rotation eines Vierecks ohne GraphicsClear, das sieht cool aus wenn man den Würfel kleiner werden lässt ;) Wenn ichs finde kann ichs mal posten.

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

  • Ich habs gefunden :D

    Spoiler anzeigen
    [autoit]

    #include <WinApi.au3>
    #include <GDIPlus.au3>
    #include <GuiConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    _GDIPlus_Startup()

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

    Global $iWidth = 500, $iHeight = 500

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

    $hWnd = GUICreate("Testgui", $iWidth, $iHeight)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
    GUISetState()

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

    $hDC = _WinAPI_GetDC($hWnd)
    $hDC_Buffer = _WinAPI_CreateCompatibleDC($hDC)
    $hGDI_Bitmap = _WinAPI_CreateCompatibleBitmap($hDC, $iWidth, $iHeight)
    _WinAPI_SelectObject($hDC_Buffer, $hGDI_Bitmap)

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

    $hGraphics = _GDIPlus_GraphicsCreateFromHDC($hDC_Buffer)
    _GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2)
    _GDIPlus_GraphicsClear($hGraphics, 0xFFFFFFFF)
    $hBrush_BK = _GDIPlus_BrushCreateSolid(0x10ffffff)
    $hMatrix = _GDIPlus_MatrixCreate()

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

    Global $Laeufe = 0, $TimerInit = TimerInit()
    Global $Rect_Width = $iWidth, $Rect_Height = $iHeight
    Global $Rect_delete = InputBox ("", "Bitte gib die Größe der Verkleinerung ein (z.B. 7):")

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

    While 1
    ;~ _GDIPlus_GraphicsFillRect($hGraphics, 0, 0, $iWidth, $iHeight, $hBrush_BK)
    _GDIPlus_MatrixTranslate($hMatrix, $iWidth / 2, $iHeight / 2, False)
    _GDIPlus_MatrixRotate($hMatrix, 1)
    _GDIPlus_MatrixTranslate($hMatrix, -($iWidth / 2), -($iHeight / 2), False)
    _GDIPlus_GraphicsSetTransform($hGraphics, $hMatrix)
    $hBrush = _GDIPlus_BrushCreateSolid ("0xFF"&Hex(Random (9999999, 99999999), 6))
    _GDIPlus_GraphicsFillRect($hGraphics, $iWidth / 2 - $Rect_Width / 2, $iHeight / 2 - $Rect_Height / 2, $Rect_Width, $Rect_Height, $hBrush)
    _GDIPlus_BrushDispose ($hBrush)
    $Rect_Width -= $Rect_delete
    $Rect_Height -= $Rect_delete
    _WinAPI_BitBlt($hDC, 0, 0, $iWidth, $iHeight, $hDC_Buffer, 0, 0, 0x00CC0020)
    WEnd

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

    Func _exit()
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>_exit

    [/autoit]


    Je nachdem was man benutzt kommen coole Sachen bei raus ^^

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake