Line

  在两个坐标点之间画一条直线,通过四个属性设置它的起始和结束

 <Line Stroke="Blue" StrokeThickness="3" X1="20" Y1="20" X2="300" Y2="20"></Line>

  如果线条是画在Canvas画布中,那么Canvas的附加属性Top和Left对它是有效的

  <Line Name="a" Stroke="Orange" X1="20" Y1="20" X2="120" Y2="100"></Line>
  <Line Name="b" Stroke="Orange" X1="20" Y1="20" X2="120" Y2="100"
Canvas.Left="15" Canvas.Top="50"></Line>

Polyline

  折线和直线类似,只不过是把多个直线连接在一块,它把所有转折点的坐标都放在了Points属性中,然后坐标点之间用空格分离,X轴与Y轴之间也可以用空格,为了可读性所以最好使用","符号;你也可以把两头接起来,形成一个图形

  <Polyline Stroke="Green" StrokeThickness="3"   Points="5,100 15,100 35,200 55,55 70,200 80,160 90,200 105,150 115,200 125,100 140,200 155,155 180,155"></Polyline>
<Polyline Stroke="Green" StrokeThickness="3" Fill="Yellow" Points="5,100 15,100 35,200 55,55 70,200 80,160 90,200 105,150 115,200 125,100 140,200 155,155 180,155 5,100"></Polyline>

Polygon

  Polygon可以用来绘制多边形,和Polyline类似,但是他能自动把最后一个点和起始点连接起来而不需要像Polyline那样在Points属性最后再加上起始点

 <Polygon Stroke="Green" StrokeThickness="3" Fill="Yellow" Points="5,100 15,100 35,200 55,55 70,200 80,160 90,200 105,150 115,200 125,100 140,200 155,155 180,155"></Polygon>

Rectangle

  绘制矩形,通过Width和Height属性就能指定矩形的宽高

<Rectangle Canvas.Left="50" Canvas.Top="30" Width="200" Height="100" Fill="Aqua"></Rectangle>

Ellipse

  Ellipse用于绘制圆形和椭圆,也是通过Width和Height属性改变圆的形状

 <Ellipse Fill="Beige" Width="100" Height="100"></Ellipse>
 <Ellipse Canvas.Left="130" Fill="BlueViolet" Width="200" Height="100"></Ellipse>

Path

  绘制一系列的曲线和直线,例如通过它画一条曲线;在Data属性中M定义了线条的起点(20,20),Q指定了二次贝塞尔曲线控制点(100,100)和终点(200,20)

 <Path Stroke="BurlyWood" StrokeThickness="5" Data="M 20 20 Q 100,100 200,20"></Path>

  在Data中的特殊字符常见的有以下这几种,

  M表示起点

  Z闭合图形

  L到指定点的线条

  H水平线,V垂直线

  Q二次贝塞尔曲线,T光滑的二次贝塞尔曲线

  C三次贝塞尔曲线,S光滑的三次贝塞尔曲线

  A椭圆弧

   <Path Fill="Yellow" Stroke="Blue" Margin="5" Canvas.Top="110" Canvas.Left="230" >
       <Path.Data>
           <GeometryGroup>
               <RectangleGeometry Rect="0,0 100,100"></RectangleGeometry>
               <EllipseGeometry Center="150,50" RadiusX="35" RadiusY="25"></EllipseGeometry>
           </GeometryGroup>
       </Path.Data>
   </Path>
   <Path Canvas.Left="10" Canvas.Top="20" Fill="Yellow" Stroke="Blue" StrokeThickness="2.5" Data="M120,5 L128,80 L220,50 L160,130 C200,280 100,50 70,260 L60,140 L0,110 L70,80 Z" StrokeLineJoin="Round"></Path>

 

WPF系列:画图的更多相关文章

  1. [WPF系列]-数据邦定之DataTemplate 对分层数据的支持

    到目前为止,我们仅讨论如何绑定和显示单个集合. 某些时候,您要绑定的集合包含其他集合. HierarchicalDataTemplate 类专用于 HeaderedItemsControl 类型以显示 ...

  2. [WPF系列]-数据邦定之DataTemplate 根据对象属性切换模板

      引言 书接上回[WPF系列-数据邦定之DataTemplate],本篇介绍如何根据属性切换模板(DataTemplate)   切换模板的两种方式:   使用DataTemplateSelecto ...

  3. [WPF系列]-TreeView的常用事项

    引言 项目经常会用Treeview来组织一些具有层级结构的数据,本节就将项目使用Treeview常见的问题作一个总结. DataBinding数据绑定 DataTemplate自定义 <Hier ...

  4. [WPF系列]从基础起步学习系列计划

    引言 WPF技术已经算不什么新技术,一搜一大把关于WPF基础甚至高级的内容.之前工作中一直使用winform所以一直没有深入学习WPF,这次因项目中使用了WPF技术来实现比较酷的展示界面.我在这里只是 ...

  5. WPF系列教程——(三)使用Win10 Edge浏览器内核 - 简书

    原文:WPF系列教程--(三)使用Win10 Edge浏览器内核 - 简书 在需要显示一些 H5网站的时候自带的WebBrowser总是显示不了,WebBrowser使用的是IE内核,许多H5新特性都 ...

  6. WPF系列教程——(一)仿TIM QQ界面 - 简书

    原文:WPF系列教程--(一)仿TIM QQ界面 - 简书 TIM QQ 我们先来看一下TIM QQ长什么样,整体可以将界面分为三个部分 TIM QQ 1. 准备 阅读本文假设你已经有XAML布局的基 ...

  7. WPF系列教程——(二)使用Prism实现MVVM设计模式 - 简书

    原文:WPF系列教程--(二)使用Prism实现MVVM设计模式 - 简书 本文假设你已经知道MVVM设计模式是什么,所以直接进入正题,今天我们就用Prism来实现WPF的MVVM设计模式,百度上关于 ...

  8. 使用WPF创建画图箭头

    原文:使用WPF创建画图箭头 今天要给leader line画个箭头,所以就google一下,找到下面的文章,写的不错,可以实现我的需求,所以就摘录下来. 我把源代码中的arraw.cs加入到我的工程 ...

  9. WPF系列 —— 控件添加依赖属性(转)

    WPF系列 —— 控件添加依赖属性 依赖属性的概念,用途 ,如何新建与使用.本文用做一个自定义TimePicker控件来演示WPF的依赖属性的简单应用. 先上TimePicker的一个效果图. 概念 ...

随机推荐

  1. Spring AOP在函数接口调用性能分析及其日志处理方面的应用

    面向切面编程可以实现在不修改原来代码的情况下,增加我们所需的业务处理逻辑,比如:添加日志.本文AOP实例是基于Aspect Around注解实现的,我们需要在调用API函数的时候,统计函数调用的具体信 ...

  2. 一个App完成入门篇(三)-完善主框架

    本节教程将继续带领大家完善教学demo 导入项目 完善主框架 完成viewShower子视图 打开新页 启动动画 将要学习的demo效果图如下所示 1. 如何导入完整项目 本节示例demo请参考下载地 ...

  3. JavaScript 正则表达式上——基本语法

    定义 JavaScript种正则表达式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串 1. 构造函数 var reg=new RegExp('<%[^%>]+%&g ...

  4. IIS中发布网站的问题

    1.将网站发布到IIS,访问发生如下错误: HTTP 错误 500.21 - Internal Server Error处理程序"PageHandlerFactory-Integr" ...

  5. WebApi系列~自主宿主HttpSelfHost的实现

    回到目录 宿主一词我们不会陌生,它可以看作是一个基础设施,它为一些服务和功能提供最底层的支持,如你的web应用程序可以运行在iis或者apache上,而这两个东西就是web应用程序的宿主,而今天说的自 ...

  6. sublime text2小技巧

    1. 文件快速导航: 这是sublime上面很好用的功能之一,ctrl+p可以调出窗口,菜单上的解释是gotoanythings ,确实如其所言,调出窗口后,直接输入关键字,可以在已打开的项目文件夹中 ...

  7. WPF自定义控件与样式(12)-缩略图ThumbnailImage /gif动画图/图片列表

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要针对WPF项目 ...

  8. C++和java多态的区别

    C++和java多态的区别 分类: Java2015-06-04 21:38 2人阅读 评论(0) 收藏 举报  转载自:http://www.cnblogs.com/plmnko/archive ...

  9. iOS_UIImage_Gif的合成

    /** 1. 数据获取 2. 创建Gif文件 3. 配置Gif属性 4. 单帧添加到gif */ github地址: https://github.com/mancongiOS/UIImage.git ...

  10. SQL Server逻辑读、预读和物理读

    SQL Server数据存储的形式 预读:用估计信息,去硬盘读取数据到缓存.预读100次,也就是估计将要从硬盘中读取了100页数据到缓存. 物理读:查询计划生成好以后,如果缓存缺少所需要的数据,让缓存 ...