常用Path路径

  • 正三角形(左):<Path Data="M40,0 L0,30 40,60 z" Stretch="Uniform"/>
  • 正三角形(上):<Path Data="M0,40 L30,0 60,40 z" Stretch="Uniform"/>
  • 正三角形(右):<Path Data="M0,0 L40,30 0,60 z" Stretch="Uniform"/>
  • 正三角形(下):<Path Data="M0,0 L30,40 60,0 z" Stretch="Uniform"/>
  • 矩形:<Path Data="M0,0 L1,0 L1,1 L0,1 z" Stretch="Uniform"/>
  • 圆形:<Path Data="M100,50 C100,77.614237 77.614237,100 50,100 C22.385763,100 0,77.614237 0,50 C0,22.385763 22.385763,0 50,0 C77.614237,0 100,22.385763 100,50 z" Stretch="Uniform"/>
  • 箭头(左):<Path Data="M40,0 L0,30 40,60" Stretch="Uniform"/>
  • 箭头(上):<Path Data="M0,40 L30,0 60,40" Stretch="Uniform"/>
  • 箭头(右):<Path Data="M0,0 L40,30 0,60" Stretch="Uniform"/>
  • 箭头(下):<Path Data="M0,0 L30,40 60,0" Stretch="Uniform"/>
  • 半圆(左):<Path Data="M34,0 L34,68 C15.222317,68 0,52.777684 0,34 0,15.222319 15.222317,3.5762787E-07 34,0 z" Stretch="Uniform"/>
  • 半圆(上):<Path Data="M34,0 C52.777684,7.1525574E-07 68,15.222319 68,34.000001 L0,34.000001 C3.5762787E-07,15.222319 15.222319,7.1525574E-07 34,0 z" Stretch="Uniform"/>
  • 半圆(右):<Path Data="M0,0 C18.777683,3.5762787E-07 34,15.222319 34,34 34,52.777684 18.777683,68 0,68 z" Stretch="Uniform"/>
  • 半圆(下):<Path Data="M0,0 L68,0 C68,18.777681 52.777684,34 34,34 15.222319,34 3.5762787E-07,18.777681 0,0 z" Stretch="Uniform"/>
  • 椭圆矩形(水平):<Path Data="M34,0 L76,0 C94.777683,9.8347664E-07 110,15.222319 110,34.000001 110,52.777684 94.777683,68.000001 76,68.000001 L34,68.000001 C15.222317,68.000001 0,52.777684 0,34.000001 0,15.222319 15.222317,9.8347664E-07 34,0 z" Stretch="Uniform"/>
  • 椭圆矩形(垂直):<Path Data="M34.000001,0 C52.777684,0 68.000001,15.222321 68.000001,34 L68.000001,76 C68.000001,94.777681 52.777684,110 34.000001,110 15.222319,110 8.9406967E-07,94.777681 0,76 L0,34 C8.9406967E-07,15.222321 15.222319,0 34.000001,0 z" Stretch="Uniform"/>
  • 菱形:<Path Data="M150,0 L0,75 0,225 150,300 300,225 300,75 z" Stretch="Uniform"/>

Stretch默认使用Uniform,在这种参数下矩形为正方形、圆形为正圆形,如果修改StretchFill,则根据容器高宽进行自由拉伸。

动画

  • 缓动函数(使用IE查看):http://tinyurl.com/animationeasing
  • WPF动画默认为60帧/s,程序会在系统资源允许的情况下努力使动画达到这个帧率,也可以在代码里手动指定帧率,修该附加属性Timeline.DesiredFrameRate的值。

变化

  • LayoutTransform:对元素使用该变换时会真正改变元素的大小和位置,从而引发布局容器的重新计算,因此,只当使用该变化一次,不要在动画中使用。
  • RenderTransform:显示变化,对元素运用该变化时并不会真正的改变元素的大小和位置,只是显示上面产生了变化,因此不会影响布局容器的测量和排版。
  • RenderTransformOrigin:使用变化时可以在具体变化中使用决对坐标,也可以直接指定元素的RenderTransformOrigin,从而使用相对坐标,比如"0.5,0.5"就是该元素的中心点。

字体

  • WPF有个问题是小文本显示不太清晰,原因是WPF没有使用GDI渲染文本,好的解决方法是增大文本,在通常的96dpi的显示器上,文本字号最小控制在15,如果小于这个值最好将文本的TextOptions.TextFormattingMode的值设置为Display,而不是标准的Ideal,这样做会使文本更清晰。
  • 检查字体版权是否允许在自己的程序中嵌入,可使用工具:https://www.microsoft.com/en-us/Typography/TrueTypeProperty21.aspx,如果右键属性显示可安装就可以使用。
  • 字体加载的两种方式,第一种字体为嵌入式资源:FontFamily="pack://application:,,,/WpfLabs;component/FontFamilyDemo/#Aileron";第二种字体为文件,可在后台代码中设置:new FontFamily(@"D:\FontFamilyDemo\FontFiles\#Aileron");

性能

  • WPF中,很多元素继承了Freezable,表示该元素支持冻结,冻结之后变更通知就失效了,但是内存占用会下降,很多情况下都可以将元素冻结,常见的比如SolidColorBrushStoryboard。在Xaml中使用时先引用命名空间xmlns:options="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options",然后对元素使用<Storyboard options:Freeze="True">
  • 集合虚拟化:启用UI虚拟化的两个附加属性 1、ScrollViewer.CanContentScroll="True";2、VirtualizingStackPanel.IsVirtualizing="True"
  • 大集合项容器再循环,项容器再循环提高了滚动性能,降低了内存消耗量:VirtualizingStackPanel.VirtualizationMode="Recycling"
  • 当集合中使用了分组,默认不会启用虚拟化,需要手动设置VirtualizingStackPanel.IsVirtualizingWhenGrouping属性纠正这个问题
<ListBox VirtualizingStackPanel.IsVirtualizingWhenGrouping="True"...>

绑定

XamlString.Format的使用参考:https://www.cnblogs.com/candyzkn/p/4476832.html

Uri绑定资源路径写法:pack://application:,,,/WpfLabs;component/FontFamilyDemo/#Aileron

Uri绑定本地文件路径写法:pack://siteoforigin:,,,/Aileron.jpg

错误验证

显示错误提示可使用专用的错误模板,即再真正的元素之上附加一层装饰层来展示真正的错误,注意在错误模板中使用AdornedElementPlaceholder来标识真正的控件元素,然后使用路径属性绑定去寻找真正的错误提示,参考19.4.5。

文章中提到的参考来源默认为《WPF编程宝典:使用C# 2012和.NET 4.5 第4版》

WPF技术点的更多相关文章

  1. WPF技术触屏上的应用系列(六): 视觉冲击、超炫系统主界面、系统入口效果实现

    原文:WPF技术触屏上的应用系列(六): 视觉冲击.超炫系统主界面.系统入口效果实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系统,54寸大屏电脑电视一体 ...

  2. WPF技术触屏上的应用系列(五): 图片列表异步加载、手指进行缩小、放大、拖动 、惯性滑入滑出等效果

    原文:WPF技术触屏上的应用系列(五): 图片列表异步加载.手指进行缩小.放大.拖动 .惯性滑入滑出等效果 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系统, ...

  3. WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放、图片立体轮播、图片倒影立体滚动)效果实现

    原文:WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放.图片立体轮播.图片倒影立体滚动)效果实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7 ...

  4. WPF技术触屏上的应用系列(三): 视频播放器的使用及视频播放、播放、暂停、可拖动播放进度效果实现

    原文:WPF技术触屏上的应用系列(三): 视频播放器的使用及视频播放.播放.暂停.可拖动播放进度效果实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系统,5 ...

  5. WPF技术触屏上的应用系列(一): 3D 图片(照片)墙、柱面墙(凹面墙或者叫远景墙、凸面墙或者叫近景墙)实现

    原文:WPF技术触屏上的应用系列(一): 3D 图片(照片)墙.柱面墙(凹面墙或者叫远景墙.凸面墙或者叫近景墙)实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7 ...

  6. WPF技术触屏上的应用系列(二): 嵌入百度地图、API调用及结合本地数据库在地图上进行自定义标点的实现

    原文:WPF技术触屏上的应用系列(二): 嵌入百度地图.API调用及结合本地数据库在地图上进行自定义标点的实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系 ...

  7. 使用WPF技术模拟手机界面

    原文:使用WPF技术模拟手机界面 1. 前言 WPF(Windows Presentation Foundation),即"Windows呈现基础",它的目的非常明确,就是用来把数 ...

  8. 工作总结:WPF技术讲解(大纲)

    一.WPF的历史 首先给大家讲述一下Winform的发展里程来展示WPF的历史,告诉大家WPF是在什么背景下诞生的. 二.WPF的特性 与MFC.Windows相比,WPF具有3D呈现特性,XMAL是 ...

  9. 基于ASP.NET WPF技术及MVP模式实战太平人寿客户管理项目开发(Repository模式)

    亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的.能够加我的QQ2059055336和我联系.  课程背景 本课程是教授使用WPF.ADO.NET.MVVM技术来实现太平人寿保险有限公司 ...

  10. 采用WPF技术,开发OFD电子文档阅读器

    前言 OFD是国家标准版式文档格式,于2016年生效.OFD文档国家标准参见<电子文件存储与交换格式版式文档>.既然是国家标准,OFD随后肯定会首先在政务系统使用,并逐步推向社会各个方面. ...

随机推荐

  1. windows+ubuntu时间修改问题

    只需要在ubuntu系统数输入一行指令即可 timedatectl set-local-rtc 1 --adjust-system-clock

  2. Java 异常注意事项

    异常的注意事项:   1,子类在覆盖父类方法时,父类的方法如果抛出了异常, 那么子类的方法只能抛出父类的异常或者该异常的子类.   2,如果父类抛出多个异常,那么子类只能抛出父类异常的子集.     ...

  3. 《高性能JavaScript》学习笔记(2)——日更中

    我说日更就日更,接着....今天从缓冲布局信息开始啦! -------------------2016-7-22 21:09:12------------------------------- 14. ...

  4. Hbase的安装和配置

    1,准备好hbase的linux环境下的压缩包,这里hadoop版本为hadoop2.5.0,hbase版本为 2,解压缩这个版本,不选src的,其实两个任一都行 进入到hbase安装包目录,我这里的 ...

  5. CodeForces Round #527 (Div3) D2. Great Vova Wall (Version 2)

    http://codeforces.com/contest/1092/problem/D2 Vova's family is building the Great Vova Wall (named b ...

  6. 设计模式PHP篇(二)————工厂模式

    一个很简单的工厂模式.代码如下: <?php interface Person { public function sex(); } class Man implements Person { ...

  7. 移植spdylay到libcurl

    Libcurl是第三方网络库,支持各种网络协议 SPDY是Google提出的用来替代HTTP1.1的网络协议, 目前google.com, facebook.com, twitter.com服务器端都 ...

  8. react-router之代码分离

    概念 无需用户下载整个应用之后才能访问访问它.即边访问边下载.因此我们设计一个组件<Bundle>当用户导航到它是来动态加载组件. import loadSomething from 'b ...

  9. 【ABP】Abp的AspNetZero5.0版本无法使用ctrl+f5调式

    原文:http://www.cnblogs.com/94pm/p/7942483.html AspNetZero是基于Abp框架开发的商业程序,最近从Abp交流群中得知5.0版本开始加入了防盗版的功能 ...

  10. 【bzoj5173】[Jsoi2014]矩形并 扫描线+二维树状数组区间修改区间查询

    题目描述 JYY有N个平面坐标系中的矩形.每一个矩形的底边都平行于X轴,侧边平行于Y轴.第i个矩形的左下角坐标为(Xi,Yi),底边长为Ai,侧边长为Bi.现在JYY打算从这N个矩形中,随机选出两个不 ...