GDI+ Fehler => Bild vergrößern

  • Hey@all

    Hoffe ihr könnt meinen Skript korrigieren:
    Ich erhalte ein Schwarzes Bild.
    Meine Absicht ist, dass ich ein kleines Bild 100x100 auf @desktopheight und width abänder
    ( also ich will das bild vergrößern )

    [autoit]


    #include <ScreenCapture.au3>
    #include <GDIPlus.au3>
    _GDIPlus_Startup()
    $hBmp=@ScriptDir&"\test.jpg"
    Global $Form1 = GUICreate("Test", 285, 228, -1, -1)
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($Form1)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(@DesktopWidth, @DesktopHeight, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    $HBITMAP_Screenshot1 = _ScreenCapture_Capture($hBmp,10,10,1000,100)
    $hBitmap1 = _GDIPlus_BitmapCreateFromHBITMAP($HBITMAP_Screenshot1)
    _WinAPI_DeleteObject($HBITMAP_Screenshot1)
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $hBitmap1, 0, 0,@DesktopWidth,@DesktopHeight)
    _GDIPlus_ImageSaveToFile($hBitmap,$hBmp)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_BitmapDispose($hBitmap1)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hBuffer)
    _WinAPI_DeleteObject($hBmp)
    _GDIPlus_Shutdown()

    [/autoit]

    thx4help :thumbup:

    Nur keine Hektik - das Leben ist stressig genug

  • Hi,

    wenn du folgende Zeilen änderst:

    [autoit]

    _GDIPlus_GraphicsDrawImageRect($hBuffer, $hBitmap1, 0, 0,@DesktopWidth,@DesktopHeight)
    _GDIPlus_ImageSaveToFile($hBitmap,$hBmp)

    [/autoit]

    zu

    [autoit]

    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap1, 0, 0,@DesktopWidth,@DesktopHeight)
    _GDIPlus_ImageSaveToFile($hGraphic,$hBmp)

    [/autoit]

    erhälst du schonmal deinen Screenshot. Wie du den jetzt vergrößerst ist die nächste Frage.

    Gruß

    Prajoss

    "Never touch a running System!"

  • Vergrößern mit:


    [autoit]


    $TestPic = _GDIPlus_ImageLoadFromFile($test)

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

    _GDIPlus_GraphicsDrawImageRect($Backbuffer, $TestPic, 0, 0, 500, 500)

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

    _GDIPlus_GraphicsDrawImageRect($Graphic, $Bitmap, 0, 0, 500,500) ; Back to front Buffer oder BITMAP WIDTH

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

    _GDIPlus_ImageSaveToFile ($hGraphic, $hBmp)

    [/autoit]

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • WTF ????


    Nimm IMMER den Backbuffer !!!

    Der Frontbuffer bringt dir bei nem SPIEL nicht viel :D

    Guck mal seubos tut an !

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • War meine Erklärung etwa so schwer zu verstehen?
    Das hier:

    [autoit]

    $HBITMAP_Screenshot1 = _ScreenCapture_Capture($hBmp,10,10,1000,100)
    $hBitmap1 = _GDIPlus_BitmapCreateFromHBITMAP($HBITMAP_Screenshot1)

    [/autoit]


    muss so aussehen:

    [autoit]

    $HBITMAP_Screenshot1 = _ScreenCapture_Capture("",10,10,1000,100)
    $hBitmap1 = _GDIPlus_BitmapCreateFromHBITMAP($HBITMAP_Screenshot1)

    [/autoit]


    weil sonst der Screenshot nur in einer Datei gespeichert wird und du als Rückgabewert 1 o.Ä. erhältst ;).

    Außerdem zeichnest du nur in den Backbuffer ohne diesen dann auf den Frontbuffer zu bringen und wie das geht wurde hier schon oft genug gezeigt...