Rubrik: Grafik und Font · Font & Text | VB-Versionen: VB4, VB5, VB6 | 27.10.03 |
Text mit Farbmaske erstellen Dieser Tipp zeigt, wie sich ein Text unter Berücksichtigung einer Farbmaske in einer PictureBox ausgeben lässt. | ||
Autor: LonelySuicide666 | Bewertung: | Views: 12.357 |
www.vbapihelpline.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Heute zeigen wir Ihnen, wie sich ein grafischer Text unter Berücksichtigung einer Farbmaske in einer PictureBox ausgeben lässt.
Starten Sie ein neues Projekt und platzieren auf die Form:
- eine TextBox namens Text1
- 3 PictureBox-Controls namens Picture1, Picture2 und Picture3
Im ersten PictureBox-Control soll der Text aus der TextBox ganz normal in schwarzer Schrift angezeigt werden. Die zweite PictureBox enthält ein Farbverlauf oder ein beliebiges Bild. Im dritten PictureBox-Control soll letztendlich die Kombination aus der 1. PictureBox und der 2. PictureBox angezeigt werden.
Für unser Beispiel verwenden wir als Farbmaske einen Farbverlauf:
Option Explicit ' benötigte API-Deklarationen Private Declare Function BitBlt Lib "gdi32" ( _ ByVal hDestDC As Long, _ ByVal x As Long, _ ByVal y As Long, _ ByVal nWidth As Long, _ ByVal nHeight As Long, _ ByVal hSrcDC As Long, _ ByVal xSrc As Long, _ ByVal ySrc As Long, _ ByVal dwRop As Long) As Long Private Declare Function SetBkColor Lib "gdi32" ( _ ByVal hdc As Long, _ ByVal crColor As Long) As Long Private Const SRCINVERT = &H660046 Private Const SRCAND = &H8800C6
Private Sub Form_Load() ' AutoRedraw muss auf TRUE festgelegt sein! Picture1.AutoRedraw = True Picture2.AutoRedraw = True Picture3.AutoRedraw = True ' Schriftgröße festlegen Picture1.Font.Name = "Times New Roman" Picture1.Font.Size = 36 Picture1.Font.Bold = True Set Picture3.Font = Picture1.Font ' Farbverlauf erstellen MakeGradient Picture2, vbBlue, vbWhite, 1 ' Text anzeigen Text1_Change End Sub
' Text mit Farbmaske ausgeben Private Sub Text1_Change() Dim DestCX As Long Dim DestCY As Long Dim TmpBackColor As Long ' Quelltext aus TextBox in der 1. PictureBox ' anzeigen (das Bildfeld muß ' schwarz/weiß sein) With Picture1 .Cls .BackColor = vbWhite .ForeColor = vbBlack Picture1.Print Text1.Text End With With Picture3 ' Größe/Dimension des Ausgabebildes DestCX = .Width / Screen.TwipsPerPixelX DestCY = .Height / Screen.TwipsPerPixelY ' Ausgabebereich löschen .Cls ' Hintgrundfarbe der Quelle übernehmen ' (immer weiß) TmpBackColor = .BackColor SetBkColor .hdc, Picture1.BackColor ' Quelle mit der Farbmaske in einem ' Bildfeld überzeichnen BitBlt .hdc, 0, 0, DestCX, DestCY, Picture2.hdc, _ 0, 0, SRCINVERT BitBlt .hdc, 0, 0, DestCX, DestCY, Picture1.hdc, _ 0, 0, SRCAND BitBlt .hdc, 0, 0, DestCX, DestCY, Picture2.hdc, _ 0, 0, SRCINVERT ' Hintergundfarbe wiederherstellen SetBkColor .hdc, TmpBackColor ' Bild anzeigen .Refresh End With End Sub
Anmerkung:
Die MakeGradient-Prozedur stammt aus folgendem Tipp:
Farbverlauf in Fenstern und Objekten