Warum Button-Grafik mit GDI+ statt mit Image
- Allgemein
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von MAANTECH.
-
-
Hallo maantech,
warum soll das eine besser als das andere sein ?
Ich denke die Frage ist, was willst du damit machen ?
Gruss
mikeb69 -
MAANTECH schrieb:
warum es besser ist, wenn ich die Grafik mit GDI+ zeichne, als wenn ich einfach ein Bild lade?
...weil das Bild auch nur per GDI dargestellt wird. GDI ist sozusagen das Grafik-Backend für Windows Forms.Gruß
hal2000
-
...weil das Bild auch nur per GDI dargestellt wird. GDI ist sozusagen das Grafik-Backend für Windows Forms.
genau und ich glaube - was meiner Meinung nach nicht so verständlich rübbergekommen ist(nicht böse sein ) - wollte er sagen, dass kein zusätzliches Control benötigt wird, welches in den Speicher geladen und erstellt/verwaltet werden muss, außerdem kannst du bei GDI+ das Doublebuffering viel leichter einstellund und programmieren, dass es wirklich nicht flackertIch wollte auch mal ne total überflüssige Signatur:
---Leer--- -
jvbsl schrieb:
dass kein zusätzliches Control benötigt wird
Für das Bild alleine braucht er kein eigenes - da reicht die PictureBox. Wenns aber ein Play-Button mit allen Schikanen inkl. Hover-Effekt & Co. sein soll, würde ich das schon in ein Extracontrol schreiben. Ich hab sowas mal für Windows Mobile erstellt - das ist in GDI aufwändig, aber machbar und nicht allzu unperformant.Gruß
hal2000
-
-
-
-
-
yacsharpblog.blogspot.com/2008/07/listbox-flicker.html
social.msdn.microsoft.com/Foru…f2-459a-a54c-fbb78ac35701
also ich bekomm das Flickern eigt. einwandfrei weg...Ich wollte auch mal ne total überflüssige Signatur:
---Leer--- -
-
So ich zeig euch einfach mal meinen Code Dürft ihn auch verwenden wenn ihr wollt.
VB.NET-Quellcode
- Imports System.ComponentModel
- <DefaultEvent("Click")> Public Class PlayButton
- Private Sub Grafik(ByVal sender As Object, ByVal e As PaintEventArgs) Handles Me.Paint
- Dim graphPath As New Drawing2D.GraphicsPath()
- graphPath.AddEllipse(ClientRectangle)
- Region = New Region(graphPath)
- End Sub
- Private Sub Laden(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
- Me.SetStyle(ControlStyles.OptimizedDoubleBuffer Or ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.SupportsTransparentBackColor Or ControlStyles.ResizeRedraw, True)
- Me.BackColor = Color.Transparent
- BackgroundImage = My.Resources.Play
- BackgroundImageLayout = ImageLayout.Stretch
- End Sub
- <EditorBrowsable(EditorBrowsableState.Never)> <Browsable(False)> Public Overrides Property BackColor As Color
- Get
- Return MyBase.BackColor
- End Get
- Set(ByVal value As System.Drawing.Color)
- MyBase.BackColor = value
- End Set
- End Property
- <EditorBrowsable(EditorBrowsableState.Never)> <Browsable(False)> Public Overrides Property BackgroundImage As System.Drawing.Image
- Get
- Return MyBase.BackgroundImage
- End Get
- Set(ByVal value As System.Drawing.Image)
- MyBase.BackgroundImage = value
- End Set
- End Property
- Private Sub UserControl1_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.MouseEnter
- BackgroundImage = My.Resources.Play_hover
- End Sub
- Private Sub UserControl1_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.MouseLeave
- BackgroundImage = My.Resources.Play
- End Sub
- Private Sub UserControl1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
- BackgroundImage = My.Resources.Play_pressed
- End Sub
- Private Sub UserControl1_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
- BackgroundImage = My.Resources.Play_hover
- End Sub
- End Class
Was haltet ihr von dem Code? Was würdet ihr besser anders machen? Ich dachte auch daran, dass man später eigene Styles machen kann; also einfach ein Programm, dass sämtliche Images für sämtliche Buttons in eine dll einkompiliert und das Button Modul sich die entsprechenden Grafiken einfach aussucht, so kann jeder Nutzer dann sein eigenes Design fürs fertige Programm machen.
mfg MAANtech -
-
-
-
-
-
-
Ich gehöre zu denen die sie gut finden
Zu dem dubble buffering nochmal: Ich habe gestern ein Control gemacht in dem ich auch mit gdi+ auf das Usercontroll zeichne. wenn du bei den eigenschaften des usercontrolls mal rechts im eigenschaften fenster guckts findest du da natürlich neben size etc. auch den eintrag "DoubleBufferd" wenn du das auf true stellst flackert da nichts mehr. auch nicht bei flüssigen hover effeckten. -
-
Ähnliche Themen
-
dennis*<3 - - Sonstige Problemstellungen