GDIPlus - Image skalieren ohne zu zeichnen

  • Hi @ all , ich denke die Überschrift sagt schon alles , wie kann ich ein geladenes Bild (_GDIPlus_ImageLoadFromFile) , z.B. von 400x400 auf 600x600 bzw. 200x200 skalieren?

  • Hallo nof@ker2,

    ich verstehe deine Frage zwar nicht [ohne zeichnen wird kein Bild dargestellt] aber schau einmal in [Beispiel] BMP-, GIF- & JPG-Viewer dort verwende ich

    [autoit]

    _GDIPlus_ImageGetWidth;
    _GDIPlus_ImageGetHeight

    [/autoit]

    um die Originalgröße eines Bildes zu ermitteln um es danach mit GuiCtrlCreatePic in der optimalen Grösse unter Berücksichtung des Seitenverhältnisses anzuzeigen,

    mfg autoBert

  • Suchst du sowas?:

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <WinAPI.au3>

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

    $iWidth = 640
    $iHeight = 480

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

    _GDIPlus_Startup()
    $hImage = _GDIPlus_ImageLoadFromFile("Input.jpg")

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

    $hGraphicsTemp = _GDIPlus_GraphicsCreateFromHWND(_WinAPI_GetDesktopWindow())
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphicsTemp)
    $hGraphics = _GDIPlus_ImageGetGraphicsContext($hBitmap)

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

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

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

    _GDIPlus_ImageSaveToFile($hBitmap, "output.bmp")

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

    _GDIPlus_GraphicsDispose($hGraphicsTemp)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_BitmapDispose($hBitmap)

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

    _GDIPlus_Shutdown()

    [/autoit]

    E