C#では、デフォルトでは、ラベル、画像のみプロパティのBackgroundImageプロパティを設定するのではなく、いくつかの特別なケースでは、我々は、ラベルのBackgroundImageプロパティを設定する必要があるので、我々は、ラベルコントロールに変更する必要があります。ラベルはControlクラスから継承し、Controlクラスは、背景画像、このプロパティで、ラベルもこの性質を持っていますが、VSで、我々はそれを見ることができない、Microsoftが契約の下で行われている、あなたは、私たちは[プロパティ]ウィンドウで直接設定することができるようにしたくありません。実際には、次のようにのみ、プロパティパネルに表示され示されていない多くのプロパティがあります。
したがって、我々は、以下に示すように少しコードすることができ、我々は制御継承ラベルを書き込み、Labelコントロールのコードを書き換えるその2つのメソッドを書き換えることができますすることができます。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
namespace Tempus.Component
{
public partial class LabelEx2 : Label
{
public LabelEx2()
{
}
protected override void OnPaintBackground(PaintEventArgs e)
{
return;
}
protected override void OnPaint(PaintEventArgs e)
{
//判断BackGroundImage是否为空
if (this.BackgroundImage != null)
{
e.Graphics.DrawImage(this.BackgroundImage, new System.Drawing.Rectangle(0, 0, this.Width, this.Height),
this.Location.X, this.Location.Y, this.Width, this.Height,
System.Drawing.GraphicsUnit.Pixel);
}
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
SolidBrush drawBrush = new SolidBrush(this.ForeColor);
e.Graphics.DrawString(this.Text, this.Font, drawBrush, new System.Drawing.Rectangle(0, 0, this.Width, this.Height));
//base.OnPaint(e);
}
}
}
调用时设置这个Label控件的BackgroundImage属性即可,Demo代码如下:
string strWineDetail1 = Application.StartupPath + "\\Resources\\" + "WineDetail1.jpg";
lblWineInfo.BackgroundImage = Image.FromFile(strWineDetail1);
转载于:https://www.cnblogs.com/kevinGao/archive/2011/12/02/2776056.html