WPF 2D绘图(2)Geometry

摘要:
如果使用Shape的话,则需要三个FrameworkElement,这是对性能的挑战.FrameworkElement多的话将会大大降低程序的性能,这时还得采用传统的绘图方法.即Shape依赖于Geometry1000个Shape会产生1000个Geometry,但1000个Geometry可以放在1个Shape中,性能不言而喻了

Shape是对Geometry的一种封装,Shape本质上还是通过绘制Geometry的形状,然后以填充笔刷来呈现效果

image

如Rectangle

          <Path Stroke="Black" StrokeThickness="1" Fill="#CCCCFF">
            <Path.Data>
              <RectangleGeometry Rect="30,55 100 30" />
            </Path.Data>
          </Path>
<Rectangle Stroke="Black" StrokeThickness="1" Fill="#CCCCFF" Width="100" Height="30"></Rectangle>

这两者是等价的

Rectangle 是对RectangleGeometry 的封装实现,Rectangle 布局内部将会重写,所以封装了起始点

Geometry(没有笔刷的透明形状)本身无法呈现,必须放在Path容器中才可以

同样的其他的shape也对应Geometry,如果没有的话则以PathGeometry表示.

GeometryGroup

可以同时将多个Geometry放在一起成为一个新的图形

          <Path Stroke="Black" StrokeThickness="1" Fill="#CCCCFF">
            <Path.Data>
              <GeometryGroup FillRule="Nonzero">
                <LineGeometry StartPoint="10,10" EndPoint="50,30" />
                <EllipseGeometry Center="40,70" RadiusX="30" RadiusY="30" />              
                <RectangleGeometry Rect="30,55 100 30" />
              </GeometryGroup>
            </Path.Data>
          </Path>

好比Path是一张画布,代表着一个FrameworkElement。如果使用Shape的话,则需要三个FrameworkElement,这是对性能的挑战.FrameworkElement多的话将会大大降低程序的性能,这时还得采用传统的绘图方法.

即Shape依赖于Geometry

1000个Shape会产生1000个Geometry,但1000个Geometry可以放在1个Shape中,性能不言而喻了

免责声明:文章转载自《WPF 2D绘图(2)Geometry》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇阿里巴巴编码规范-考试认证ACM一些题目下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF 显示3D密集场景,堆场管理系统

又好久好久没写博客了,这次接着上文https://www.cnblogs.com/CSSZBB/p/12785380.html,上文用WPF 的绘图功能,制作了一个伪3D的2.5D控件ThreeDBox ,那么这玩意我是用来干啥那?没事做做着玩么? 简单来说,这个东西用来显示密集型的操作画面,比如显示一个堆场里集装箱的摆放情况,是不是稍微有点像了那?当然为...

WPF多语言化的实现

  Metro插件系统系列就暂时停一下,这次我们讨论一下WPF的资源本地化实现,主要用到的:CultureInfo,ResourceManger,MarkupExtension,RESX文件,这些都是.NET框架提供的。 项目结构: 运行结果: 可在程序运行时,实时切换语言 CultureInfo   CultureInfo类表示有关特定区域性的信息...

WPF附加属性

1、定义:一个属性原来不属于某个对象,但由于某种需求而被后来附加上去。附加属性的本质是依赖属性。 2、作用:将属性与数据类型解耦,让数据类型的设计的更加灵活。 3、举例:Human,School。Human中的一个人,他如果在学校里,就会有成绩等;如果在公司里,他就有部门等。此时的成绩和部门就是附加属性。 4、使用: 4.1) 使用DependencyPr...

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 属性...

Wpf 自定义控件(1)

1. 新建一个wpf工程,在工程下面新建  一个文件夹themes,在themes下新建两个资源字典文件generic.xaml和PrettySeekBar.xaml generic.xaml   <ResourceDictionary xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/pr...

贫民窟里的WPF系列讲座(一)

最近讲了一套完整的WPF课程,感觉教学效果还很不错。我准备给MSDN录15期左右的事情,这几篇文章是配合视频一起来看的。我相信大家都是很喜欢研究新技术的,但是研究新技术的时候会遇到很多困难,譬如书籍的选择,工具的选择,环境的配置等等很多很多问题。 这里我结合自己学习的历程,分享一下。这里我说一下我当时学习的硬件条件,由于我的笔记本是IBM的T40,CPU是...