Bild 'zuschneiden' wahrscheinlich GDI+

  • Hi,

    ich würde gerne wissen, wie ich ein Bild zugeschnitten in einer GUI anzeigen lassen kann.
    Also..
    Ich habe auf meinem Desktop eine HD Datei und die selbe in nicht HD. Die nicht HD wird in meiner normalen GUI angezeigt - kein Problem ist ja ganz normal. Jetzt will ich dass wenn der User STRG drückt {_IsPressed("11") Then} ein anderes Bild oben links in der GUI erscheint, nämlich, das HD Bild zugeschnitten auf die Aktuelle Maus Position.
    Das HD Bild ist genau doppelt so 'scharf' wie das normale, also normal 1000px Breite, HD 2000px. Ist es möglich mit GDI+ einen bestimmten Teil eines Bildes anzuzeigen?
    Wenn Fragen auftreten, stellt sie, ich weiß es ist nicht optimal beschrieben, das ist bestimmt auch der grund wieso ich auf Google nichts finde..

    Lg Phil-IT

    Einmal editiert, zuletzt von philipp (1. September 2014 um 14:00)

  • scheint das richtige zu sein:D aber ich komm damit nicht klar. Angenommen meine Datei am Desktop heißt "hd.jpg", (falls es mit jpg Dateien nicht geht dann halt hd.bmp), und ich will von 100, 100 nach 200, 200 - wie muss dann der Befehl heißen?

    *EDIT: Ich habe eine andere Lösung gefunden! Danke für den oberen Tip ich hab dadurch nochmal was anderes auf google gefunden - mein code jetzt:

    [autoit]


    $pos = GUIGetCursorInfo()
    _GDIPlus_GraphicsDrawImageRectRect($g, _GDIPlus_ImageLoadFromFile("hd.jpg"), ($pos[0]*2)-50, ($pos[1]*2)-50, 100, 100, 0, 0, 200, 200)

    [/autoit]

    Einmal editiert, zuletzt von philipp (1. September 2014 um 14:00)

  • Die frage die du dir stellen solltest, willst du das image zugeschnitten bekommen oder willst du es lediglich stretchen.
    Den wenn du es nur stretchen willst u. es als Gui Hintergrund fungieren soll reicht auch Guictrlcreatepic.

    Ansonsten:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Gdiplus.au3>

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

    _GDIPlus_Startup()

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

    ;größe des images u. des Guis
    $gui_w = 450
    $gui_h = 350

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

    ;schnitt position
    $x_pos = 0
    $y_pos = 0

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

    $hgui = GUICreate("Test", $gui_w, $gui_h, -1, -1)
    GUISetState(@SW_SHOW)

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

    $bmp_l = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\hd.jpg")
    $hgr = _GDIPlus_GraphicsCreateFromHWND($hgui)

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

    $bmp_new = _GDIPlus_BitmapCloneArea($bmp_l, $x_pos, $y_pos, $gui_w, $gui_h, $GDIP_PXF32ARGB)

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

    _GDIPlus_GraphicsDrawImageRect($hgr, $bmp_new, 0, 0, $gui_w, $gui_h)

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    _GDIPlus_BitmapDispose($bmp_l)
    _GDIPlus_BitmapDispose($bmp_new)
    _GDIPlus_GraphicsDispose($hgr)
    _GDIPlus_Shutdown()
    Exit

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

    EndSwitch
    WEnd

    [/autoit]