今天试写了一个.net cf下的自定义控件,但是在调试时发现在执行vs保存操作的时候老是弹出"80042729"错误提示,后来发现是窗体资源文件出错了,打开引用该控件的窗体时,页面提示没有找到自定义控件的一些属性,试着重新编译自定义控件项目后再打开窗体就正常了。 不知道是不是原因,总感觉有的时候莫名其妙。
以下就是自定义控件ImageLabel的图例:
主要源码如下所示:
//窗体背景图
private Image image;
private Bitmap m_bmpOffscreen;
public ImageLabel()
{
InitializeComponent();
//默认控件大小
Size = new Size(440, 468);
}
/// <summary>
/// 一个用于显示的图像, Image 属性
/// </summary>
public Image Image
{
get { return image; }
set { image = value; }
}
protected override void OnPaintBackground(PaintEventArgs e)
{
//不执行任何操作
}
protected override void OnPaint(PaintEventArgs e)
{
Graphics gxOff; //屏幕外的图像
Rectangle imgRect; //图像矩形
m_bmpOffscreen = new Bitmap(ClientSize.Width, ClientSize.Height);
gxOff = Graphics.FromImage(m_bmpOffscreen);
gxOff.Clear(BackColor);
if (image != null)
{
//将图像相对于控件居中
int imageLeft = (Width - image.Width)/2;
int imageTop = (Height - image.Height)/2;
imgRect = new Rectangle(imageLeft, imageTop, image.Width,image.Height);
//绘制图像
gxOff.DrawImage(image, imgRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, null);
}
//从内存位图绘制
e.Graphics.DrawImage(m_bmpOffscreen, 0, 0);
base.OnPaint(e);
}