Silverlight 引路蜂二维图形库示例:绘制各种几何图形

Silverlight 引路蜂二维图形库示例:绘制各种几何图形,第1张

概述这个例子说明如何使用Graphics2D对象来绘制各种几何图形引路蜂二维图形库中定义里多种基本几何图形,如,点,线段,曲线和矩形等。接口PathIterator定义了从Path中获取路径元素的方法。接口IShape定义了描述几何图形公用的方法。 点 类Point定义了二维空间位置在(x,y)一个点。Point point = new Point (x, y); 创建一个点对象。此外Point类也

这个例子说明如何使用Graphics2D对象来绘制各种几何图形。引路蜂二维图形库中定义里多种基本几何图形,如,点,线段,曲线和矩形等。接口PathIterator定义了从Path中获取路径元素的方法。接口IShape定义了描述几何图形公用的方法。

类Point定义了二维空间位置在(x,y)一个点。Point point = new Point (x,y); 创建一个点对象。此外Point类也提供了计算两点之间距离的方法等。

线段

类line定义了平面上一条线段。下面代码绘制一条线段。

// draw line2D.Double
graphics2D.draw (pen,new line(x1,y1,x2,y2));

图形库中类Pen可以用来定义绘制线段的线型,线宽等参数。

二次曲线

类QuadCurve实现了IShape接口,它定义了平面上一条二次曲线。二次曲线可以通过曲线的两个端点和一个控制点来定义。

// create new QuadCurve
QuadCurve q = new QuadCurve();
// draw QuadCurve2D with set coordinates
graphics2D.draw(pen,q.setCurve(x1,ctrlx,ctrly,y2));

三次曲线

类CubicCurve同样实现了IShape接口,它定义了平面上一条三次曲线。和二次曲线类似,三次曲线可以通过曲线的两个端点和两个控制点来定义。

// create new CubicCurve
CubicCurve c = new CubicCurve();
// draw CubicCurve with set coordinates
graphics2D.draw(pen,c.setCurve(x1,ctrlx1,ctrly1,ctrlx2,ctrly2,y2));

矩形

类Rectangle是RectangleShape的子类。RectangleShape同样实现了IShape接口。 Rectangle可以通过一个点(x,y)和大小(Dimsension)来定义。

// draw Rectangle
graphics2D.draw(pen,new Rectangle(x,y,rectwIDth,rectheight));

类RoundRectangle定义了带圆角的矩形。圆角矩形可以由下列参数来定义:位置,宽度,长度,圆角宽度,圆角长度。

// draw RoundRectangle
graphics2D.draw(pen,new RoundRectangle(x,rectheight,10,10));

椭圆

类Ellipse通过椭圆的外接矩形来定义其大小。

// draw Ellipse
graphics2D.draw(pen,new Ellipse(x,rectheight));

圆弧

类Arc通过外接矩形,起始角度,角度,封闭类型来定义。

// draw Arc
graphics2D.draw(pen,new Arc(x,90,135,Arc.OPEN));

下面代码显示了多种几何图形。

private voID SharpsDemo2D(){ color bg = color.White; color fg = color.Black; color red = color.Red; color white = color.White; Pen pen = new Pen(fg,1); SolIDBrush brush = new SolIDBrush(red); //Clear the canvas with white color. graphics2D.Clear(bg); Dimension d = new Dimension(screenWIDth,screenHeight); int grIDWIDth = d.WIDth / 2; int grIDHeight = d.Height / 6;  int x = 5; int y = 7; int rectWIDth = grIDWIDth - 2 * x; int stringY = grIDHeight - 3 - 2 - 16; int rectHeight = stringY - y - 2; graphics2D.Draw(pen,new line(x,y + rectHeight - 1,x + rectWIDth,y)); x += grIDWIDth; graphics2D.Draw(pen,rectWIDth,rectHeight)); x += grIDWIDth; x = 5; y += grIDHeight; stringY += grIDHeight; graphics2D.Draw(pen,rectHeight,10)); x += grIDWIDth; graphics2D.Draw(pen,Arc.Open)); x = 5; y += grIDHeight; stringY += grIDHeight; graphics2D.Draw(pen,rectHeight)); x += grIDWIDth; // draw GeneralPath (polygon) int[] x1Points = { x,x,x + rectWIDth }; int[] y1Points = { y,y + rectHeight,y }; Path polygon = new Path(Path.windevenOdd,x1Points.Length); polygon.Moveto(x1Points[0],y1Points[0]); for (int index = 1; index < x1Points.Length; index++) {  polygon.lineto(x1Points[index],y1Points[index]); } polygon.ClosePath(); graphics2D.Draw(pen,polygon); x = 5; y += grIDHeight; stringY += grIDHeight; int[] x2Points = { x,x + rectWIDth }; int[] y2Points = { y,y }; Path polyline = new Path(Path.windevenOdd,x2Points.Length); polyline.Moveto(x2Points[0],y2Points[0]); for (int index = 1; index < x2Points.Length; index++) {  polyline.lineto(x2Points[index],y2Points[index]); } graphics2D.Draw(pen,polyline); x += grIDWIDth; graphics2D.SetPenAndBrush(pen,brush); graphics2D.Fill(null,rectHeight)); graphics2D.Draw(null,rectHeight)); x = 5; y += grIDHeight; stringY += grIDHeight; color[] colors = new color[] { red,white }; int[] fractions = new int[] { 0,255 }; linearGradIEntBrush redtowhite =   new linearGradIEntBrush(x,fractions,colors,Brush.NoCycle); graphics2D.SetPenAndBrush(pen,redtowhite); graphics2D.Fill(null,10)); graphics2D.Draw(null,10)); x += grIDWIDth; graphics2D.SetPenAndBrush(pen,Arc.Chord)); graphics2D.Draw(null,Arc.Chord)); x = 5; y += grIDHeight; stringY += grIDHeight; int[] x3Points = { x,x + rectWIDth }; int[] y3Points = { y,y }; Path filledpolygon = new Path(Path.windevenOdd,x3Points.Length); filledpolygon.Moveto(x3Points[0],y3Points[0]); for (int index = 1; index < x3Points.Length; index++) {  filledpolygon.lineto(x3Points[index],y3Points[index]); } filledpolygon.ClosePath(); graphics2D.SetPenAndBrush(pen,filledpolygon); graphics2D.Draw(null,filledpolygon); }


总结

以上是内存溢出为你收集整理的Silverlight 引路蜂二维图形库示例:绘制各种几何图形全部内容,希望文章能够帮你解决Silverlight 引路蜂二维图形库示例:绘制各种几何图形所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1067619.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存