原文: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 绘制图片

最新文章

  1. Shell脚本_判断根分区使用率
  2. Html 小插件2
  3. ubuntu 14.04 使用极点五笔输入法
  4. SAP HANA 能做什么
  5. Java中几种常量池的区分
  6. Xposed 初尝
  7. Java注释分类
  8. debian apt sources
  9. 20165314《网络对抗技术》week1 Exp0 Kali安装
  10. 关于while read line 循环中变量作用域的问题
  11. kubernetes CRD学习笔记
  12. day83
  13. 利用fstream进行文件拷贝测试
  14. 使用 DirectX 创建 3D 图形
  15. 手把手让你实现开源企业级web高并发解决方案(lvs+heartbeat+varnish+nginx+eAccelerator+memcached)
  16. C. Edgy Trees Codeforces Round #548 (Div. 2) 【连通块】
  17. Samba 3.6.9 安装、管理
  18. Vue 组件6内联模板
  19. 启动MongoDB时,提示:error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
  20. G1垃圾收集或者Java中垃圾收集的名词收集

热门文章

  1. Java内功心法,Set集合的详解
  2. django2-登录与出版社
  3. npm命令集合
  4. Qt 显示图片
  5. Mysql—配置文件my.ini或my.cnf的详解
  6. July 13th, 2018. Friday, Week 28th.
  7. 4.Java基础_Java类型转换
  8. 浅谈js的事件冒泡和事件捕获
  9. oracle 分组拼接
  10. [C4] Andrew Ng - Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization