读书人

winform满载OnPaint用GDI画了一些图型

发布时间: 2013-07-20 11:07:48 作者: rapoo

winform重载OnPaint用GDI画了一些图型,控件背景不透明了
winform上有一些PictureBox,原本是背景透明的。winform重载了OnPaint,在OnPaint中画了背景图,且用GDI画了一些图型后PictureBox就变不透明了。
分析了下原因,PictureBox背景透明时要获取父窗体的背景图片(BackGroundImage),这个背景图是父窗体OnPaint之前的背景。
目前还不知如何处理
[解决办法]
变通一下:可以给图片填充PictureBox容器的背景色。
[解决办法]
直接把pictureBox的图片画到窗体上面去!
[解决办法]
你自定义的时候不要忘记调用基类的OnPaint方法了
[解决办法]
透明控件:

class MyPictureBox:Control
{

protected override CreateParams CreateParams
{
get
{
CreateParams para = base.CreateParams;
para.ExStyle
[解决办法]
= 0x00000020; //WS_EX_TRANSPARENT 透明支持
return para;
}
}
protected override void OnPaintBackground(PaintEventArgs e) //不画背景
{
//base.OnPaintBackground(e);
}
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.DrawEllipse(System.Drawing.Pens.Aqua, new System.Drawing.Rectangle(100, 100, 100, 100));


base.OnPaint(e);
}
}
winform满载OnPaint用GDI画了一些图型,控件背景不透明了

读书人网 >C#

热点推荐