首页 > Windows开发 > 详细

WPF Clip实现百叶窗

时间:2018-09-26 00:33:01      阅读:184      评论:0      收藏:0      [点我收藏+]
原文:WPF Clip实现百叶窗

效果图;

技术分享图片


后台代码:

public MainWindow()
? ? ? ? {
? ? ? ? ? ? InitializeComponent();
? ? ? ? ? ? pg = new PathGeometry();
? ? ? ? ? ? timer = new DispatcherTimer();
? ? ? ? }


? ? ? ? PathGeometry pg = null;
? ? ? ? DispatcherTimer timer = null;
? ? ? ? //设置矩形的大小
? ? ? ? double size = 100;
? ? ? ? //矩形的初始宽度
? ? ? ? double size1 = 0;
? ? ? ? private void button1_Click(object sender, RoutedEventArgs e)
? ? ? ? {
? ? ? ? ? ? if (pg != null)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? pg.Clear();
? ? ? ? ? ? }
? ? ? ? ? ? timer.Interval = TimeSpan.FromMilliseconds(1);
? ? ? ? ? ? timer.Tick += new EventHandler(timer_Tick);
? ? ? ? ? ? timer.Start();
? ? ? ? }


? ? ? ? private void timer_Tick(object sender, EventArgs e)
? ? ? ? {
? ? ? ? ? ? if (size1 <= size)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? for (int i = 0; i < Math.Ceiling(image1.Width / size); i++)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? RectangleGeometry rg = new RectangleGeometry();


? ? ? ? ? ? ? ? ? ? //设置矩形区域大小
? ? ? ? ? ? ? ? ? ? rg.Rect = new Rect(i * size, 0, size1, image1.Height);


? ? ? ? ? ? ? ? ? ? //合并几何图形
? ? ? ? ? ? ? ? ? ? pg = Geometry.Combine(pg, rg, GeometryCombineMode.Union, null);
? ? ? ? ? ? ? ? ? ? image1.Clip = pg;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? timer.Stop();
? ? ? ? ? ? ? ? size1 = 0;
? ? ? ? ? ? }
? ? ? ? ? ? size1++;
? ? ? ? }
? ? }


根据这个效果,上下百叶窗效果也很容易实现,并改变白色矩形形状也就容易多了,剩下自己研究吧。

WPF Clip实现百叶窗

原文:https://www.cnblogs.com/lonelyxmas/p/9704336.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!