目标:在两天内完成一个环形图的绘制

准备:第5章 矢量绘图

1,形状绘图(见Project11)

(1)线条用什么标签表示,它有哪几个重要属性

说明:

Line标签

x1 y1表示起始点x,y坐标

x2 y2表示结束点x,y坐标

(2)画一条线(x1=100,y1=100 x2=200,y2=200) 

说明:

<Line Stroke="Green" StrokeThickness="" X1="" Y1="" X2="" Y2=""></Line>

(3)画两条连接的线,第二条线的起点是第一条线的起始点 

说明:

 <Line Stroke="Green" StrokeThickness="" X1="" Y1="" X2="" Y2=""></Line>

<Line Stroke="Red" StrokeThickness="" X1="" Y1="" X2="" Y2=""></Line>

(4)画一条红绿渐变的横线 

说明:

<Line StrokeThickness="" X1="" Y1="" X2="" Y2="">

            <Line.Stroke>

                <LinearGradientBrush>

                    <GradientStop Color="Red" Offset=""></GradientStop>

                    <GradientStop Color="Green" Offset=""></GradientStop>

                </LinearGradientBrush>

            </Line.Stroke>

        </Line>

(5)画一条蓝黄渐变的竖线 

说明:

<Line X1="" Y1="" X2="" Y2="" StrokeThickness="">

            <Line.Stroke>

                <LinearGradientBrush>

                    <GradientStop Color="Blue" Offset=""></GradientStop>   

                    <GradientStop Color="Yellow" Offset=""></GradientStop>

                </LinearGradientBrush>               

            </Line.Stroke>           

        </Line>

(6)矩形用什么标签表示,它有哪几个重要属性 

说明:

Rectangle

属性有Width Height

Fill填充颜色

RadiusX RadiusY 表示圆角x,y半径

注意:Width包括StrokeThickness两边宽度(Height同理)

(7)画一个长方形(加上一个边框),再将其改成一个正方形,接着为它添加4个圆角,最后将其变成一个椭圆形(额外属性RadiusX,RadiusY) 

说明:

<Rectangle Stroke="Green" StrokeThickness="" Fill="Red" Width="" Height="" RadiusX="" RadiusY=""></Rectangle>

变成椭圆,调节RadiusX,RadiusY

(8)椭圆用什么标签表示,它有哪几个重要属性

说明:Ellipse

属性有Width Height Fill

(9)画一个带边框的椭圆,接着将其变成一个圆

说明:

<Ellipse Width="" Height="" Stroke="Green" StrokeThickness="" Fill="Red"></Ellipse>

(10)多线段用什么标签表示,它的一个重要属性是什么

说明:

标签:Polyline

属性:Points(第1个点x,y坐标 第2个点x,y坐标  ....... 第n个点x,y坐标)

(11)把上面第3个问题,用多线段来实现 

说明:

<Polyline Points="100,100 200,200 300,50" Stroke="Blue" StrokeThickness=""></Polyline>

(12)多边形,用什么标签表示,它的一个重要属性是什么

说明:

标签:Polygon

属性:Points(第1个点x,y坐标 第2个点x,y坐标  ....... 第n个点x,y坐标)

(11)把上面第11个问题,将多线段Polyline换成Polygon,看看有什么效果,请总结Polyline和Polygon的区别

说明:

<Polygon Points="100,100 200,200 300,50 350,100" Stroke="Blue" StrokeThickness=""></Polygon>

现象:起点和终点连成一条线

区别:Polygon会将起点和终点连成一条线,而Polyline不会

(12)画一个五角星(将FillRule设置成不同的值,看看有什么效果) 

说明:

<Polygon Points="100,100 70,180 150,130 55,130 130,180" Stroke="Red" StrokeThickness="" Fill="Green" FillRule="EvenOdd"></Polygon>

FillRule值: EvenOdd 中间不填充颜色

值为Nonzero 中间填充颜色

2,路径绘图(见Project12)

(1)什么是路径绘图

说明:

可以用它来绘制从简单到复杂的任意形状的图形

路径绘图,使用Path标签,它的一个重要属性是Data,Data中的指令对大小写敏感,大写表示绝对值,小写表示相对于前一个点的偏移量

(2)Data属性是由哪3个指令组成的

说明:

MoveCommand:用M表示起始点  大写M:表示绝对值坐标   小写m:表示相对于前一点偏移量

DrawCommand:描述外形轮廓 常用的绘图指令有直线(L或l),水平线(H或h),三次贝塞尔曲线(C或c).....等等

CloseCommand:用z表示,会在起点和终点连成一条线段,用来闭合整个Path

(3)用路径绘制一个三角形,并分析Data属性的数值对应的指令是什么

说明:

 <Path Data="M 70,130 L 200,160 200,100z" Stroke="Red" StrokeThickness="" Fill="Green"></Path>

解释

M 70,130  MoveCommand

L 200,160 200,100  DrawCommand

z  CloseCommand

(4)绘图指令DrawCommands包含了哪些形状

说明:

直线: L或l

水平线:  H或h  一个值x坐标

垂直线:  V或v  一个值y坐标

三次贝塞尔曲线: C或c  格式:C(或c) + 控制点1 + 控制点2 + 结束点

二次贝塞尔曲线: Q或q  格式:Q(或q) + 控制点 + 结束点

平滑贝塞尔曲线: S或s  格式:S(或s) + 控制点 + 结束点

平滑二次贝塞尔曲线: T或t  格式:T(或t) + 控制点 + 结束点

椭圆弧: A或a  在当前点和指定的终点之间画一个椭圆弧  格式: A(或a) + 尺寸 + 圆弧旋转角度 + 大弧形标记 + 正负方向标记 弧度终点

(5)绘制一条曲线,知道曲线是由2个控制点组成的 

说明:

<Path Data="M 100,100 C 190,120 120,170 200,200" Stroke="Green" StrokeThickness=""></Path>

格式:C(或c) + 控制点1 + 控制点2 + 结束点

(6)绘图指令DrawCommands对大小写敏感吗,比如小写v和大写V在相同的数据下有什么不同,用示例演示出来

说明:

 <Path Data="M 100,100 H 200 V 100 L 250,300 " Stroke="Green" StrokeThickness=""></Path>

把Data中的值大写的V改成小写的v,可以看到不同的效果

大写,表示绝对值坐标  小写,表示相对于前一个点的坐标

3,几何绘图(见Project13)

(1)什么是几何绘图,它与Shap绘图有什么区别

说明:

几何绘图Gemotry类类似Shap类,但二者本身没有联系,它相比Shap类,更灵活,绘图效率更高

示例:可以看下面第5点和第5点

(2)Geometry可以绘制哪些几何图形,它们分别对应着Shap类中的哪些形状

说明:

LineGeometry        等价于  Line

RectangleGeometry   等价于  Rectangle

EllipseGeometry     等价于  Ellipse

GeometryGrop        可以将不同的几何形状组合在一起

PathGeometry        可以产生比较复杂的轮廓,例如弧形,贝塞尔曲线和线条等,并且可以控制线条是否封闭

(3)Geometry和Path在使用上,有哪些联系

说明:

Gemotry的子类对象(比如LineGeometry),必须要放在Path.Data容器中使用

(4)使用LineGeometry绘制一个线条,并比较它和Shap中的Line有什么区别

说明:

<Path Stroke="Gray" StrokeThickness="">

            <Path.Data>

                <LineGeometry StartPoint="100,100" EndPoint="150,150"></LineGeometry>

            </Path.Data>

        </Path>

LineGeometry必须要放在Path.Data容器中使用,而Line则不用

LineGeometry通过2个属性绘制线段,而Line则用4个属性绘制线断

(5)使用RectangleGeometry画一个矩形,并比较它和Shap中的Rectangle有什么区别

说明:

<Path Stroke="Green" StrokeThickness="">

            <Path.Data>

                <RectangleGeometry Rect="50,50 150,150"></RectangleGeometry>

            </Path.Data>

        </Path>

属性 Rect="起始点坐标 相对于起始点坐标"

区别: RectangleGeometry通过坐标位置来控制矩形,而Rectangle则是通过idth,Height来控制.相比,RectangleGeometry更灵活

(6)使用EllipseGeometry画一个椭圆,并比较它和Shap中的Ellipse有什么区别

说明:

<Path Stroke="Red" StrokeThickness="">

            <Path.Data>

                <EllipseGeometry RadiusX="" RadiusY="" Center="100,100"></EllipseGeometry>

            </Path.Data>

        </Path>

属性: RadiusX="X半径距离"   RadiusY="Y半径距离"  Center:表示圆心的坐标点

区别:EllipseGeometry通过RadiusX,RadiusY,Center属性来控制椭圆,而Ellipse则通过Width,Height控制,相比,EllipseGeometry更灵活

(7)什么是GeometryGrop

说明:

在Path.Data中只能放置一个Geometry对象

如果你要绘制多个Geometry形状,那么可以用GeometryGrop来实现

(8)将一个矩形和一个椭圆形交叉显示,用GeometryGroup实现,并将FillRule设置成不同的值,看看效果

说明:

<Path Stroke="Green" StrokeThickness="" Fill="Red">

            <Path.Data>

                <GeometryGroup FillRule="Nonzero">

                    <EllipseGeometry RadiusX="" RadiusY="" Center="100,100"></EllipseGeometry>

                    <RectangleGeometry Rect="100,100 100,100"></RectangleGeometry>

                </GeometryGroup>               

            </Path.Data>

        </Path>

(9)使用GeometryGroup有哪些优势和劣势

说明:

优势:可以将多个几何形状组合在一起EventHandler(事件处理)和填充颜色

劣势:需要针对不同的形状添加

4,PathGeometry  (见Project14)

(1)什么是PathGeometry,它有哪些优势,它与GemotryGroup有哪些异同

说明:

PathGeometry是几何路径绘图,通过PathFigure可以创建很复杂的几何图形

与GemotryGroup异同

不同:

PathGeometry可以放在GemotryGroup容器里

PathGeometry由直线,弧线,贝塞尔曲线构成

GemotryGroup则是一个最大的容器,它可以包含PathGeometry

相同:

将一些基本的元素形状组装在一起

(2)什么是PathFigure和PathSegment,它们之间有什么关系

说明:

PathSegment是一个具体的几何对象(比如直线,曲线),而PathFigure是一个创建和储存这些几何对象的.

一个PathFigure可以包含多个PathSegment

(3)PathFigure有哪些主要的属性

说明:

StarttPoint:  起始点坐标

IsClosed:     起点和终点是否连成一条线

(4)Segments包括哪些图形

说明:

主要包括3种:

LineSegment 直线

ArcSegment 椭圆弧

BezierSegment 贝塞尔曲线

(5)用LineSegment画一个七边形的大箭头,并给个渐变

说明:

<Path Stroke="Red" StrokeThickness="">

            <Path.Fill>

                <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">

                    <GradientStop Color="Blue" Offset=""></GradientStop>

                    <GradientStop Color="Yellow" Offset=""></GradientStop>

                </LinearGradientBrush>

            </Path.Fill>

            <Path.Data>

                <PathGeometry>

                    <PathFigure IsClosed="True" StartPoint="20,100">

                        <LineSegment Point="100,100"></LineSegment>

                        <LineSegment Point="100,70"></LineSegment>

                        <LineSegment Point="130,125"></LineSegment>

                        <LineSegment Point="100,180"></LineSegment>

                        <LineSegment Point="100,150"></LineSegment>

                        <LineSegment Point="20,150"></LineSegment>

                    </PathFigure>

                </PathGeometry>

            </Path.Data>

        </Path>

(6)比较LineSegment和LineGeometry及Shap中的Line,这三者有什么区别

说明:

LineSegment 实际上是一个点的坐标    它有一个属性Point="x坐标,y坐标"    如果要画一个线段,还需要在PathFigure的属性StartPoint设置一个坐标值

LineGeometry  可以通过StartPoint和EndPoint来画一个线段

Line  需要通过4个属性x1,y1,x2,y2来画一个线段

(7)画一条弧线,一般要设置哪几个属性

说明:

标签:ArcSegment

属性:

Point  当前点坐标

Size="x值,y值"

描述椭圆弧的 X 轴半径和 Y 轴半径的 Size 结构。

Size 结构的 Width 属性指定弧的 X 轴半径;它的 Height 属性指定弧的 Y 轴半径。默认值是值为 0,0 的 Size

SweepDirection="顺时针/逆时针"  表示弧形是顺时针绘制还是以逆时针绘制

RotationAngle="数值"            表示旋转角度

(8)使用ArcSegment画两条连接的弧线

说明:

<Path Stroke="Red" StrokeThickness="">

            <Path.Data>

                <PathGeometry>

                    <PathFigure IsClosed="False" StartPoint="20,100">

                        <ArcSegment Point="100,130" Size="3,6" SweepDirection="Clockwise" RotationAngle=""></ArcSegment>

                        <ArcSegment Point="200,150" Size="2,3" SweepDirection="Clockwise"></ArcSegment>

                        <LineSegment Point="120,40"></LineSegment>

                    </PathFigure>

                </PathGeometry>

            </Path.Data>

        </Path>

(9)画一条BezierSegment曲线,一般要设置哪几个属性,用个示例演示一下

说明:

3个属性:Point1,Point2,Point3

<Path Stroke="Red" StrokeThickness="">

            <Path.Data>

                <PathGeometry>

                    <PathFigure StartPoint="100,20">

                        <BezierSegment Point1="30,50" Point2="70,150" Point3="10,200"></BezierSegment>

                    </PathFigure>

                </PathGeometry>

            </Path.Data>

        </Path>

(10)比较区别路径绘图中曲线,BezierSegment曲线,ArcSegment

说明:

路径图中曲线分成好几种,Data="曲线标记 控制点1坐标 ...."使用

BezierSegment曲线,使用使用Point1,Point2,Point3属性,而且在PathFigure中设置了StartPoint

ArcSegment:绘制一个弧,使用Point,Size属性绘制

路径绘图中椭圆弧,Data="A(或a)标记...."使用

5,用C#绘制图形

(1)了解如何使用C#来绘制一些不同的2D图形

(2)路径绘图,在C#中如何实现

(3)了解如何用C#绘制一个销售统计图形

Sliverlight之 矢量绘图的更多相关文章

  1. sliverlight 4 vs2010 的安装过程

    今天小白正式开始学习sliverlight 的内容,但是在软件安装的过程中就遇到了问题,查了一下,需要安装对应版本的sdk跟tools,因为在新建项目的时候,可以选择sliverlght,因此,我断定 ...

  2. Egret 矢量绘图、遮罩、碰撞检测

    矢量绘图: 1. 为矢量绘图绘制外边 - graphics.lineStype() private createGameScene():void { console.log("Runtime ...

  3. C# sliverlight调用WCF服务出现的一个错误

    错误提示如下: 尝试向 URI“http://localhost:8396/Service1.svc”发出请求时出错.这可能是由于试图以跨域方式访问服务而又没有正确的跨域策略,或策略不适用于 SOAP ...

  4. windows phone 7,sliverlight 下载网页的解析,关于wp7 gb2312编码

    原文:windows phone 7,sliverlight 下载网页的解析,关于wp7 gb2312编码 关于silverlight和wp7(windows phone 7)是默认不支持gb2312 ...

  5. Sliverlight实例之 使用 ControlTemplate 自定义按钮的外观

    按钮,最终效果,如下图: 见Project21_ButtonSkin 1, 创建Sliverlight项目 说明: generic.xaml:样式和模板就被定义在这个文件里 MyButton.cs:控 ...

  6. Sliverlight之 画刷

    1,5种画刷 (见Project15) (1)TextBlock控件中的Forground和BackGround属性是一个什么对象?它在前台的完整的写法是什么?(实际是.net做了一个转换,可以直接写 ...

  7. WPF和Sliverlight不同之UIElement-事件

    WPF: http://msdn.microsoft.com/en-us/library/System.Windows.UIElement.aspx DragEnter DragLeave DragO ...

  8. CDR是什么?CorelDRAW矢量绘图

    CorelDRAW是矢量绘图软件 CorelDRAW Graphics Suite是加拿大Corel公司的平面设计软件: CorelDRAW 非凡的设计能力广泛地应用于商标设计.标志制作.模型绘制.插 ...

  9. Sliverlight 样式

    UserControl 页面级样式UserControl.Resources style setter Property value. TargetType 应用的类型 使用 style static ...

随机推荐

  1. Invalid embedded descriptor for ".proto".Dependencies passed (Protobufer)解决办法

    前言 之前开发的时候,发现居然出现了Dependencies passed to FileDescriptor.buildFrom() don't match those listed in the ...

  2. C#语言实现ArcGIS数据源重置之Set Data Source功能

    1.须要:依据选择的Mxd路径和目标数据源路径进行重置数据源.此处以(.Mdb为例): 主要利用到的接口: (1)IMapDocument    (2)IMapControl2     (3)IWor ...

  3. sql优化-提防错误关联

    在写sql时,在多表关联时,有时候容易把关联关系写错.一般情况下,该问题比较容易发现,但如果sql较长时,光靠眼力就比较难发现了.今天写了一个脚本,碰到该问题了. 第一版本的脚本如下: select ...

  4. Wix打包系列(三)自定义Action(Custom Action)

    原文:Wix打包系列(三)自定义Action(Custom Action) 3.1 关于Action 我们已经知道如何生成具有标准安装界面的安装程序了,Windows Installer按照我们的界面 ...

  5. 使用WIX打包客户端程序

    原文:使用WIX打包客户端程序 用WPF为客户做了个小工具,打包的时候发现VS2012居然没有安装项目了,搜了下才知道现在推荐使用WIX来打包了http://wix.sourceforge.net/, ...

  6. JAVA card 应用开发(三) 把APPLET(CAP文件)装载到卡片

    依据前面两篇博文.我们能够在Eclipse上建立好Applet.而且能够有多个AID.能够选择不同的应用. 那么,以上我们都是基于模拟环境的逻辑,实际上有些函数接口是须要实际的环境.就是说我们须要把A ...

  7. xcode Workspaces

    A workspace is an Xcode document that groups projects and other documents so you can work on them to ...

  8. H3C S5120交换机ACL应用的问题

    下午在S5120上ACL的时候发现不起作用,ACL如下: acl number 3001 name deny-wan-to-lan-vpn rule 0 deny ip source 10.3.0.0 ...

  9. Smarty模板引擎的使用

    Smarty模板引擎的使用 Smarty是PHP中一个基于MVC模式的模板引擎. Download: http://www.smarty.net/download   特点 1.  最快速度的程序开发 ...

  10. java List<Map> 排序问题

    Collections.sort(order_from_list, new Comparator<Map<Object, Object>>() { public int com ...