我刚刚使用Android进入基本绘图。我从一些简单的形状开始,但我遇到了一些问题。我想在画布的中心画一个圆圈。我看了几个例子,但似乎无法使它工作。我认为这是因为我真的不明白哪些变量在哪里。
有人可以解释一下在我的屏幕中心绘制圆圈的正确方法。这是我的代码:
public class Circle extends View{
int width = this.getWidth();
int height = this.getHeight();
public Circle(Context context) {
super(context);
setFocusable(true);
}
protected void onDraw(Canvas canvas){
canvas.drawColor(Color.CYAN);
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
//canvas.drawCircle(100, 100, 50, paint);
canvas.drawCircle(width/2, height/2, 100, paint);
Display disp = ((WindowManager)this.getContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
float radius = 0;//Radius caused an error so I initialized this variable
canvas.drawCircle(disp.getWidth()/2, disp.getHeight()/2, radius, paint);
}
}
答案 0 :(得分:8)
视图的宽度和高度尚未初始化,只需在onDraw中使用getWidth()和getHeight():
canvas.drawCircle(getWidth()/2, getHeight()/2, 100, paint);
您还可以覆盖onSizeChanged并获取视图宽度和高度。
PS:不要在onDraw中创建任何东西,在构造函数中创建paint对象。
答案 1 :(得分:0)
public void drawCircle(Graphics2D g,int x,int y,int radius){
x = x-(radius / 2);
y = y-(radius / 2);
g.fillOval(X,Y,半径,半径);
}
这里是x,y是画布的位置,你想绘制圆圈,你可以用动作监听器找到它,如果你想动态设置x,y位置希望这会对你有所帮助
答案 2 :(得分:-1)
有些链接对我们非常有用,我希望它们能为您和其他人工作。
我希望上面的链接对于在画布上绘制形状非常有用。
我建议您使用第三个链接并仅使用android的Path类(http://developer.android.com/reference/android/graphics/Path.html)来绘制形状。