Feedback

C# - Button mit Hintergrundbild

Veröffentlicht von am 8/24/2009
(2 Bewertungen)
Immer wieder ist es noetig sich einen Button mit Hintergrundbild zu erstellen, dass geht ganz einfach mittels PictureBox.

Wie das ganze aussieht sieht man hier:
http://www.ploetzeneder.eu/softwareentwicklung/cvbnet/78-button-mit-hintergrundbild.html
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
	pictureBox1.BackgroundImage = new System.Drawing.Bitmap(@"C:\test.bmp");
	StringFormat strFormat = new StringFormat();
	SolidBrush myBrush = new SolidBrush(Color.Black);
	Font myfont = new Font("Arial", 16, FontStyle.Bold);
	int fheight =(int)e.Graphics.MeasureString("Test", myfont).Height;
	strFormat.Alignment = StringAlignment.Center;
	e.Graphics.DrawString("Test", myfont, myBrush, (pictureBox1.Width/2), (int)(pictureBox1.Height/2-0.5*fheight), strFormat);

}
Abgelegt unter Button, Hintergrundbild.

4 Kommentare zum Snippet

Kosmo schrieb am 8/24/2009:
Erstens, wenn man unbedingt ein Bild mit Text drin braucht, dann würde ich ein Label nehmen. Das unterstützt Bild mit Text schon von Haus aus ohne das man irgendwas selbst malen muss. Außerdem sieht man da auch gleich im Designer wie es aussieht ohne das Programm starten zu müssen.

Zweitens, ist es eine ganz schlechte Idee bei jedem Paint-Durchgang das Bild zu laden. Das wird ganz böse auf die Performance gehen.
Jan Welker schrieb am 8/24/2009:
Hier gibts ein Bsp.: http://bonn-to-code.de/dies-und-das.aspx (Ein Seitenkopf mit nur zwei Label-Controls)

Viele Wege führen nach Rom :-)
Ploetzi schrieb am 8/25/2009:
Auch bei der PictureBox kann ich das so machen das ich das Bild sofort sehe, hierzu definiere ich in der PictureBox das BackgroundImage einfach über die Eigenschaft im Eigenschaften Dialog
Christopher Wolf schrieb am 9/4/2009:
Na ja, aber man kann auch bei einem Button ein Image definieren per Designer...
Da muss man nicht direkt im Code mit arbeiten, das steigert nur die Unübersichtlichkeit des Codes und erschwert die Lesbarkeit dessen.

Im Designer, wenn der Button ausgewählt ist, gibt es die Properties "BackgroundImage" und BackgroundImageLayout, damit kann man das gleiche erzielen. Was auch gehen würde, wäre wenn es in der Propertie "Image" definiert werden würde, denn da liegt das Bild auch hinter dem Text und man kann sogar mit "Padding" bestimmen welchen abstand es von wo haben soll, nach dem man mit "ImageAlign" die Ausrichtung festgelegt hat.
 

Logge dich ein, um hier zu kommentieren!