如何使用Core Graphics绘制点?

16 cocoa-touch core-graphics ios

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

小智 22

CGContextFillRect(context, CGRectMake(x,y,1,1));
Run Code Online (Sandbox Code Playgroud)


Jen*_*ton 13

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


小智 8

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

CGContextAddEllipseInRect(Context,(CGRectMake (x_dot, y_dot, 3.0, 3.0));
CGContextDrawPath(Context, kCGPathFill);
CGContextStrokePath(Context);
Run Code Online (Sandbox Code Playgroud)

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


Cha*_*had 7

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

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

也许这种行为是新的?

  • 并不意味着建议一个点有大小,只是因为它缺乏大小是一个无法绘制它的愚蠢借口.一条线(作为一个数学概念)没有宽度,但我们可以画得很好.使用圆形盖绘制"零长度线"会使屏幕具有线宽直径.圆形帽基本上提供"点直径"设置.但是,如果原始海报专门设置一个屏幕像素的颜色,则应该通过直接在位图上下文中设置值而不是基于路径的绘图例程来完成. (4认同)

Ben*_*ieb 4

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