窗体透明有两种实现方式:
① 比较简单的方法就两句话。
this.TransparencyKey = this.BackColor;
this.FormBorderStyle = FormBorderStyle.None;
适用于单色背景的窗体。
② 如果想要图片背景的窗体透明,就稍微有点复杂。
流程:获取图片不透明区域 -> 设置 Form.Region 为该区域;
◆ 首先需要定义两个函数
/// <summary>返回Region,表示由 不透明路线() 新建的区域</summary>
public Region 不透明区域(Bitmap 位图) { return new Region(不透明路线(位图)); }
/// <summary>返回GraphicsPath,表示所有不透明的点组成的路线</summary>
public GraphicsPath 不透明路线(Bitmap 位图) {
GraphicsPath gp = new GraphicsPath(); //新建图像路径来存储不透明的点
for (int x = 0; x < 源宽; x++) {
for (int y = 0; y < 源高; y++) {
Color c = 位图.GetPixel(x, y);
if (c.A != 0) { gp.AddRectangle(new Rectangle(x, y, 1, 1)); } //添加点到路径
}
}
return gp; //返回路径
}
◆ 获取图片的不透明区域,并将窗体区域设置为它
Bitmap 位图 = new Bitmap(@"C:\图片路径\123.png");
Region 保留区域 = 不透明区域(位图);
Form1.Region = 保留区域;
2013-06-09
2013-06-09
2013-06-09