WPF窗口布局无边框设置和异性窗口

1、桌面应用中基础内容承载

window和page

区别page模式,上面导航,下面内容


2、主要属性配置:

无边框与异形窗体无边框的两种处理---WindowStyle、WindowChrome

1、启动在屏幕中心

WindowStartupLocation="CenterScreen"

2、无边框WindowStyle

WindowStyle="None"

3、背景透明

Background="Transparent"

会显示黑色

屏幕这块区域已经分配给窗口了,空白色

AllowsTransparency="True" 允许透明度

设置这个会变成透明色

4、窗口状态

最大化:WindowState="Maximized"

会遮挡任务栏

        public Window1()
        {
            InitializeComponent();
            this.Loaded += Window1_Loaded;
        }

        private void Window1_Loaded(object sender, RoutedEventArgs e)
        {
            this.WindowState = WindowState.Maximized;
        }

5、字体

FontSize="30" FontFamily="Microsoft YaHei" FontWeight="ExtraLight"

大小,雅黑,粗细

内部控件会继承这个字体设置

 

WindowStyle="None"的方式

最小化最大化动画效果没有了

边框阴影没有了

拖放、尺寸变动没有了

代码实现也没啥意义,出力不讨好,对性能也是有影响的

第二种无边框方式实现

WindowChrome

 

    <WindowChrome.WindowChrome>
        <WindowChrome />
    </WindowChrome.WindowChrome>

可以拖动,有阴影效果,也可以放大缩小

标题栏还在,双击可以放大,右键可以关闭

没有任何的功能损失,又实现了无边框

背景设置为透明,操作界面就会显示黑色,就会显示出标题栏和三个按钮,

设置为白色,就会隐藏掉标题栏和三个按钮,

 

CaptionHeight="50",设置标题栏的高度更大一些,原来的比较窄

按钮就命中不了了,有点打架,还是原来的三个按钮的操作

UseAeroCaptionButtons="False"  系统按钮不可点击,不止三个标题按钮,是所有的按钮

要想让自己的按钮可以生效,还需要设置WindowChrome.IsHitTestVisibleInChrome="True"

高度为0 就不能拖动了

为了保证能拖动,可以设置为窗口的高度

 考虑到性能和效果还是通过WindowChrome 的方式处理

 

 

 

 

 

 

3、异性窗口

任意形状的窗体---

窗口裁剪成我想要的形状

比如弹出这样的对话框

 <Window.Clip>
  <PathGeometry Figures="M0,0 200,0A75 75 0 0 1 200 150L0,150z" />
</Window.Clip>

 使用裁剪不能使用WindowChrome ,要使用WindowStyle的方式

可以裁剪出任意形状,心形

 

如何让异型窗口也可以移动?

 <Border MouseLeftButtonDown="Border_MouseLeftButtonDown" VerticalAlignment="Top" Background="Orange" Height="40"/>

可以拖动移动

        private void Border_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            this.DragMove();
        }

 

posted on 2025-03-28 14:29  张彦山  阅读(250)  评论(0)    收藏  举报