Java 画布绘制不正确
我有一个类GameCanvas扩展视图,我在xml布局中使用它:Java 画布绘制不正确,java,android,canvas,draw,Java,Android,Canvas,Draw,我有一个类GameCanvas扩展视图,我在xml布局中使用它: public class GameCanvas extends View { private Canvas canvas; private Paint painter; public GameCanvas(Context ctx, AttributeSet attrs) { super(ctx, attrs); painter = new Paint(); painter.setAntiAlias(t
public class GameCanvas extends View {
private Canvas canvas;
private Paint painter;
public GameCanvas(Context ctx, AttributeSet attrs)
{
super(ctx, attrs);
painter = new Paint();
painter.setAntiAlias(true);
painter.setColor(Color.BLACK);
painter.setStyle(Paint.Style.STROKE);
painter.setStrokeWidth(5);
}
@Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
this.canvas = canvas;
// JUST AN EXAMPLE
int w = 50;
// This should draw a table, it doesn't work.
for(int i = 0; i<3; ++i)
{
for(int j = 0; j<3; ++j)
{
int x = j*w;
int y = i*w;
canvas.drawRect(x,y,w,w, painter);
}
}
// This is drawn, this works!
canvas.drawRect(50,50,100,100, painter);
// This doesn't work
canvas.drawRect(300,450,100,100, painter);
}
}
显然,当我在100或150以下的坐标中绘制一个矩形时,它可以工作,但是如果我的矩形的大小为400,它也可以工作,并且矩形填充了所有的空间,所以问题不在于画布的大小
调试器显示我的画布大小为:720 x 952
*******更新-解决方案***************/
我使用的是宽度和高度,而不是右侧和底部:
drawRect( left, top, right, bottom);
其中right and bottom是从矩形末端到画布末端的距离
我不知道为什么会这样,工作起来很不愉快。我不知道画布中是否已经有了一个方法,我没有找到它,所以我自己写了它:
public void DrawRectangle(int x, int y, int w, int h)
{
canvas.drawRect(x, y, x+w, y+h, painter);
}
我知道它很简单,但我更喜欢使用它。这行
canvas.drawRect(300450100100,painter)
在我看来很奇怪。这5个参数是:左、上、右、下和绘制。看起来你通过的是宽度
和高度
而不是右侧
和底部
哦,你说得对!我将更新问题并发布我找到的解决方案。
drawRect( left, top, right, bottom);
public void DrawRectangle(int x, int y, int w, int h)
{
canvas.drawRect(x, y, x+w, y+h, painter);
}