读书人

请问一下, 怎样让用户自定义控件实现背

发布时间: 2013-07-11 15:38:46 作者: rapoo

请教一下, 怎样让用户自定义控件实现背景透明.特别是当多个控件重叠时.
现在运行时的效果下如图:
请问一下, 怎样让用户自定义控件实现背景透明.特别是当多个控件重叠时

请问, 怎样让控件白色的部份变为透明呢?


#region 透明
public bool drag = false;
public bool enab = false;
private Color fillColor = Color.White;
private int opacity = 100;

public Color FillColor
{
get
{
return this.fillColor;
}
set
{
this.fillColor = value;
if (this.Parent != null) Parent.Invalidate(this.Bounds, true);
}
}

public int Opacity
{
get
{
if (opacity > 100) { opacity = 100; }
else if (opacity < 1) { opacity = 1; }
return this.opacity;
}
set
{
this.opacity = value;
if (this.Parent != null) Parent.Invalidate(this.Bounds, true);


}
}

protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x20;
return cp;
}
}
#endregion



使用以上代码以后, 控件的空白部分可以透明, 但是对控件进行拖动以后, 透明的部分又回变回白色, 向高手请教.谢谢.
[解决办法]

没弄过。。看这个对你有帮助不。。

[解决办法]

我看也像。。。好像就是多了个对OnPaint的重写。。
[解决办法]
学习中
[解决办法]
如果你用户控件中是一副位图的话,你可以采用窗口区域对象的方式,这样可以保证实现任何不规则的透明效果
另外透明这种方式,当控件多的时候绘制会很闪耀的。

下面是取得位图区域的代码,你可以根据位图在控件中的位置换算一下,否则坐标就是0,0开始了。


/// <summary>
/// 用指定的屏蔽颜色返回指定位图的GraphicsPath对象,该方法不能返回JPG图象的区域!
/// </summary>
/// <param name="Bmp">指定的位图</param>
/// <param name="TransparentColor">图象中要屏蔽的颜色</param>
/// <returns>Returns GraphicsPath</returns>
//如果要取得Region对象: Region region = new Region(GetBitmapRegion(...)返回值)
//this.Region = region 即可将窗口区域转换该图形样式(在Form_Load(...)中)


public static GraphicsPath GetBitmapPath(Bitmap Bmp)
{
if (Bmp == null) return null;

GraphicsPath Path = new GraphicsPath();//创建图形路径
int x = 0, y = 0;
Rectangle Rect;

for (x = 0; x <= Bmp.Width - 1; x++) //x方向
{
for (y = 0; y <= Bmp.Height - 1; y++) //y方向
{
Rect = new Rectangle(x, y, 1, 1);//创建一个单像素矩型区域,非屏蔽色点的坐标
Path.AddRectangle(Rect);
}
}
return Path;
}


[解决办法]
Label 可以指定ImageList,而ImageList可以将某种颜色处理掉,比如你的例子中的白色

可以参考
http://topic.csdn.net/u/20110507/12/b25a1f90-c250-4765-ab19-07b51743fe45.html
[解决办法]
系统自带的所有透明方式,都无法让你在两个或多个子控件之间呈现透明效果。。。。

我也疑惑白色的部分是什么?是用户控件的背景吗?


[解决办法]
帮楼主顶一下
[解决办法]
帮LZ顶下,新手多给点分哈 LZ
[解决办法]

引用:
帮LZ顶下,新手多给点分哈 LZ

++
[解决办法]
Color.Transparent

[解决办法]
mark

读书人网 >C#

热点推荐