如何使用Quartz2D绘制可动画的标尺?

时间:2010-03-28 12:07:21

标签: iphone core-graphics quartz-graphics quartz-2d

我想用Quartz2D绘制一个简单标尺的线条,仅用于练习。

由于我不知道在iPhone上以编程方式进行矢量图形,也许有人可以指点我一个好的教程来开始?

2 个答案:

答案 0 :(得分:4)

正如普拉曼指出的那样,Quartz 2D documentation值得一读。此外,本课程还为我的iPhone开发课程注意are available online(VoodooPad格式),我将整个课程用于Quartz 2D绘图。我创建的QuartzExamples示例应用程序显示了一些更高级的绘图概念,但Apple的QuartzDemo示例是开始查看如何进行简单绘图的更好的地方。

作为标尺绘制刻度的示例,以下是我用来做类似事情的代码:

NSInteger minorTickCounter = majorTickInterval;
NSInteger totalNumberOfTicks = totalTravelRangeInMicrons / minorTickSpacingInMicrons;
CGFloat minorTickSpacingInPixels = currentHeight / (CGFloat)totalNumberOfTicks;

CGContextSetStrokeColorWithColor(context, [MyView blackColor]);

for (NSInteger currentTickNumber = 0; currentTickNumber < totalNumberOfTicks; currentTickNumber++)
{
    CGContextMoveToPoint(context, leftEdgeForTicks + 0.5, round(currentTickNumber * minorTickSpacingInPixels) + 0.5);

    minorTickCounter++;
    if (minorTickCounter >= majorTickInterval)
    {
        CGContextAddLineToPoint(context, round(leftEdgeForTicks + majorTickLength) + 0.5, round(currentTickNumber * minorTickSpacingInPixels) + 0.5);
        minorTickCounter = 0;               
    }
    else
    {
        CGContextAddLineToPoint(context, round(leftEdgeForTicks + minorTickLength) + 0.5, round(currentTickNumber * minorTickSpacingInPixels) + 0.5);
    }

}

CGContextStrokePath(context);   

其中currentHeight是要覆盖的区域的高度,[MyView blackColor]只返回表示黑色的CGColorRef。

答案 1 :(得分:2)