だから私は次のコードで円を描いています
public void drawCircle(int radius, ImageView imageView)
{
Paint circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
circlePaint.setStrokeWidth(1);
circlePaint.setColor(Color.RED);
circlePaint.setStyle(Paint.Style.FILL_AND_STROKE);
circlePaint.setAntiAlias(true);
Bitmap circleBitmap = Bitmap.createBitmap(radius*2, radius*2, Bitmap.Config.ARGB_4444);
Canvas circleCanvas = new Canvas(circleBitmap);
circleCanvas.drawCircle(radius, radius, radius, circlePaint);
//canvas.drawColor(Color.WHITE); used on the picture to the right
imageView.setImageBitmap(circleBitmap);
}
これにより、画面に次の円が描画されます
ご覧のとおり、円の上下左右が少し切り取られています。ビットマップの背景色を白に設定すると、犯人が表示されます。描画される円は、ビットマップの幅と高さと同じ半径で、ビットマップよりわずかに大きくなります。
これが起こっていることを確認するために、同じサイズの円を描いてみましたが、ビットマップのサイズを約 5% 大きくし、円を中心に配置しました。これにより、次のことがわかりました。
ご覧のとおり、これらの円には、前の円と同じカットオフがありません。
これは予想される動作ですか?サイズ x の適切な円を描画したい場合、常にサイズ > x のビットマップを作成し、円をその内側に正しく配置する必要がありますか?