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 24.649 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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. |
sevISDN 1.0 ![]() Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats ![]() Matthias Kozlowski Umlaute konvertieren Ersetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Neu! sevCommand 4.0 ![]() Professionelle Schaltflächen im modernen Design! Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. |
||||||||||||||||
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. |