wpf中如何将窗口设置为透明

wpf中如何将窗口设置为透明,第1张

要将WPF窗口设置为透明,首先需要设置将Window的AllowsTransparency属性设置为true,并且将WindowStyle设置为None(窗口无边框)。然后设置窗口的Opacity属性即可。例如

XAML代码:

后台代码:

using System.Windows

namespace 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内容为空时会发生错误,如何将错误提示出来而不是结束程序? :那你在读取的时候直接判断一下文件是否为空就可以了呀


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11060009.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存