22.1.11 关于无边框窗体的初步尝试(包含未解决)

应要求不用WPF自带的边框以及最小化、最大化和关闭。自己写的,且只需要关闭

在设置WindowStyle="None"取消边框后,(另外设置AllowsTransparency=”True”,可以把多余的黑边去除。)

发现无法移动。而且显示也不是居中。这些都好解决

1.居中

public partial class MainWindow : Window
{
  public MainWindow()
  {
    WindowStartupLocation = WindowStartupLocation.CenterScreen;
    InitializeComponent();
  }
}

2.移动

protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
  base.OnMouseLeftButtonDown(e);

  // Begin dragging the window
  this.DragMove();
}

官方DragMove

https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.window.dragmove?view=netframework-4.8

其它可以参考:

https://www.cnblogs.com/xietianjiao/p/7325137.html

但最后遇到一个问题没有解决:

在移动后因为操作系统功能,在窗体接触屏幕边缘时会全屏显示,但这个时候我没法再移动窗体。

以为如果是用自带边框,相当于我能在全屏后拖住边框,还能取消全屏。

但无边框的话真不知道怎么操作

唯一在网上看到一条可能是解决方法的方案,但没时间研究了,就先附上

https://blog.csdn.net/qq_19764639/article/details/96125324

https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.shell.windowchrome?redirectedfrom=MSDN&view=netframework-4.5#%E5%AE%9A%E4%B9%89

关于关闭是使用了button按键

里面参数:

  • SnapsToDevicePixels以在整个 UI 上启用像素对齐呈现。 对于运行在大于 96 dots per inch (dpi) 的设备,像素对齐呈现可以最小化在单一实线附近出现的抗锯齿视觉瑕疵。

https://www.cnblogs.com/liancs/archive/2012/06/15/3879272.html

https://blog.csdn.net/dearbigdog/article/details/12002525

  •  RecognizesAccessKey:是否识别特殊字符(eg.下划线)

WPF中的RecognizesAccessKey问题 - 走遍江湖 - 博客园 (cnblogs.com)

  • Stroke:虚线颜色
  • radiusx和radiusY:对于椭圆来说,就是a和b的长

原文地址:https://www.cnblogs.com/rinroll/p/15787602.html