在画布中心画圈

我正在使用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);

}

}


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

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

你也可以重写onSizeChanged并获取视图的宽度和高度。

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


public void drawCircle(Graphics2D g,int x,int y,int radius){

x = x-(半径/ 2);

y = y-(半径/ 2);

g.fillOval(X,Y,半径,半径);

}

这里x,y是要绘制圆的画布的位置,如果要动态设置x,y位置,可以使用运动监听器找到它,希望这能够帮助您


有一些对我们非常有用的链接,我希望他们会为你和其他人工作。

  • https://github.com/swapgo20/Android-Hand-Drawing
  • https://github.com/codepath/android_guides/wiki/Basic-Painting-with-Views
  • https://github.com/Korilakkuma/CanvasView
  • 我希望上面的链接在画布上绘制形状非常有用。

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

    链接地址: http://www.djcxy.com/p/68955.html

    上一篇: Draw Circle at Center of Canvas

    下一篇: Spritesheet programmatically cutting: best practices