4

我刚刚开始使用 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);

}

}

4

3 回答 3

8

调用 getWidth() 和 getHeight() 时视图的宽度和高度尚未初始化,只需在 onDraw 中使用 getWidth() 和 getHeight() 即可:

canvas.drawCircle(getWidth()/2, getHeight()/2, 100, paint);

您还可以覆盖 onSizeChanged 并获取视图宽度和高度。

PS:不要在onDraw中创建任何东西,在构造函数中创建paint对象。

于 2013-05-14T20:37:39.993 回答
0

公共无效drawCircle(Graphics2D g,int x,int y,int半径){

x = x-(半径/2);

y = y-(半径/2);

g.fillOval(x,y,半径,半径);

}

这里 x,y 是你想要画圆的画布位置,如果你想动态设置 x,y 位置,你可以用运动监听器找到它希望这对你有帮助

于 2015-04-06T12:02:10.237 回答
-1

有一些链接对我们非常有用,我希望它们对您和其他人有用。

  1. https://github.com/swapgo20/Android-Hand-Drawing
  2. https://github.com/codepath/android_guides/wiki/Basic-Painting-with-Views
  3. https://github.com/Korilakkuma/CanvasView

我希望上面的链接对于在画布上绘制形状非常有用。

我建议您使用第三个链接并仅使用 android 的 Path 类(http://developer.android.com/reference/android/graphics/Path.html)来绘制形状。

于 2015-02-01T14:32:07.520 回答