zoukankan      html  css  js  c++  java
  • 2019-7-29-WPF-元素裁剪-Clip-属性

    title author date CreateTime categories
    WPF 元素裁剪 Clip 属性
    lindexi
    2019-7-29 10:0:13 +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;
            }

    WPF 通过 DrawingContext DrawImage 绘制图片

    博客园博客只做备份,博客发布就不再更新,如果想看最新博客,请到 https://blog.lindexi.com/

    知识共享许可协议
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名[林德熙](http://blog.csdn.net/lindexi_gd)(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我[联系](mailto:lindexi_gd@163.com)。
  • 相关阅读:
    Problem: 数字的拆分之二
    Problem: 数字的拆分之一
    Problem : [Usaco2014 Dec]Piggy Back
    Problem: 八中厕所的门
    Problem : [Usaco2007 Open]Catch That Cow 抓住那只牛
    vim设置
    生活致富靠传销?北海警方:排版错误已整改
    SpringBoot(二)——配置文件
    SpringBoot(一)——IDEA创建项目
    Redis(一)——安装与使用
  • 原文地址:https://www.cnblogs.com/lindexi/p/12086471.html
Copyright © 2011-2022 走看看