2013-07-05 30 views
0

所以我畫一個圓圈,下面的代碼描畫圓是在Android的較大然後大小相同的位圖

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); 
} 

這將吸引我的屏幕
circle with bitmap.width == radius*2circle with bitmap.width == radius*2 on white background

由於在下面的圓形您可能會看到圓圈的頂部,底部,左側和右側部分略有切斷。將位圖的背景顏色設置爲白色顯示罪魁禍首。繪製的圓與位圖的寬度和高度相同,半徑略大於位圖。

爲了確保這是發生了什麼事情,我試圖繪製相同大小的圓,但我增加了大約5%的位圖大小,並將其中心圓。這給了我如下:

circle with bitmap.width = radius*2*1.05circle with bitmap.width == radius*2*1.05 on white background

正如你可能會看到這些圈子不具有前一界具有相同截止。

這是預期的行爲?如果我想畫出尺寸爲x的適當的圓,那麼我總是需要創建尺寸大於x的位圖,然後正確地將圓中心放在它的內部?

回答

1

所以我想通了這是爲什麼發生。其實很簡單。
將筆劃添加到圓的半徑的外側。所以一個圓圈半徑= 10px筆畫= 2px的繪製半徑爲12px但仍被認爲是半徑爲10px的圓。

在這種情況下它可以是固定的通過簡單地設置的塗料性能對於像這樣:

Paint circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG); 
circlePaint.setColor(Color.RED); 
circlePaint.setStyle(Paint.Style.FILL); 
circlePaint.setAntiAlias(true); 
相關問題