码迷,mamicode.com
首页 > Windows程序 > 详细

WPF 用Clip属性实现蒙板特效

时间:2018-09-26 01:12:37      阅读:420      评论:0      收藏:0      [点我收藏+]

标签:path   nts   source   ffffff   技术分享   can   ima   link   csdn   

原文:WPF 用Clip属性实现蒙板特效

上一篇,已简单介绍Clip属性的用法,这一篇用它来实现简单蒙板功能,很简单,直接上代码

<Window x:Class="擦除效果.MainWindow"
? ? ? ? xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
? ? ? ? xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
? ? ? ? Title="MainWindow" Height="537" Width="866" MouseMove="canvas_MouseMove" MouseDown="Window_MouseDown" MouseUp="Window_MouseUp">
? ? <Grid>


? ? ? ? <Rectangle Height="100" HorizontalAlignment="Left" Margin="164,92,0,0" Name="rectangle1" Stroke="Black" VerticalAlignment="Top" Width="200" Fill="Lime" />
? ? ? ? <Button Content="Button" Height="83" HorizontalAlignment="Left" Margin="526,109,0,0" Name="button1" VerticalAlignment="Top" Width="115" Click="button1_Click" />
? ? ? ? <Grid x:Name="grid" ?Background="#88FFFFFF" ></Grid>
? ? </Grid>


? ? <Window.Background>
? ? ? ? <ImageBrush ImageSource="/擦除效果;component/Images/s01.jpg" />
? ? </Window.Background>
</Window>


后台:

? ? 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 用Clip属性实现蒙板特效

标签:path   nts   source   ffffff   技术分享   can   ima   link   csdn   

原文地址:https://www.cnblogs.com/lonelyxmas/p/9704339.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!