WPF 用Clip属性实现蒙板特效
2021-07-09 13:08
上一篇,已简单介绍Clip属性的用法,这一篇用它来实现简单蒙板功能,很简单,直接上代码
? ? ? ? xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
? ? ? ? Title="MainWindow" Height="537" Width="866" MouseMove="canvas_MouseMove" MouseDown="Window_MouseDown" MouseUp="Window_MouseUp">
? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ?
? ?
? ? ? ?
? ?
后台:
? ? public partial class MainWindow : Window
? ? {
? ? ? ? private bool isDown = false;
? ? ? ? public MainWindow()
? ? ? ? {
? ? ? ? ? ? InitializeComponent();
? ? ? ? ? ? RectangleGeometry rg = new RectangleGeometry();
? ? ? ? ? ? rg.Rect = new Rect(0, 0, this.Width, this.Height);
? ? ? ? ? ? gridGeometry = Geometry.Combine(gridGeometry, rg, GeometryCombineMode.Union, null);
? ? ? ? ? ? grid.Clip = gridGeometry;
? ? ? ? }
? ? ? ? PathGeometry gridGeometry = new PathGeometry();
? ? ? ? private void canvas_MouseMove(object sender, MouseEventArgs e)
? ? ? ? {
? ? ? ? ? ? if (isDown)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? EllipseGeometry rg = new EllipseGeometry();
? ? ? ? ? ? ? ? rg.Center = e.GetPosition(this);
? ? ? ? ? ? ? ? rg.RadiusX = 50;
? ? ? ? ? ? ? ? rg.RadiusY = 50;
? ? ? ? ? ? ? ? //排除几何图形
? ? ? ? ? ? ? ? gridGeometry = Geometry.Combine(gridGeometry, rg, GeometryCombineMode.Exclude, null);
? ? ? ? ? ? ? ? grid.Clip = gridGeometry;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? private void button1_Click(object sender, RoutedEventArgs e)
? ? ? ? {
? ? ? ? ? ? MessageBox.Show("OK!");
? ? ? ? }
? ? ? ? private void Window_MouseDown(object sender, MouseButtonEventArgs e)
? ? ? ? {
? ? ? ? ? ? isDown = true;
? ? ? ? }
? ? ? ? private void Window_MouseUp(object sender, MouseButtonEventArgs e)
? ? ? ? {
? ? ? ? ? ? isDown = false;
? ? ? ? }
? ? }
效果如下:
源码
上一篇:Wpf 抽屉效果
下一篇:WPF Clip实现百叶窗