Während der Arbeit an einem großen Projekt, entstanden auch einige Benutzersteuerelemente. Eines meiner Probleme war, dass die PictureBox von VB.NET nur die Stretch-Funktion, aber keine Zoom-Funktion unterstützt. Desshalb habe ich ein aus einer PictureBox vererbtes Benutzersteuerelement gebastelt, welches zusätzlich folgende SizeMode-Möglichkeiten hat:
Meiner Meinung nach ist das eine sehr wichtige Funktion. Hier der Code: Public Class ZoomPictureBox Inherits PictureBox Public Enum SizeModes Normal = 0 StretchImage = 1 AutoSize = 2 CenterImage = 3 ZoomImageAlways = 4 ZoomImageUntilNormalSize = 5 End Enum Dim VSizeMode As SizeModes = SizeModes.Normal Public Shadows Property SizeMode() As SizeModes Get Return VSizeMode End Get Set(ByVal Value As SizeModes) VSizeMode = Value If Value < 4 Then MyBase.SizeMode = Value Else MyBase.SizeMode = PictureBoxSizeMode.Normal End If Me.Refresh() End Set End Property Protected Overrides Sub OnPaint( _ ByVal pe As System.Windows.Forms.PaintEventArgs) If Me.Image Is Nothing Then Exit Sub If VSizeMode < 4 Then MyBase.OnPaint(pe) Else With Me.Image If Me.Width / Me.Height < .Width / .Height Then If VSizeMode = 5 And Me.Width > .Width Then pe.Graphics.DrawImageUnscaled(Me.Image, _ (Me.Width - .Width) / 2, (Me.Height - .Height) / 2) Else pe.Graphics.DrawImage(Me.Image, 0, _ CInt((Me.Height - (Me.Width / .Width * .Height)) / 2), _ Me.Width, CInt(Me.Width / .Width * .Height)) End If Else If VSizeMode = 5 And Me.Height > .Height Then pe.Graphics.DrawImageUnscaled(Me.Image, _ (Me.Width - .Width) / 2, (Me.Height - .Height) / 2) Else pe.Graphics.DrawImage(Me.Image, _ CInt((Me.Width - (Me.Height / .Height * .Width)) / 2), _ 0, CInt(Me.Height / .Height * .Width), Me.Height) End If End If End With End If End Sub Protected Overrides Sub OnResize(ByVal e As System.EventArgs) MyBase.OnResize(e) Me.Refresh() End Sub End Class Dieser Tipp wurde bereits 23.955 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP! Unser Nr. 1 Neu! sevDataGrid 3.0 Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |