找了很久

<Window x:Class="TestWebbowser.TestMaskWind"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Background="WhiteSmoke"
Title="MainWindow" Height="1277" Width="947" MouseMove="canvas_MouseMove" MouseDown="Window_MouseDown" MouseUp="Window_MouseUp"> <Grid Height="1024" Width="800">
<Grid.Background>
<ImageBrush ImageSource="s.jpg" />
</Grid.Background>
<Rectangle Height="100" HorizontalAlignment="Left" Margin="164,22,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="#E54E4E4E" Opacity="1" ></Grid>
</Grid>
</Window>

  后台代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes; namespace TestWebbowser
{
/// <summary>
/// Interaction logic for TestMaskWind.xaml
/// </summary>
public partial class TestMaskWind : Window
{
public TestMaskWind()
{ 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;
}
private bool isDown = false;
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)
{
// if (e.LeftButton == MouseButtonState.Pressed)
// {
isDown = true;
// }
} private void Window_MouseUp(object sender, MouseButtonEventArgs e)
{
isDown = false;
}
}
}

  

C# WPF 擦出效果,刮图效果的更多相关文章

  1. 如何增强ArcGIS插值图出图效果

    如何增强ArcGIS插值图出图效果 by 李远祥 在一些科研领域,经常会遇到使用插值的方式进行处理,并生成最终的插值图.插值图在ArcGIS里面非常容易生成,只要具备了采用点数据,通过ArcToolB ...

  2. Android 自定义View修炼-【2014年最后的分享啦】Android实现自定义刮刮卡效果View

    一.简介: 今天是2014年最后一天啦,首先在这里,我祝福大家在新的2015年都一个个的新健康,新收入,新顺利,新如意!!! 上一偏,我介绍了用Xfermode实现自定义圆角和椭圆图片view的博文& ...

  3. Android 自定义控件实现刮刮卡效果 真的就只是刮刮卡么

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40162163 , 本文出自:[张鸿洋的博客] 很久以前也过一个html5的刮刮卡 ...

  4. Android打造完美的刮刮乐效果控件

    技术:Android+Java   概述 趁着元旦假期之际,首先在这里,我祝福大家在新的2019年都一个个的新健康,新收入,新顺利,新如意!!! 上一偏,我介绍了用Xfermode实现自定义圆角和椭圆 ...

  5. Android 自己定义控件实现刮刮卡效果 真的就仅仅是刮刮卡么

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40162163 , 本文出自:[张鸿洋的博客] 非常久以前也过一个html5的刮刮 ...

  6. 简单入门canvas - 通过刮奖效果来学习

    一 .前言 一直在做PC端的前端开发,从互联网到行业软件.最近发现移动端已经成为前端必备技能了,真是不能停止学习.HTML5新增的一些东西,canvas是用的比较多也比较复杂的一个,简单的入门了一下, ...

  7. Material Design Reveal effect(揭示效果) 你可能见过但是叫不出名字的小效果

    Material Design Reveal effect(揭示效果) 你可能见过但是叫不出名字的小效果 前言: 每次写之前都会来一段(废)话.{心塞...} Google Play首页两个tab背景 ...

  8. Html5实现移动端、PC端 刮刮卡效果

    刚从南方回来就分了一个刮刮卡效果的页面,特么的我在烦恼怎么用H5去实现这个效果呢,好不容易写出来了,产品居然说:“既然你可以写出来这个效果那当然好了,开始我只是打算让你实现点击就出现呢!”… … 尼玛 ...

  9. HTML5 Canvas实战之刮奖效果

    近年来由于移动设备对HTML5的较好支持,经常有活动用刮奖的效果,最近也在看H5方面的内容,就自己实现了一个,现分享出来跟大家交流. 1.效果 2.原理 原理很简单,就是在刮奖区添加两个canvas, ...

随机推荐

  1. Struts2对于BigDecimal类型的转换问题

    Struts2对常用的数据类型如String.Integer.Double等都添加了转换器进行对应的转换操作. BigDecimal其实也算作是一种常用的数据类型,但Struts2没有对该类型设置转换 ...

  2. Delphi简介

  3. VIM如何自动保存文件、自动重加载文件、自动刷新显示文件

    1.手动重加载文件的命令是:e! 2.一劳永逸的方法是:vim提供了自动加载的选项 autoread,默认关闭. 在vimrc中添加 set autoread即可打开自动加载选项,相关选项: :hel ...

  4. 解释c# Peek 方法

    peek是用来确定你read的文件是否结束了,如果结束了会返回int型 -1 , 举个例子,你可以在输出每一行之前检查一下文件是否结尾,如果没结束就输出此行. StreamReader sr = ne ...

  5. 下载并安装eclipse

    一. 下载eclipse 1. 进入eclipse官网——www.eclipse.org 2. 点击“DOWNLOAD”,进入下载界面 3. 点击“Download Packages”,选择所需ecl ...

  6. (转) Weblogic在Linux上节点服务器启动正常,计算机连接不上

    对于服务器AdminServer, 与计算机Machine-0相关联的节点管理器无法访问.               所有所选服务器当前都处于与此操作不兼容的状态, 或未与运行的节点管理器关联, 或 ...

  7. web.xml中url-pattern中/和/*的区别(来自网络)

    其中/和/*的区别: < url-pattern > / </ url-pattern >   不会匹配到*.jsp,即:*.jsp不会进入spring的 Dispatcher ...

  8. web性能优化--减少客户端请求数(一)

    多图标合并,用css分隔 设置较长时间的过期时间 合并多个css文件 合并多个js文件 根据域名划分内容 首先介绍一款速度测试工具:webpagetest(填上url,username,passwor ...

  9. MySql截取手机号

    IF(IFNULL(phone_number,'')='','',CONCAT(LEFT(phone_number,3),'****',RIGHT(phone_number,4)))  phone_n ...

  10. percona 5.7 + tokudb

    percona 5.7 + tokudb Percona + TokuDB 部署 # 参考资料https://www.kancloud.cn/devops-centos/centos-linux-de ...