Karo einteilung

  • Hallo,

    kann man mit der GDI Plus auch karos wie auf dem Karopapier Malen?

    Lg Pceumel

    Einmal editiert, zuletzt von pceumel (18. März 2009 um 13:55)

    • Offizieller Beitrag

    Hi pceumel,

    Zwei Dinge:

    Erstens: Deine Mailadresse für Benachrichtigungen vom Forum ist offenbar falsch, ich kriege die ganze Zeit die Bounces rein, das nervt. Bitte korrigiere die Adresse in deinen Einstellungen.

    Zweitens zur Frage: Bringt es dir irgendetwas, wenn wir dir das machen? Versuch doch bitte auch was selbst! Sonst lernst du doch nichts...

    peethebee

  • Hallo,
    wie würdest du denn ein Karopapier "von Hand" mit einem Bleistift auf ein weißes Blatt malen?
    GENAU so würde ichs mit gdi+ machen......

    ciao
    Andy

    • Offizieller Beitrag

    Ich habe Dir mal ein Beispiel erstellt:

    Spoiler anzeigen
    [autoit]


    #include <GDIPlus.au3>
    #include <WindowsConstants.au3>

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

    _GDIPlus_Startup()
    $hGUI = GUICreate('GDI+', 400, 400)
    GUISetState()

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(400, 400, $hGraphic)
    $hGraphicBuff = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    For $y = 0 To 39
    For $x = 0 To 39
    _GDIPlus_GraphicsDrawRect($hGraphicBuff, $x * 10, $y * 10, 10, 10)
    Next
    Next
    _GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)
    GUIRegisterMsg($WM_PAINT, 'WM_PAINT')

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

    Do
    Until GUIGetMsg() = -3

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

    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()

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

    Func WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)
    EndFunc ;==>WM_PAINT

    [/autoit]

    @pee: Das zeichnen mit GDI+ ist nicht ganz ohne, weil man einen zusätzlichen Bitmap-"Buffer" verwenden muss (Danke nochmal an progandy :) ).

  • @ oscar
    Hilfe bemüht und for/to Schleife "ergänzt". Deins ist ein bissl "eleganter", aber meins dafür "wie von Hand gemalt"^^

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GDIPlus.au3>

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

    Opt('MustDeclareVars', 1)

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

    _Main()

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

    Func _Main()
    Local $hGUI, $hWnd, $hGraphic, $hPen

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

    ; Create GUI
    $hGUI = GUICreate("GDI+", 400, 400)
    $hWnd = WinGetHandle("GDI+")
    GUISetState()

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

    ; Draw line
    _GDIPlus_Startup ()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hWnd)
    $hPen = _GDIPlus_PenCreate ()
    for $x=0 to 400 Step 20
    _GDIPlus_GraphicsDrawLine ($hGraphic, $x, 0, $x, 400, $hPen)
    Next
    For $y=0 to 400 Step 20
    _GDIPlus_GraphicsDrawLine ($hGraphic, 0, $y, 400, $y, $hPen)
    next
    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

    ; Clean up resources
    _GDIPlus_PenDispose ($hPen)
    _GDIPlus_GraphicsDispose ($hGraphic)
    _GDIPlus_Shutdown ()

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

    EndFunc ;==>_Main

    [/autoit]
  • Zitat

    Andy: Bei Dir fehlt die WM_PAINT-Funktion. Sonst wird die Graphic nicht neu gezeichnet, wenn das Fenster von einem anderen Fenster verdeckt und dann wieder sichtbar wird.


    *flüstermodeON*
    psssstttt...das kommt doch erst im nächsten Semester dran :rolleyes:
    *flüstermodeOFF*