如何使用Core Graphics绘制点?

时间:2008-11-23 21:55:39

标签: ios cocoa-touch core-graphics

我在Quartz中看到用于绘制线条和圆圈的API。但我想要做的就是指定(x,y)笛卡尔坐标以将像素着色为特定值。我该怎么做?

7 个答案:

答案 0 :(得分:21)

CGContextFillRect(context, CGRectMake(x,y,1,1));

答案 1 :(得分:13)

Quartz不是面向像素的API,其上下文不一定是像素缓冲区。如果要绘制像素图,请使用CGBitmapContextCreate()创建位图上下文。您提供了一个可以直接操作的缓冲区,并可以通过使用CGImage从同一缓冲区创建CGImageCreate()并绘制该缓冲区来复制到另一个上下文。

答案 2 :(得分:7)

在将线帽设置为kCGLineCapRound之后,我得到了一个点(零长度线)。默认的线帽没有长度,因此无法绘制。

一个点没有大小的论点是愚蠢的。线条没有宽度,但我们可以绘制(通过使用绘制状态的“线宽”)。一个点应该以完全相同的方式绘制,并且我相信它具有不同的行数。

也许这种行为是新的?

答案 3 :(得分:7)

绘制一个非常小的椭圆/圆圈并填充它!

CGContextAddEllipseInRect(Context,(CGRectMake (x_dot, y_dot, 3.0, 3.0));
CGContextDrawPath(Context, kCGPathFill);
CGContextStrokePath(Context);

我正在使用此代码在虚线音符中创建一个小点(3x3像素)。

答案 4 :(得分:4)

您可以在相关坐标处绘制1像素长的线;应该达到你想要的效果。

答案 5 :(得分:0)

我遇到了同样的问题 - 我发现最好的解决方案与上一个类似,但至少它不会留下看起来像“破折号”的东西...当然,应该确保x / y是两者都是> 0

CGContextFillRect(context,CGRectMake(x - 0.5,y - 0.5,1.0,1.0));

答案 6 :(得分:0)

迅捷3:

 UIRectFill(CGRect(x: x, y: y, width: 1, height: 1))