Transparenz zeichnen

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Jonas Jelonek.

    Transparenz zeichnen

    Guten Tag

    Ich habe in letzter Zeit öfters Programme und Web-Apps gesehen, die mit transparenten Dialogen arbeiten. Da ich das sehr attraktiv finde, wollte ich sowas auch machen, nur weiß ich nicht so recht wie. Im Anhang habe ich ein Bild von MediaFire wo so ein Dialog gezeigt wird. Wie zeichnet man sowas?

    Vielen Dank im Voraus

    MfG
    Jonas Jelonek
    Bilder
    • Screenshot (1).png

      5,26 kB, 627×111, 182 mal angesehen
    @Jonas Jelonek:: Meinst Du so was:

    Gib dem Dialog eine Opacity von weniger als 100%, hier sind es 50%.
    Achtung.
    Im Designer wird eine Prozentzahl angegeben (0 ... 100), im Quelltext steht da ein Double (0 ... 1).
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ähm du kannst doch einfach einen "Screenshot" von dem zu verdunkelten Bereich machen, und diesen Anschließend verdunkeln...
    Wenn du willst hätt ich da ein Code-Snippet für dich.
    Hier:
    EasyDrawing

    VB.NET-Quellcode

    1. Option Strict On
    2. Option Explicit On
    3. Option Infer On
    4. Imports System.Windows.Forms
    5. Imports System.Drawing, System.Drawing.Drawing2D _
    6. , System.Drawing.Imaging, System.Drawing.Text
    7. Imports System.ComponentModel
    8. 'Kleiner Ausschnitt aus einer Libraray von mir.
    9. Namespace Gather
    10. Namespace EasyDrawing
    11. ''' <summary>
    12. ''' Enthält Filter, und Hilfsklasse für Bitmaps.
    13. ''' </summary>
    14. ''' <Author>Gather</Author>
    15. Public Class BitmapClasses
    16. ''' <summary>
    17. ''' Eine Filter-Klasse für Bitmaps.
    18. ''' </summary>
    19. Public Class Filters
    20. ''' <summary>
    21. ''' Setzt die Helligkeit eines Bitmaps.
    22. ''' </summary>
    23. ''' <param name="b">Das gegebene Bitmap.</param>
    24. ''' <param name="sngAmount">Der Wert der angibt wie stark das Bitmap aufgehellt bzw. aufbedunkelt werden soll.</param>
    25. ''' <returns>Bitmap</returns>
    26. ''' <remarks>sngAmount muss zwischen -1 und 1 liegen!</remarks>
    27. Public Shared Function Brightness(ByVal b As Bitmap, ByVal sngAmount As Single) As Bitmap
    28. ' Brightness should be -1 (black) to 0 (neutral) to 1 (white)
    29. If sngAmount < -1 OrElse sngAmount > 1 Then
    30. Throw New ArgumentOutOfRangeException("sngAmount must be between -1 and 1.")
    31. End If
    32. Dim cm As New System.Drawing.Imaging.ColorMatrix(New Single()() _
    33. {New Single() {1, 0, 0, 0, 0}, _
    34. New Single() {0, 1, 0, 0, 0}, _
    35. New Single() {0, 0, 1, 0, 0}, _
    36. New Single() {0, 0, 0, 1, 0}, _
    37. New Single() {sngAmount, sngAmount, sngAmount, 0, 1}})
    38. Using ia As New System.Drawing.Imaging.ImageAttributes
    39. ia.SetColorMatrix(cm)
    40. Dim rc As New Rectangle(0, 0, b.Width, b.Height)
    41. Using bClone As Bitmap = DirectCast(b.Clone, Bitmap)
    42. Using g As Graphics = Graphics.FromImage(b)
    43. g.Clear(Color.Transparent)
    44. g.DrawImage(bClone, rc, 0, 0, bClone.Width, bClone.Height, GraphicsUnit.Pixel, ia)
    45. End Using
    46. End Using
    47. End Using
    48. Return b
    49. End Function
    50. End Class
    51. End Class
    52. End Namespace
    53. End Namespace



    VB.NET-Quellcode

    1. ''' <summary>
    2. ''' Verdunkelt ein Bitmap, dass durch ein Control angegeben wird..
    3. ''' </summary>
    4. ''' <param name="g">Das Graphics-Objekt auf dem gezeichnet werden soll.</param>
    5. ''' <param name="cControl">Das Control das verdunkelt werden soll.</param>
    6. ''' <param name="b">Das Bitmap das dazu benutzt werden soll, um das Control dünkler zu machen.</param>
    7. Public Sub DarkenArea(ByVal g As Graphics, ByVal cControl As Control, ByVal b As Bitmap)
    8. Dim cntrl As Control = cControl
    9. b = New Bitmap(cntrl.Width, cntrl.Height)
    10. cntrl.DrawToBitmap(b, New Rectangle(0, 0, cntrl.Width, cntrl.Height))
    11. For Each c As Control In cntrl.Controls : c.Hide() : Next
    12. cntrl.Hide()
    13. b = Gather.EasyDrawing.BitmapClasses.Filters.Brightness(b, -0.3)
    14. g.DrawImage(b, New Rectangle(cntrl.Location.X, cntrl.Location.Y, cntrl.Width, cntrl.Height))
    15. End Sub


    Anwendung z.B.
    DarkenArea(g, Panel1, b)

    Wobei dieser Code nur den Bereich eines Controls verdunkelt, musst du natürlich anpassen.
    ColorMatrix:
    Definiert eine 5 x 5-Matrix, die die Koordinaten für den RGBAW-Farbraum enthält.


    Mehr dazu:
    msdn.microsoft.com/de-de/libra….imaging.colormatrix.aspx