Eigene Controls Visual Basic

  • VB.NET

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von Nikx.

    Und wo ist jetzt deine Frage ?
    Contros komplett mit Bildern zu machen ist verdammt unsauber.
    Aber dennoch, in dem Video wird doch (zwar sehr schlecht) erklärt wie man sowas macht. Bei einer Progressbar musst du halt von ProgressBar ableiten, sagen dass du selber zeichnest und dann dein Bild als Hintergrund nehmen. Jenachdem wie die Value ist musst du einen bestimmten Bereich überdecken, sodass nur ein Teil des ProgressBar gefüllt ist.

    Benedict99 schrieb:

    Ungefähr so wie bei diesem Video.
    Wo ist das Problem?
    Kamst Du iwo nicht weiter?
    Kannst Du das gesehene (wohl aber nicht verstandene) nicht auf andere ontrols übertragen?
    Läuft iein Code nicht?
    ???
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Bitte nicht! @compufreak:
    GDI und nichts anderes wird für Usercontrols verwendet. Wer sich irgendwas anderes
    angewöhnt wird es später bereuen! Wie kann man überhaupt auf die Idee kommen, mit Grafiken zu arbeiten und
    dann GDI+ so strikt ablehnen?! Ist mir nicht klar... und sowas nennt sich fortgeschrittener Anfänger -.-

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nikx“ ()

    @Nikx

    Dann ZEIG doch mal, wie man es "besser" macht !
    Rumnörgeln können alle, nur zeigen tut keiner was, also wird auf soche verständlichen Sachen zurückgegriffen...
    Ich weiß auch was kommt diverse Links auf irgendwelche Seiten die keine Mensch versteht...
    Hallo?
    So ziemlich alles ist besser als dieses Youtube-Video-Tutorial.
    Google doch einfach mal nach GDI+ Button, oder OwnerDraw Button.

    bzw. hier im Forum findest du auch einiges.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Beitrag deeskalierend bearbeitet.
    @enIking1998: Achte in Zukunft darauf, dies zu unterlassen, und auf deine Rechtschreibung.

    Das Ranz-Video ...naja sehen wir's als ein Grund glücklich zu sein, das wir nicht die Art von Control-programmierung uns angewöhnt haben...

    Jedes Control wird in GDI+ gezeichnet...
    Alles andere ist Ranz...

    Mfg.eniking1998

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „FlashTek“ ()

    Es gibt hunderte Artikel, Blogs, Bücher und Tutorials über GDI+. Also sag nicht, dass niemand etwas erklären würde. Und wie oft man hier das GDI-Thema schon durchgekaut hat will ich erst gar nicht wissen. Im Tutorial-Bereich hier im Forum gibt es auch mehr als genug GDI und WPF Tutorials. Die ganzen Blogs, Artikel etc. die gepostet werden sind ebenfalls alle sehr leicht verständlich. Es muss einen natürlich nicht wundern wenn jemand der nicht mal 5% der Grundlagen beherrscht, meint ein fortgeschrittener Anfänger zu sein, wenn er nen Elemente auf ne Form klatschen kann und nen hässliches Codebehind zusammenkopiert. Unter Grundlagen versteht man, dass man weiß wie OOP funktioniert, diese auch versteht und anwenden kann. Dann wüsste man auch was ein Paint-Event ist und was ein Graphics-Objekt ist. Anschließend muss man noch wissen was ne Methode und ne Parameterliste ist und etwas Englisch können und schon kann man ne simple DrawLine Funktion aufrufen. Und wenn einem Ganze mit Koordinaten etc. zu kompliziert ist, gibt es immer noch WPF welches so oder so bessere Alternative darstellt.

    Also wenn sowas nicht verständlich ist, dann frage ich mich was du überhaupt an Grundlagen zu können glaubst:
    [VB 2008] [Tutorial] GDI+


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

    compufreak schrieb:

    Dann ZEIG doch mal, wie man es "besser" macht !
    Was gibt'sn da zu zeigen?
    In dem Crap-Video behandelt er MouseEnter, MouseMove, MouseLeave-Event, und ändert darin das Button.BackGroundImage.

    Ja, dafür schreib ich doch kein Control, sondern das handel ich kurz im Form-Code ab, wenn ich da solche Buttons haben will.

    Weiters setzt er alle möglichen Properties im Sub New, und das wird failen, weil das in Konflikt mit dem Designer gerät, der eigentlich dazu da ist, dass diese Props gesetzt werden.
    Hier mal ein Beispiel für einen Button in GDI+:
    Code

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System.Drawing 'Macht Zugriff auf Zeichenfunktionen einfacher
    3. Imports System.Drawing.Drawing2D
    4. Public Class CustomButton
    5. Inherits System.Windows.Forms.Button
    6. 'Methode für das "Malen"
    7. Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    8. MyBase.OnPaint(e)
    9. 'Hintergrund löschen
    10. e.Graphics.Clear(Me.BackColor)
    11. 'Ein paar Einstellungen zum Zeichnen, Standard
    12. With e.Graphics
    13. .SmoothingMode = SmoothingMode.AntiAlias
    14. .TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
    15. .PixelOffsetMode = PixelOffsetMode.HighQuality
    16. .InterpolationMode = InterpolationMode.HighQualityBilinear
    17. .CompositingQuality = CompositingQuality.HighQuality
    18. End With
    19. 'Erzeuge ein "Rechteck", in dem gezeichnet werden soll
    20. Dim globalRect As Rectangle = New Rectangle(0, 0, Me.Width, Me.Height) 'Path.DrawPath(New Rectangle(0, 0, Me.Width - 1, Me.Height - 1), 12)
    21. 'Jenachdem welche taste gedrückt ist
    22. Select Case _MouseState
    23. Case MouseState.None
    24. e.Graphics.FillRectangle(New SolidBrush(Color.FromArgb(192, 192, 192)), globalRect) 'Hintergrund mit Farbe füllen
    25. Case MouseState.Hover
    26. e.Graphics.FillRectangle(New SolidBrush(Color.FromArgb(160, 160, 160)), globalRect)
    27. Case MouseState.Pressed
    28. e.Graphics.FillRectangle(New SolidBrush(Color.FromArgb(72, 72, 72)), globalRect)
    29. End Select
    30. 'Text zeichnen
    31. Dim size As New SizeF(e.Graphics.MeasureString(Me.Text, Me.Font))
    32. e.Graphics.DrawString(Me.Text, Me.Font, Brushes.Black, (Me.Width - size.Width) / 2, (Me.Height - size.Height) / 2)
    33. 'Male einen Rahmen
    34. e.Graphics.DrawRectangle(Pens.Black, globalRect)
    35. End Sub
    36. 'Ab hier alles für die Mousefunktionen
    37. Private _MouseState As MouseState 'Das Attribut
    38. Public Enum MouseState As Byte 'Die Enumeration
    39. None
    40. Hover
    41. Pressed
    42. End Enum
    43. #Region "Mouse-Events"
    44. Protected Overrides Sub OnMouseEnter(ByVal e As System.EventArgs)
    45. MyBase.OnMouseEnter(e)
    46. Me._MouseState = MouseState.Hover
    47. Me.Invalidate()
    48. End Sub
    49. Protected Overrides Sub OnMouseLeave(ByVal e As System.EventArgs)
    50. MyBase.OnMouseEnter(e)
    51. Me._MouseState = MouseState.None
    52. Me.Invalidate()
    53. End Sub
    54. Protected Overrides Sub OnMouseDown(ByVal mevent As System.Windows.Forms.MouseEventArgs)
    55. MyBase.OnMouseDown(mevent)
    56. Me._MouseState = MouseState.Pressed
    57. Me.Invalidate()
    58. End Sub
    59. Protected Overrides Sub OnMouseUp(ByVal mevent As System.Windows.Forms.MouseEventArgs)
    60. MyBase.OnMouseUp(mevent)
    61. Me._MouseState = MouseState.Hover
    62. Me.Invalidate()
    63. End Sub
    64. #End Region
    65. End Class

    Darauf kann man ganz einfach aufbauen, den Rest findest du in FreakJNS seinem Tutorial
    Tachchen,

    also erstmal: Wenn man keine Ahnung hat, sollte man die Fresse halten. Und wenn man zu faul ist,
    einen Moment lang die Google-Suche zu verwenden, dann sollte man ebenfalls die Fresse halten.
    Es hat einen Grund, dass ich oben auf GDI+ verweise, nämlich den, dass Anfänger es bitte gleich richtig lernen sollen. Hier im Forum kommen
    eine Menge ranziger Controls zusammen, die Leute im Showroom veröffentlichen, die es nicht besser wissen. Deswegen versuche
    ich von diesem Pfad abzuweisen. Einem "fortgeschrittenen Anfänger" so etwas zu erklären finde ich keineswegs gut, im Gegenteil:
    Ich würde Eigeninitiative begrüßen, dem Forum und den sinnlos-ranz-Threads im Showroom zuliebe.
    Also erstmal selbst fragen was man so macht, bevor man andere doof anmacht, die es bereits besser können und versuchen, einen Anfänger und einen
    "fortgeschrittenen" Anfänger auf das Problem mit den Bildern hinzuweisen.

    Ne? @enIking1998: @compufreak:

    Damit das ganze nicht komplett OffTopic ist, hier ein paar Links zu GDI-Controls und genrell GDI+:
    [VB 2008] [Tutorial] GDI+
    [VB 2008] Eigene Progressbar erstellen

    (Sollte man mich hierfür verwarnen ist das okay, ich wollte es nur mal loswerden. Es geht mir langsam aufn Sack wie die ganzen Möchtegern-Pros
    hier ihre Meinung vertreten - Danke)

    Grüße,
    Nikx
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!