图形如矩形、椭圆、路径等都从Shape类派生,它们一般表示规则或不规则图形,这些图形都是简单的二维图形,我相信大家都能理解的。

例一:矩形。

请看下面的XAML代码。

[html] view plaincopyprint?
  1. <Rectangle RadiusX="20" RadiusY="35"
  2. Fill="Blue"
  3. Canvas.Left="32" Canvas.Top="28"
  4. Width="200" Height="156"/>

图形比较适合在Canvas中定位,所以一系列图形的示例我都会放到Canvas中,对于Canvas的布局方式,我前面的文章中已经介绍过了。
Rectangle类表示一个矩形,RadiusX表示矩形圆角在X轴上的半径,RadiusY一样道理,Fill即填充画刷。
Rectangle类还是比较好理解,毕竟它简单。

下面我们再来看一个带轮廓的,并且用渐变画刷填充的矩形。

[html] view plaincopyprint?
  1. <Rectangle Canvas.Left="12" Canvas.Top="210"
  2. Stroke="Green"
  3. Height="112" Width="223"
  4. StrokeThickness="8.5">
  5. <Rectangle.Fill>
  6. <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
  7. <GradientStop Color="#FF408764" Offset="0"/>
  8. <GradientStop Color="Gold" Offset="0.65"/>
  9. <GradientStop Color="#FFC697E0" Offset="1"/>
  10. </LinearGradientBrush>
  11. </Rectangle.Fill>
  12. </Rectangle>

Stroke是轮廓的画刷,StrokeThickness是轮廓的大小,这些属性是从Shape类派生的,因此通用于所有子类。

例二:椭圆。

Ellipse表示椭圆,同样包括正圆这一特例(高度和宽度相等),这个类的使用也是非常简单,它的所有属性都是从共同基类Shape继承而来的。
请看下面的例子。

[html] view plaincopyprint?
  1. <Ellipse Canvas.Left="25" Canvas.Top="370"
  2. Width="145" Height="135"
  3. Stroke="Blue"
  4. StrokeThickness="3.8"
  5. Fill="Silver"/>

下图显示以上例子的运行效果。

例三:用Line绘制线段。

严格上讲,应该叫线段,因为直线是没有端点,无限延展的,而Line是有两个端点的,即开始点和结果点。
Line的使用也是很简单的,就是两个点(4个坐标),请看实例。

[html] view plaincopyprint?
  1. <Grid>
  2. <Line X1="60" Y1="35"
  3. X2="480" Y2="450"
  4. Stroke="Yellow"
  5. StrokeThickness="9.2"/>
  6. </Grid>

Line放在Grid中效果比较明显,因为Canvas中要设置Left,Top等属性,这样会干扰X1,Y1,X2,Y2的设置。
运行效果如下图所示。

例四:Polygon和Polyline

我们看到,这两个家伙长得很像,应该是亲兄弟。
它们具有相同的属性。

Points:就是构成该图形的所有点的集合。

这两个家伙可能你觉得有些头晕,文档的解释可能你看不懂,但是,看不懂不等于不能用,没关系,我们先来比较一下这两兄弟有啥不同。

[html] view plaincopyprint?
  1. <Grid>
  2. <Grid.ColumnDefinitions>
  3. <ColumnDefinition Width="*"/>
  4. <ColumnDefinition Width="*"/>
  5. </Grid.ColumnDefinitions>
  6. <Grid.RowDefinitions>
  7. <RowDefinition Height="*"/>
  8. <RowDefinition Height="Auto"/>
  9. </Grid.RowDefinitions>
  10. <TextBlock Grid.Column="0" Grid.Row="1" Text="Polygon" HorizontalAlignment="Center" Margin="0,20" FontSize="35"/>
  11. <TextBlock Grid.Column="1" Grid.Row="1" Text="Polyline" HorizontalAlignment="Center" Margin="0,20" FontSize="35"/>
  12. <Polygon Grid.Column="0" Grid.Row="0"
  13. Margin="50"
  14. Stroke="Yellow"
  15. StrokeThickness="6.8"
  16. Stretch="Fill">
  17. <Polygon.Points>
  18. <Point X="2" Y="6"/>
  19. <Point X="65" Y="37"/>
  20. <Point X="160" Y="120"/>
  21. <Point X="22" Y="390"/>
  22. </Polygon.Points>
  23. </Polygon>
  24. <Polyline Grid.Column="1" Grid.Row="0"
  25. Margin="50"
  26. Stroke="Yellow"
  27. StrokeThickness="6.8"
  28. Stretch="Fill">
  29. <Polyline.Points>
  30. <Point X="2" Y="6"/>
  31. <Point X="65" Y="37"/>
  32. <Point X="160" Y="120"/>
  33. <Point X="22" Y="390"/>
  34. </Polyline.Points>
  35. </Polyline>
  36. </Grid>

看到了吧,一个是闭合的,一个是不闭合的,如果看不清楚,自己动手,丰衣足食。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

意见,博 客编辑器经常死掉,点发布没响应,望 CSDN早点修复漏洞。

转载于:https://www.cnblogs.com/songtzu/archive/2012/07/24/2607122.html

Windows Phone开发(30):图形 转:http://blog.csdn.net/tcjiaan/article/details/7453028相关推荐

  1. Windows Phone开发(28):隔离存储B 转:http://blog.csdn.net/tcjiaan/article/details/7436959...

    上一节我们聊了目录的操作,这一节我们继续来看看如何读写文件. 首先说一下题外话,许多朋友都在摇摆不定,三心二意,其实这样的学习态度是很不好的,如果你对Windows phone开发有兴趣,如果你真想学 ...

  2. Windows Phone开发(29):隔离存储C 转:http://blog.csdn.net/tcjiaan/article/details/7447469...

    本文是隔离存储的第三节,大家先喝杯咖啡放松,今天的内容也是非常简单,我们就聊一件东东--用户设置. 当然了,可能翻译为应用程序设置合适一些,不过没关系,只要大家明白,它就是用于保存我们的应用程序的设置 ...

  3. Windows Phone开发(39):漫谈关键帧动画上篇 转:http://blog.csdn.net/tcjiaan/article/details/7550506...

    尽管前面介绍的几种动画会让觉得很好玩了,但是,不知道你是否发现,在前面说到的一系列XXXAnimation中,都有一个共同点,那就是仅仅针对两个值的目标值之间产生动画,如果使用By,将在原值和加上By ...

  4. Windows Phone开发(7):当好总舵主 转:http://blog.csdn.net/tcjiaan/article/details/7281421...

    吹完了页面有关的话题,今天我们来聊一下页面之间是如何导航的,在更多情况下,我们的应用程序不会只有一个页面的,应该会有N个,就像我们做桌面应 用开发那样,我们一个应用程序中可能不止一个窗体(极简单的程序 ...

  5. Windows Phone开发(32):路径之PathGeometry 转:http://blog.csdn.net/tcjiaan/article/details/7469512...

    说起路径这玩意儿,其实说的就是Path类,它藏在命名空间System.Windows.Shapes下,应该好找,它有一个很重要的属性Data,你不妨在"对象浏览器"中把它抓出来看看 ...

  6. Windows Phone开发(46):与Socket有个约会 转:http://blog.csdn.net/tcjiaan/article/details/7669315...

    不知道大家有没有"谈Socket色变"的经历?就像我一位朋友所说的,Socket这家伙啊,不得已而用之.哈,Socket真的那么恐怖吗? 其实这话一点也不假,Socket有时候真的 ...

  7. Windows Phone开发(16):样式和控件模板 转:http://blog.csdn.net/tcjiaan/article/details/7367260...

    在前面资源一文中也提过样式,样式就如同我们做HTML页排版时常用到的CSS样式表,它是对于特定娄型的可视化元素,应该可以直接说是针对控件的一种可重用的属性设置列表,这样对于需要设置相同属性值的同类型的 ...

  8. Windows Phone开发(27):隔离存储A 转:http://blog.csdn.net/tcjiaan/article/details/7425212...

    在很多资料或书籍上都翻译为"独立存储",不过,我想了一下,决定将IsolatedStorage翻译为"隔离存储",我想这样会更方便大家对这一概念的理解. 关于何 ...

  9. Windows Phone开发(18):变形金刚第九季——变换 转:http://blog.csdn.net/tcjiaan/article/details/7385056...

    变换不是一个好理解的概念,不是吓你,它涉及很多有关代数,几何,以及线性代数的知识.怎么?被我的话吓怕了?不用怕,尽管我们未必能够理解这些概念,只要我们知道怎么使用它们就是了. 其实,变换就是平面上一种 ...

最新文章

  1. 基于Centos7的autobahn-python+crossbar的环境搭建
  2. 代码下移快捷键_Intellij IDEA 快捷键大全
  3. 现存问题以及解决方案:在ASP.NET AJAX中从客户端向服务器端传送DataTable
  4. 如何提高数据安全性与可用性——行云管家堡垒机
  5. C语言程序练习-L1-032 Left-pad (20分)
  6. C# VS2017 winForm 使tableLayoutPanel 不闪烁
  7. HDU2553_N皇后_位运算DFS
  8. Python实现人工神经网络逼近股票价格
  9. 卢卡奇总体性原则_读书笔记|卢卡奇物化与无产阶级意识无产阶级的立场(1)...
  10. HDU1564 Play a game
  11. 《CCNA学习指南:Cisco网络设备互连(ICND1)(第4版)》——导读
  12. 2019五一联赛建模心得
  13. Python内置函数详解
  14. groupwise_SSL证书安装指南 - Groupwise 6 Netware Email Server
  15. Mac查看本地ip地址
  16. Windows 7 利用电脑自带工具定时开关和重启方法
  17. 笔记本电池电量保持在50~55%可延长电池寿命
  18. vivo X系列为什么能不断拉高手机上限?
  19. Ant简介及视频教程
  20. 第4-8课:方块消除游戏

热门文章

  1. php 数组值sum,php sum数组值(如果特定列的值重复)
  2. java jdbc事务管理_hibernate事务管理 (jdbc jta)
  3. python爬虫cookie池 与ip绑定_Python爬虫:设置Cookie解决网站拦截并爬取蚂蚁短租
  4. 160 - 32 genocide1
  5. 模拟退火算法解决np_P和NP问题与解决方案| 演算法
  6. linux 运维基础问题_Linux基础能力问题和解答
  7. oracle 查询不能重复,oracle – 如何防止在选择查询中选择重复行?
  8. gdb调试常用命令速查(段错误调试)
  9. [Linux]gdb调试多进程多线程例程
  10. 汇编:实现日历星期数查询工具