2013-07-17 191 views
0

我尝试使用方法drawCircle(...)在Canvas的帮助下创建一个圆。但最终为什么让我成为一个椭圆而不是一个圆?我怎样才能得到“真实”的圈子?Android Canvas.drawCircle()错误。持续绘制椭圆而不是圆形

Bitmap bitmap = Bitmap.createBitmap((int) (widthView), heightView, Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(bitmap); 
    Paint paint = new Paint(); 
    paint.setColor(Color.parseColor("#FF950000")); 
    paint.setAntiAlias(true); 
    paint.setStyle(Style.FILL); 
    canvas.drawRect(0.0f, 0.0f, widthView, heightLevel, paint); 
    paint.setColor(Color.parseColor("#FFD4A503")); 
    canvas.drawRect(0.0f, heightLevel, widthView, 2 * heightLevel, paint); 
    paint.setColor(Color.parseColor("#FF4A7816")); 
    canvas.drawRect(0.0f, 2 * heightLevel, widthView, 3 * heightLevel, 
    paint); 
    paint.setColor(Color.parseColor("#FFFFFFFF")); 
    canvas.drawCircle(30 * density, getLevelHeight(1), 20f, paint); graphicView.setBackgroundDrawable(new BitmapDrawable(getResources(), 
    bitmap)); 

结果:

的Nexus 4

enter image description here

华为G500Pro(服务)

enter image description here

+0

尝试使用'setImageBitmap()'而不是'setBackgroundDrawable()' – Vikram

+0

谢谢,这对我有帮助。请做你的评论作为答案 - 我会投票(最佳答案)。 –

+0

感谢Siruk,很高兴我能帮上忙。 – Vikram

回答

0

您应该使用setImageBitmap(Bitmap)代替setBackgroundDrawable()

此外,setBackgroundDrawable()已被弃用。

+0

这是怎么回事,你能不能解释一下 – mSO

+0

@Manish我无法解释这个Manish。看看这个问题的评论。我建议使用'setImageBitmap()',因为它看起来像OP试图设置'graphicView'的内容而不是它的背景。我没有任何线索可以解决问题。为什么它解决了这个问题对我来说是个谜。 – Vikram