2 Images in einem Button

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von a.b_om.

    2 Images in einem Button

    Hallo zusammen

    Ich habe mir seit gestern Abend den Kopf zerbrochen, wie man 2 Bilder, die genau gleich sind, in einem Button nebeneinander/untereinander anzuzeigen.

    Leider weiss ich nur, dass man dieses im Code machen soll, aber weiteres nicht. Google hat mir auch nicht geholfen.

    Wenn es geht, würde ich gerne einen "schönen" Code haben. Muss aber nicht.

    Die Bilder sind Pfeile nach rechts, links, oben und unten.

    Freundliche Grüsse
    André Bron
    Naja, ich würd sagen: manuell zu einer Bitmap machen und diese dem Button geben.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Der einfachst Weg ist wohl über das Control.Paint Event.

    VB.NET-Quellcode

    1. Private Sub Button1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Button1.Paint
    2. Dim Btn As Button = CType(sender, Button)
    3. Dim LeftImageValue As Image = MakeBitmap(Color.Blue, Btn.Width \ 2, Btn.Height)
    4. Dim RightImageValue As Image = MakeBitmap(Color.LightBlue, Btn.Width \ 2, Btn.Height)
    5. e.Graphics.DrawImage(LeftImageValue, 0, 0)
    6. e.Graphics.DrawImage(RightImageValue, LeftImageValue.Width, 0)
    7. e.Graphics.DrawString(Btn.Text, Btn.Font, New SolidBrush(Btn.ForeColor), (Btn.ClientSize.Width - Size.Width) \ 2, (Btn.ClientSize.Height - Size.Height) \ 2)
    8. If Me.Text.Length > 0 Then
    9. Dim size As SizeF = e.Graphics.MeasureString(Btn.Text, Btn.Font)
    10. ' Center the text inside the client area of the PictureButton.
    11. e.Graphics.DrawString(Btn.Text, Btn.Font, New SolidBrush(Btn.ForeColor), CInt(Btn.ClientSize.Width - size.Width) \ 2, CInt(Btn.ClientSize.Height - size.Height) \ 2)
    12. End If
    13. End Sub
    14. ' Create a bitmap object and fill it with the specified color.
    15. ' To make it look like a custom image, draw an ellipse in it.
    16. Function MakeBitmap(ByVal ButtonColor As Color, ByVal width As Integer, ByVal height As Integer) As Bitmap
    17. Dim bmp As New Bitmap(width, height)
    18. Dim g As Graphics = Graphics.FromImage(bmp)
    19. g.FillRectangle(New SolidBrush(ButtonColor), 0, 0, bmp.Width, bmp.Height)
    20. g.Dispose()
    21. Return bmp
    22. End Function
    @a.b_om Falls das ne CheckBox werden soll, dann mach Dir ne CheckBox und weise je nach CheckState dem Control das richtige Bild zu.
    Ansonsten überlege Dir, dafür ein UserControl zu machen.
    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!
    @RodFromGermany
    Nee.
    Es sollte ein normaler Button sein, mit 2 Bildern. Ich verwende grundsätzlich hier nur 1 Bild, aber es soll mehrmals angezeigt werden.

    Es gab Lösungen im Internet, aber nicht solche die ich brauche, weil die Bilder entweder untereinander oder nebeneinander projiziert werden soll.
    Da ein Button nun mal nur ein Bild akzeptiert, solange Du kein OwnerDrawing verwendest, musst Du eben aus 2 Bildern eines machen. Was soll ich dazu noch sagen? Aber vielleicht verstehe ich Dich auch falsch. Poste doch mal ein Bild von dem, welches im Button doppelt oder wie auch immer auftauchen soll. Bzw noch besser: wie es fertig aussehen soll. Und sag auch, was Dich daran hindert in Paint aus 2 Bildern im Voraus 1 zu machen und dieses dem Button zuzuordnen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Es ist nur ein schwarzes Dreieck, also nichts besonderes. Und weil ich das nicht im Paint mache? Ich hoffte hier zu lernen wie das gehen würde, wenn das überhaupt geht.

    Es soll nur ein quadratisches Button sein, die entweder 2 Dreiecke untereinander oder nebeneinander in die Mitte projiziert. Ein Bild habe ich nicht, aber es gibt bei z.B. Musikapps manchmal solche Buttons.
    Ein schwarzes Dreieck? Dafür gäbe es Schriftarten wie Wingdings3, siehe Anhang.
    Wie es mit OwnerDrawing geht, steht in Post#2.
    Für meine Variante sag ich nur: Recherche und selber machen
    Bilder
    • ButtonsWithTriangles.png

      2,48 kB, 439×250, 155 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    a.b_om schrieb:

    Ich hoffte hier zu lernen wie das gehen würde
    Das ist die falsche Herangehensweise.
    Etwas lernen zu wollen mit einer absurden Aufgabenstellung führt hier zur Un-Lust, weil halt der Sinn dahinter nicht so richtig vermittelbar ist.
    Ich versuche zu helfen, weil ich selbst dabei lernen möchte.
    Ich sehe, dass die Hinweise von @VaporiZed Dein Problem zu 100% lösen würden.
    Da fehlt mir einfach die Lust, quer zur guten Lösung nach einer unguten Lösung zu suchen.
    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!
    @VaporiZed
    Danke. ich werde das probieren

    @RodFromGermany
    Wie schon gesagt. Im Internet habe ich nicht genau das gefunden was ich brauchte. Ich hatte die Bilder schon und wollte diese nicht noch einmal zeichnen.
    Deswegen wollte ich das hier lernen, wenn es jemand wüsste. Interpretiere nicht zu viel hinein. Ich habe VaporiZed's Lösung bis jetzt noch nicht ausprobiert, weil
    ich es mit den Bilder machen wollte und diese nicht zusammenfügen wollte um diese noch später zu verwenden.

    Ach und wichtig. Es sollte kein Angriff auf dich RodFromGermany. Ich bin nicht sehr gut mit Worten und deshalb ist es vielleicht ein bisschen harsch erklärt.

    a.b_om schrieb:

    Es sollte kein Angriff
    Das kam nicht so an. :D
    Ich versuche normalerweise, Lösungen zu optimieren, und da ist Dein Problem prädestiniert für.
    Nur Du sträubst Dich dagegen.
    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!