線や円を描くための API が Quartz にあることがわかります。しかし、私がやりたいのは、(x,y) デカルト座標を指定してピクセルを特定の値に色付けすることだけです。それ、どうやったら出来るの?
7 に答える
CGContextFillRect(context, CGRectMake(x,y,1,1));
Quartz はピクセル指向の API ではなく、そのコンテキストは必ずしもピクセル バッファーではありません。ピックスマップを描画する場合は、 でビットマップ コンテキストを作成しますCGBitmapContextCreate()
。直接操作できるバッファを提供し、それをCGImage
使用して同じバッファからを作成し、CGImageCreate()
それを描画することで、別のコンテキストにコピーできます。
非常に小さな楕円/円を描いて塗りつぶしてください!
CGContextAddEllipseInRect(Context,(CGRectMake (x_dot, y_dot, 3.0, 3.0));
CGContextDrawPath(Context, kCGPathFill);
CGContextStrokePath(Context);
このコードを使用して、点線の音符に小さな点 (3x3 ピクセル) を作成しています。
line-capsをkCGLineCapRoundに設定した後、描画するポイント(長さゼロの線)を取得しました。デフォルトのラインキャップには長さがないため、描画できません。
ポイントにサイズがないという議論はばかげています。線には幅がありませんが、線を描くことができます(描画状態の「線幅」を使用して)。ポイントはまったく同じ方法で描画する必要があり、ラインキャップが異なるとそうなると思います。
たぶん、この振る舞いは新しいのでしょうか?
問題の座標に 1 ピクセルの長さの線を描くことができます。それはあなたが望むものを達成するはずです。
私は同じ問題を抱えています-最良の解決策は最後のものと似ていますが、少なくとも「ダッシュ」のように見えるものは残しません...もちろん、x/yが両方とも>0であることを確認する必要があります。
CGContextFillRect(context、CGRectMake(x --0.5、y --0.5、1.0、1.0));
スウィフト 3 :
UIRectFill(CGRect(x: x, y: y, width: 1, height: 1))