Image (GDI+)-Semitransparens ändern!

  • Ich suche eine Funktion mit der man ein geladenes Image(mit GDI+) transparenter machen kann!
    Einfach Aufgabenstellung, jedoch fand ich im deutschen u. englischen Forum keine passende Funktion.
    Vielleicht wießt Ihr was? ?(

  • Ich habe dir hier mal ein kleines Beispiel zu ColorMatrix gebastelt. :thumbup:

    Spoiler anzeigen
    [autoit]

    #include "GDIP.au3"
    #include <GUIConstants.au3>

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

    $hWnd = GUICreate("Example by name22", 400, 400)
    GUISetState()

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

    _GDIPlus_Startup()

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)

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

    $hImage = _GDIPlus_ImageLoadFromFile(FileOpenDialog("Bild auswählen", @ScriptDir, "Bilder (*.jpg;*.jpeg;*.png;*.bmp;*.gif)"))
    $iWidth = _GDIPlus_ImageGetWidth($hImage)
    $iHeight = _GDIPlus_ImageGetHeight($hImage)

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

    $hIA = _GDIPlus_ImageAttributesCreate()

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

    $tMatrix = _GDIPlus_ColorMatrixCreateTranslate(0, 0, 0, -0.5) ;Werte von -1 bis 1 (!)
    $pMatrix = DllStructGetPtr($tMatrix)

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

    _GDIPlus_ImageAttributesSetColorMatrix($hIA, 0, True, $pMatrix)

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

    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage, 0, 0, 400, 200) ;Zeichnet das Originalbild
    _GDIPlus_GraphicsDrawImageRectRectIA($hGraphic, $hImage, 0, 0, $iWidth, $iHeight, 0, 200, 400, 200, $hIA) ;Zeichnet das Bild mit veränderten Attributen

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

    ;Aufräumen...
    _GDIPlus_ImageAttributesDispose($hIA)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_Shutdown()

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

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    [/autoit]


    Du benötigst dafür allerdings die GDIP.au3 (Alles zusammen im Anhang). ;)