Hintergrund eines Image in einen Button Kopieren

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von fraju.

    Hintergrund eines Image in einen Button Kopieren

    Hallo

    Ich lade das Background Image einer Form mit einen Bild.

    Darauf kommen Indizierte Buttons veränderlicher Größe und Position(zur Laufzeit)

    Nach der Positionierung möchte ich den Hintergrund des Bildes, welches durch den Button

    verdeckt wird in den Button laden.

    Frage:wie lade ich den Hintergrund in den Button?



    Danke und Grüße
    hallo fraju,

    da du die position und größe des buttons (auf deiner form) kennst,
    kannst du doch leicht den ausschnitt des backgroundimages der form kopieren und
    dem button als backgroundimage übergeben.

    gruss

    mikeb69
    Hallo mikeb69

    Diese Vorgehensweise ist mir bekannt.

    ..mit ein bisschen Hilfe sollte es schneller gehen.

    na,ja ..ist nicht lebenswichtig ,werde mich aber mal dranmachen.

    ;)



    Gruß

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

    VB.NET-Quellcode

    1. Imports System.Drawing.Drawing2D
    2. Public Class Form1
    3. 'Bild auswählen
    4. Private sFile As String = "Dein Pfad\Bild.jpg"
    5. 'Bild dem Img zuweisen
    6. Private Img As Image = Image.FromFile(sFile)
    7. Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
    8. 'Bild auf Form zeichnen
    9. e.Graphics.DrawImage(Img, 0, 0)
    10. End Sub
    11. Private Sub Button1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Button1.Paint
    12. 'Buttonhintergrund zeichnen
    13. e.Graphics.DrawImage(Img, -sender.Left, -sender.Top, Img.Width, Img.Height)
    14. End Sub
    15. End Class
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Hallo T1g0r



    Was macht das Programm?

    Es ladet eine Grafik und dann sehe ich bei mir nichts weiter?

    was sollte es machen?



    Bin aber schon so weit das ich indizierte Buttons auf der Formgrafig mit dem HinterGrund füllen kann.

    Benutze aber eine Pikturebox zur Hilfe, was mir nicht gefällt.

    MfG
    Im BackGroundimage der Form ein Bild und auf der Form ein Button.
    Und genau an der Stelle an der der Button ist, soll der Teil des Bild gezeichnet werden, der vom Button verdeckt wird. Und das passiert mit dem Code...
    So wie du es beschrieben hast.
    Oder wunderst du dich warum der Button nicht sichtbar ist?
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia
    Hallo

    Habe es jetzt noch einmal mir angeschaut.

    Es geht.

    Wie mache ich den Button Sichtbar. (Wie z.B. BorderStyle)

    Ständig oder nur wenn ich mit der Maus darüber fahre.

    Habe verschiedenes versucht.

    Den Button groß gemacht und zur hälfte vom FormImage verdeckt.

    Hab das Teil nicht sichtbar bekommen.

    Wenn das klappt kann ich mit indizierten Buttons versuchen.

    Gruß
    Hab versucht den Bildausschnitt etwas kleiner zu machen als den Button. Habe es aber auf die Schnelle nicht hinbekommen.
    Entweder konnte ich das Bild kleiner als den Button machen, damit man den Border sieht, dann fing das Bild aber an Position 0, 0 an und nicht ander Position des Buttons oder anders rum.
    Du könntest Linien am Rand des Buttons zeichnen, somit hast du zumindest eine Umrandung, damit man den Button erkennen kann.

    VB.NET-Quellcode

    1. Private Sub Button1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Button1.Paint
    2. 'Buttonhintergrund zeichnen
    3. Dim vPen As Pen = Pens.Black
    4. Dim vFont As New Font("Microsoft Sans Serif", 8.0F)
    5. Dim vSize As Size
    6. Dim vText As String = sender.name
    7. 'Image zeichnen
    8. e.Graphics.DrawImage(Img, -sender.Left, -sender.Top, Img.Width, Img.Height)
    9. 'Linien zeichnen
    10. e.Graphics.DrawLine(vPen, New Point(6, 3), New Point(sender.Width - 6, 3)) 'Oben
    11. e.Graphics.DrawLine(vPen, New Point(6, sender.Height - 3), New Point(sender.Width - 6, sender.Height - 3)) 'Unten
    12. e.Graphics.DrawLine(vPen, New Point(3, 6), New Point(3, sender.Height - 6)) 'Links
    13. e.Graphics.DrawLine(vPen, New Point(sender.Width - 3, 6), New Point(sender.Width - 3, sender.Height - 6)) 'Rechts
    14. 'Abgerundete Ecken zeichnen
    15. e.Graphics.DrawArc(vPen, 3, 3, 6, 6, 180, 90) 'Oben-Links
    16. e.Graphics.DrawArc(vPen, 3, sender.Height - 9, 6, 6, 90, 90) 'Unten-Links
    17. e.Graphics.DrawArc(vPen, sender.Width - 9, sender.Height - 9, 6, 6, 0, 90) 'Unten-Rechts
    18. e.Graphics.DrawArc(vPen, sender.Width - 9, 3, 6, 6, 270, 90) 'Oben-Rechts
    19. 'Text des Buttons
    20. 'Breite und Höhe des Textes ermitteln
    21. vSize = TextRenderer.MeasureText(vText, vFont)
    22. e.Graphics.DrawString(vText, vFont, Brushes.Black, (sender.Width - vSize.Width) \ 2, (sender.Height - vSize.Height) \ 2)
    23. End Sub

    Es gibt bestimmt eine noch andere Möglichkeit dazu, vielleicht hat ja jemand eine...
    wintoolz.de
    • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
    • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
    • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

    Benutze auch du Ecosia

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „T1g0r“ ()