Chcę narysować okrąg w środku ekranu, ale ja dostaję coś takiego:Koło narysowane na płótnie nie pasuje do ekranu
używam tego kodu, aby wyciągnąć ten okrąg.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_4444);
Canvas c = new Canvas(bmp);
RectF rect = new RectF(0,0,width,width);
drawCircle(rect, c, width, height);
ImageView img = (ImageView) findViewById(R.id.imageView1);
img.setImageBitmap(bmp);
img.setScaleType(ScaleType.FIT_CENTER);
}
private void drawCircle(RectF rect, Canvas c, int width, int height) {
Paint paint = new Paint();
paint.setARGB(255, 255 , 10, 21);
paint.setStrokeWidth(10);
paint.setAntiAlias(true);
paint.setStrokeCap(Paint.Cap.BUTT);
paint.setStyle(Paint.Style.STROKE);
int radius;
if(width < height)
radius = width/2;
else
radius = height/2;
c.drawCircle(width/2, height/2, radius, paint);
}
Nie rozumiem, dlaczego jest cięty po bokach, mimo że używam rozmiaru ekranu, aby go narysować, więc powinien idealnie do niego pasować.
Nie uwzględniono grubości linii. narysowałeś okrąg zakładając, że ma on 0 grubości, więc "faktyczny" okrąg ** JEST ** dotyka krawędzi ekranu, ale ponieważ używałeś grubego pędzla, część bólu przeszła przez krawędź. –
Nie należy również brać pod uwagę strokeWidth – Loris
@MarcB Myślę, że powinieneś opublikować to jako odpowiedź :-) –