17

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

4

7 回答 7

21
CGContextFillRect(context, CGRectMake(x,y,1,1));
于 2008-11-26T22:58:28.727 回答
15

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

于 2008-11-24T08:59:22.180 回答
9

Draw a very small ellipse/circle and fill it!

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

I am using this code to create a small dot (3x3 pixels) in a dotted music note.

于 2011-11-28T00:47:32.703 回答
7

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

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

也许这种行为是新的?

于 2010-02-06T01:01:04.143 回答
4

您可以在相关坐标处绘制一条 1 像素长的线;那应该完成你想要的。

于 2008-11-23T22:27:43.297 回答
0

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

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

于 2008-12-29T23:05:55.417 回答
0

迅速3:

 UIRectFill(CGRect(x: x, y: y, width: 1, height: 1))
于 2017-04-29T09:19:47.617 回答