要将WPF窗口设置为透明,首先需要设置将Window的AllowsTransparency属性设置为true,并且将WindowStyle设置为None(窗口无边框)。然后设置窗口的Opacity属性即可。例如
XAML代码:
后台代码:
using System.Windowsnamespace WpfApplication1
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent()
}
// 关闭窗口
private void Button_Click(object sender,
RoutedEventArgs e)
{
this.Close()
}
}
}
注意:
(1)只有将Window设置为无边框(WindowStyle="None")时,才可设置窗口的透明度;否则,系统会报错。
(2)Window的AllowsTransparency必须设置为true.
(3)透明度属性Opacity=1时,窗口不透明;Opacity=0时,窗口全透明。
窗体透明有两种实现方式:
① 比较简单的方法就两句话。
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 = 0x <源宽x++) {
for (int y = 0y <源高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 = 保留区域
设置窗体透明度:Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long使用这个API函数,改变balpha的值就可以了,取值范围是0-255,0是完全透明,255是完全不透明 设置图片某一颜色为透明色:不知道有没有这样的函数,我只会用bitblt来复制。 读取txt内容而txt内容为空时会发生错误,如何将错误提示出来而不是结束程序? :那你在读取的时候直接判断一下文件是否为空就可以了呀
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)