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(); }
浙公网安备 33010602011771号