到目前为止,我的博客文章主要围绕着objective-c中的iOS编程。有一些关于C # 的帖子,但是他们更多的是关于从C # 到objective-c的切换。
然而,在过去的一年里,我一直在iOS和Android开发之间平均分配我的时间。
由于越来越多的移动应用程序开发人员同时支持这两个平台,我想为什么不博客两个平台!
这一系列的帖子将围绕在这两个平台上绘制各种各样的东西。你会惊喜地发现两者实际上非常相似!
第3部分-图纸
第3部分-图纸
所以,现在我们已经学会了所有的基础知识,让我们进入有趣的部分!
在大多数平台中,绘图归结为类似的命令: 移动、直线、圆弧和曲线。还有一些通用的辅助方法,比如画一个矩形,但是上面的4个命令是最重要的。
因此,这篇文章的重点将是查看这些命令,并展示它们在iOS和Android中的工作方式。
有一点需要注意。在IOS中,我们直接绘制到CGContext。但在Android中,我们必须首先创建一个Path对象,并调用我们的命令。
移动
此命令基本上将点移动到下一个命令应开始的位置。
iOS系统
CGContextMoveToPoint(ctx, x, y);
安卓系统
路径.否决 (x,y);
线
这将从前一个点到下一个指定点绘制。因此,如果我们的第一个命令是移动到,则此命令将绘制移动点到线点之间的线。
iOS系统
CGContextAddLineToPoint(ctx, x, y);
安卓系统
path.lineTo(x, y);
电弧
绘制圆或饼图切片的完美方法。不是在iOS这是弧度,在Android的度
iOS系统
CGContextAddArc(canvas, x, y, radius, startRadians, endRadians, 0);
Android系统
path.addArc (新Rect(x,y,x半径 * 2,100),startDegrees,endDegrees);
曲线
所有命令中最复杂的。它由控制点和终点组成。除了显示命令之外,我不会在这里详细介绍,但是您可以查看另一篇文章,其中我告诉您如何使用此命令执行一些更高级的操作。
iOS系统
CGContextAddCurveToPoint(ctx, cp1X, cp1Y, cp2X, cp2Y, x, y);
Android系统
path.cubicTo(cp1X, cp1Y, cp2X, cp2Y, x, y);
现在我们已经建立了我们的形状,我们需要绘制它们。为了做一个完整的例子,我将展示一些代码,这些代码展示了如何用笔画和填充来绘制一个圆,这样你就可以看到所有的代码一起发挥作用。
iOS系统
-(void)drawRect 🙁 CGRect)rect
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(ctx, [UIColor greenColor].CGColor);
CGContextSetStrokeColorWithColor(ctx, [UIColor blackColor].CGColor);
CGContextSetLineWidth(ctx, 2);
CGContextSetAllowsAntialiasing(ctx,是);
CGContextAddArc(ctx,0,0,50,0,2 * M_PI,0);
CGContextClosePath(ctx);
CGContextDrawPath(ctx,kCGPathFillStroke);
}
Android系统
@ Override
public void draw(Canvas canvas)
{
super.draw(canvas);
Paint fill = new Paint();
fill.setColor(Color.GREEN);
fill.setAntiAlias(true);
fill.setStyle(Paint.Style.FILL);
画图stroke = new Paint();
stroke.setStrokeWidth(2);
stroke.setColor(Color.BLACK);
stroke.setAntiAlias(true);
stroke.setStyle(Paint.Style.SROKE);
Path path = new Path();
path.addArc(new RectF(0,0,100,100),0,360);
path.close();
canvas.drawPath(path, fill);
canvas.drawPath(path, stroke);
}
这是一个快速教程绘图。在最后一篇文章中,我将讨论绘制文本的问题!
史蒂芬·扎哈鲁克 (SteveZ)