GDI - 50% transparentes Bild zeichnen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von vb-checker.

    GDI - 50% transparentes Bild zeichnen

    Hiho

    Ich möchte wissen wie ich 50% transparente Bilder mit GDI auf meine Form zeichnen kann.
    Bild zeichnen funktioniert, aber wie man's transparent macht weiss ich nicht.
    Google hat nur diesen Code ausgespuckt:

    VB.NET-Quellcode

    1. Public Function SetImageAlpha(ByVal Image As Image, ByVal Alpha As Single) As Image
    2. Dim ImgAttr As New Imaging.ImageAttributes()
    3. 'Standard-ColorMatrix für Transparenz
    4. Dim ColorMatrix As New Imaging.ColorMatrix(New Single()() {New Single() {1, 0, 0, 0, 0}, New Single() {0, 1, 0, 0, 0}, New Single() {0, 0, 1, 0, 0}, New Single() {0, 0, 0, CSng(Alpha / 100), 0}, New Single() {0, 0, 0, 0, 1}})
    5. 'ColorMatrix an ImageAttribute-Objekt übergeben
    6. ImgAttr.SetColorMatrix(ColorMatrix)
    7. 'Neue 32bit Bitmap erstellen
    8. Dim NewBitmap As Bitmap = New Bitmap(Image.Width, Image.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
    9. 'Resolution (DPI) vom Quellbitmap auf Zielbitmap übertragen
    10. NewBitmap.SetResolution(Image.HorizontalResolution, Image.VerticalResolution)
    11. 'Graphicsobjekt von NewBitmap erstellen
    12. Dim NewGraphics As Graphics = Graphics.FromImage(NewBitmap)
    13. 'NewBitmap auf NewGraphics zeichnen
    14. NewGraphics.DrawImage(Image, New Rectangle(0, 0, NewBitmap.Width, NewBitmap.Height), 0, 0, Image.Width, Image.Height, GraphicsUnit.Pixel, ImgAttr)
    15. 'Ressource freigeben
    16. NewGraphics.Dispose()
    17. ImgAttr.Dispose()
    18. Return NewBitmap
    19. End Function


    Rufe die Funktion im Paint-Event mit diesem Code auf:

    VB.NET-Quellcode

    1. Dim I As Image = New Bitmap(My.Resources.Coop_Logo)
    2. SetImageAlpha(I, 10)


    Funktioniert bei mir leider nicht, keine Fehlermeldung aber das Bild wird nicht angezeigt.

    Brauche Starthilfe.

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...
    in Colormatrix gibts u.a. halbtransparenz

    Mit besagter Colormatrix kann man den alpha-kanal einer 32bit - argb - Bitmap manipulieren.

    Sorry - is üflüssig - du werkelst ja bereits mitte Colormatrix.

    Frage: welche auswirkung hat der Bitmap.SetResolution - Befehl? bei meine Übungen scheine ich das nicht zu brauchen.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Dancger schrieb:

    Rufe die Funktion im Paint-Event mit diesem Code auf:

    VB.NET-Quellcode

    1. Dim I As Image = New Bitmap(My.Resources.Coop_Logo)
    2. SetImageAlpha(I, 10)


    Funktioniert bei mir leider nicht, keine Fehlermeldung aber das Bild wird nicht angezeigt.

    Brauche Starthilfe.
    Ich gehe mal stark davon aus, dass du statt 10 mal 0.1 als Parameter nehmen solltest

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !