VB.NET-Tipp 0135: Hintergrundfarbe für Scollbar-Steuerelemente ändern
von Frank Schüler
Beschreibung
Dieses Beispiel zeigt auf einfache Weise, wie man die Hintergrundfarbe von Scrollbar-Steuerelementen ändern kann.
Schwierigkeitsgrad: | Framework-Version(en): .NET Framework 1.0, .NET Framework 1.1, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5, .NET Compact Framework 1.0, .NET Compact Framework 2.0, .NET Framework 4 | .NET-Version(en): Visual Basic 2002, Visual Basic 2003, Visual Basic 2005, Visual Basic 2008, Visual Basic 2010 | Download: |
' Dieser Quellcode stammt von http://www.activevb.de ' und kann frei verwendet werden. Für eventuelle Schäden ' wird nicht gehaftet. ' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. ' Ansonsten viel Spaß und Erfolg mit diesem Source! ' Projektversion: Visual Studio 2005 ' ' Referenzen: ' - System ' - System.Data ' - System.Deployment ' - System.Drawing ' - System.Windows.Forms ' - System.Xml ' ' Imports: ' - Microsoft.VisualBasic ' - System ' - System.Collections ' - System.Collections.Generic ' - System.Data ' - System.Drawing ' - System.Diagnostics ' - System.Windows.Forms ' ' ############################################################################## ' ################################# Form1.vb ################################### ' ############################################################################## Option Strict On Option Explicit On Imports System.Drawing Imports System.Drawing.Imaging Imports System.Runtime.InteropServices Public Class Form1 ' ---=== Windows Message ===--- Private Const WM_CTLCOLORSCROLLBAR As Integer = &H137 ' ---=== GDI32 Deklarationen ===--- <DllImport("gdi32.dll", EntryPoint:="CreatePatternBrush")> _ Private Shared Function CreatePatternBrush( _ ByVal hBitmap As IntPtr) As IntPtr End Function <DllImport("gdi32.dll", EntryPoint:="CreateSolidBrush")> _ Private Shared Function CreateSolidBrush(ByVal crColor As Integer) As IntPtr End Function <DllImport("gdi32.dll", EntryPoint:="DeleteObject")> _ Private Shared Function DeleteObject(ByVal hObject As IntPtr) As Integer End Function Private hBmp As IntPtr = IntPtr.Zero Private hBrush As IntPtr = IntPtr.Zero Private hBmpBrush As IntPtr = IntPtr.Zero Private Bmp As Bitmap = Nothing Protected Overrides Sub WndProc(ByRef m As Message) ' nur wenn die Nachricht WM_CTLCOLORSCROLLBAR eintrifft If m.Msg = WM_CTLCOLORSCROLLBAR Then ' in LParam steht dann das Handle von der Scrollbar ' für die die Nachricht eingetroffen ist Select Case m.LParam Case VScrollBar1.Handle ' ist ein GDI Brush vorhanden If Not Equals(hBrush, IntPtr.Zero) Then ' dann GDI Brush zurück geben m.Result = hBrush End If Case VScrollBar2.Handle ' ist ein GDI Brush vorhanden If Not Equals(hBmpBrush, IntPtr.Zero) Then ' dann GDI Brush zurück geben m.Result = hBmpBrush End If End Select Else MyBase.WndProc(m) End If End Sub Private Sub Form1_FormClosing(ByVal sender As Object, _ ByVal e As System.Windows.Forms.FormClosingEventArgs) _ Handles Me.FormClosing ' ist ein GDI Brush vorhanden If Not Equals(hBrush, IntPtr.Zero) Then ' GDI Brush löschen DeleteObject(hBrush) End If ' ist ein GDI Brush vorhanden If Not Equals(hBmpBrush, IntPtr.Zero) Then ' GDI Brush löschen DeleteObject(hBmpBrush) End If ' ist ein GDI Bitmap vorhanden If Not Equals(hBmp, IntPtr.Zero) Then ' GDI Bitmap löschen DeleteObject(hBmp) End If 'Bitmap löschen Bmp.Dispose() End Sub Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Load ' GDI Brush von einer Farbe erstellen hBrush = CreateSolidBrush(&HFF00FF&) ' anstelle von CreateSolidBrush kann auch jede andere ' GDI32 Brush-API verwendet werden. zB. CreatePatternBrush ' Bitmap erstellen Bmp = New Bitmap(4, 4, PixelFormat.Format24bppRgb) ' etwas in die Bitmap reinzeichnen Using G As Graphics = Graphics.FromImage(Bmp) G.FillRectangle(Brushes.Yellow, 0, 0, 2, 2) G.FillRectangle(Brushes.Red, 2, 2, 2, 2) End Using ' GDI Handle der Bitmap ermitteln hBmp = Bmp.GetHbitmap ' GDI Brush vom Handle der Bitmap erstellen hBmpBrush = CreatePatternBrush(hBmp) End Sub End Class
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.