Я вижу API в Quartz для рисования линий и кругов. Но все, что я хочу сделать, это указать (x, y) декартовую координату для цветного пикселя определенного значения. Как это сделать?
Как рисовать точку с помощью Core Graphics?
Ответ 1
CGContextFillRect(context, CGRectMake(x,y,1,1));
Ответ 2
Quartz не является ориентированным на пиксели API, и его контексты не обязательно являются пиксельными буферами. Если вы хотите рисовать pixmaps, создайте контекст растрового изображения с помощью CGBitmapContextCreate()
. Вы предоставляете буфер, который вы можете манипулировать напрямую, и можете копировать в другой контекст, создав CGImage
из того же буфера с помощью CGImageCreate()
и рисуя его.
Ответ 3
У меня есть точка (линия нулевой длины) для рисования после установки строк в kCGLineCapRound. По умолчанию длина линии не имеет длины, поэтому ее нельзя рисовать.
Аргумент о том, что точка не имеет размера, глупо. Линии не имеют ширины, но мы можем их нарисовать (используя "ширину линии" из состояния рисования). Точка должна рисоваться точно так же, и с разными строками, я считаю, что это так.
Возможно, это новое поведение?
Ответ 4
Нарисуйте очень маленький эллипс/круг и заполните его!
CGContextAddEllipseInRect(Context,(CGRectMake (x_dot, y_dot, 3.0, 3.0));
CGContextDrawPath(Context, kCGPathFill);
CGContextStrokePath(Context);
Я использую этот код для создания маленькой точки (3 × 3 пикселя) в пунктирной нотной записке.
Ответ 5
Вы можете нарисовать линию длиной 1 пиксель в соответствующей координате; который должен выполнить то, что вы хотите.
Ответ 6
У меня такая же проблема - я считаю, что лучшее решение похоже на последнее, но по крайней мере оно не оставляет что-то похожее на "тире"... конечно, должно гарантировать, что x/y обa > 0.
CGContextFillRect (контекст, CGRectMake (x - 0,5, y - 0,5, 1,0, 1,0));
Ответ 7
swift 3:
UIRectFill(CGRect(x: x, y: y, width: 1, height: 1))