ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2019-11-29-WPF-元素裁剪-Clip-属性

2019-12-21 09:00:59  阅读:281  来源: 互联网

标签:11 10 30 Clip 裁剪 29 new WPF


原文:2019-11-29-WPF-元素裁剪-Clip-属性

title author date CreateTime categories
WPF 元素裁剪 Clip 属性 lindexi 2019-11-29 08:24:24 +0800 2019-1-3 15:57:0 +0800 WPF

本文介绍如何在 WPF 使用 Clip 裁剪元素

在 WPF 的 UIElement 提供了 Clip 属性,这个属性默认是空,但是如果设置了这个属性就会对元素进行裁剪

这个属性是一个 Geometry 属性,设置的值表示裁剪之后剩下的部分,如写一个简单的类继承 UIElement 然后对他进行裁剪

    class SisdecereYipuVayderyecallMawqere : UIElement
    {
        /// <inheritdoc />
        public SisdecereYipuVayderyecallMawqere()
        {
        }

        /// <inheritdoc />
        protected override void OnRender(DrawingContext drawingContext)
        {
            drawingContext.DrawRectangle(Brushes.Black,null,new Rect(10,10,100,100));
        }
    }

现在这个类会在 10,10 的坐标画出大小是 100 的矩形

对他裁剪,设置裁剪的是矩形裁剪

        public SisdecereYipuVayderyecallMawqere()
        {
            Clip = new RectangleGeometry(new Rect(30, 30, 50, 50));
        }

从图片很难看出来不同,只是可以看到两个矩形,第一个矩形比较大

对他进行圆形裁剪

        public SisdecereYipuVayderyecallMawqere()
        {
            Clip = new EllipseGeometry(new Point(30, 30), 10, 10);
        }

可以看到显示的是圆形

因为设置 Clip 属性是一个裁剪的窗口,只有在裁剪区域之内才可以显示

因为 Geometry 是可以做到不连续的,所以可以做出部分的透明,如裁剪两个矩形

        public SisdecereYipuVayderyecallMawqere()
        {
            Geometry geometry = new RectangleGeometry(new Rect(10,10,10,10));
            geometry = Geometry.Combine(geometry, new RectangleGeometry(new Rect(30, 30, 10, 10)),
                GeometryCombineMode.Union, null);

            Clip = geometry;
        }

上面代码使用 Geometry.Combine 合并两个图形

WPF 通过 DrawingContext DrawImage 绘制图片

标签:11,10,30,Clip,裁剪,29,new,WPF
来源: https://www.cnblogs.com/lonelyxmas/p/12075863.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有