Διαφάνεια χρώματος (Transparency)

Στο tip αυτό θα δείτε τη χρήση της μεθόδου fromArgb, της δομής Color, με χρήση τιμής Alpha. Μία έκδοση της μεθόδου, παίρνει ως πρώτη παράμετρο μία τιμή Alpha (0-255) που δηλώνει την ένταση της διαφάνειας (0=πλήρη διαφάνεια, 255=πλήρη αδιαφάνεια).

http://users.sch.gr/mouratx/VB-NET_Tips/Graphics/Images/Transparency.jpg

 Στην εικόνα, βλέπετε ένα ορθογώνιο με γέμισμα μοτίβο (HatchBrush Style) και από πάνω του έχει σχεδιαστεί μία έλλειψη με ημιδιαφανές λευκό. Ως εκ τούτου, το φόντο το ορθογώνιου θα διαφαίνεται ελαφρά μέσα από την έλλειψη. θα διαφαίνεται ελαφρά μέσα από την έλλειψη.


Ο κώδικας έχει τοποθετηθεί στη ρουτίνα
OnPaint της φόρμας:

Protected Overrides Sub OnPaint(ByVal e As _

System.Windows.Forms.PaintEventArgs)


MyBase.OnPaint(e)

'Οι χώροι για το ορθογώνιο και έλλειψη, αντίστοιχα.
Dim rect1 As Rectangle, rect2 As Rectangle

'H έλλειψη θα βαφεί μέσα στο χώρο του ορθογωνίου.

Οι τιμές αφορούν pixels.
rect1 = New Rectangle(0, 0, Me.Width, Me.Height)
rect2 = New Rectangle(20, 20, rect1.Width / 2, rect1.Height / 2)

 

'Τα πινέλα βαφής για το ορθογώνιο και έλλειψη, αντίστοιχα.
'Στο δεύτερο, καθορίζουμε ημιδιαφανές λευκό (τιμή Alpha 128).
'Αυτό έχει σαν αποτέλεσμα να εμφανιστεί απαλά το φόντο

‘του ορθογωνίου μέσα από την έλλειψη.
'H κλάση SolidBrush, παρέχει συμπαγές χρώμα.

‘Η κλάση HatchBrush παρέχει γέμισμα με μοτίβο.
Dim brush1 As New HatchBrush(HatchStyle.Cross, Color.Blue)
Dim brush2 As New SolidBrush(Color.FromArgb(128, Color.White))

'Βάψε τα.
e.Graphics.FillRectangle(brush1, rect1)
e.Graphics.FillEllipse(brush2, rect2)

'Απελευθέρωσε μνήμη.
brush1.Dispose() : brush2.Dispose()

End Sub


'----------------------------------------------------------------------


'
Αν αλλάξει διαστάσεις η φόρμα επανασχεδίασε.

Καλείται η OnPaint.
Protected Overrides Sub OnResize(ByVal e As System.EventArgs)

MyBase.OnResize(e)

Me.Refresh()

End Sub

 

 

·        Χρήστος Μουρατίδης