在android画布上绘制矩形

时间:2015-06-03 10:51:05

标签: android canvas

我想绘制5个不同边长但彼此相邻的正方形。 我想画这样的方格:http://s30.postimg.org/ajrtfabj5/squares.png

假设最大的正方形是边长5,方形小于5的边长是3,小于3是2,其余两个边长均为1,任何人都可以帮我画这个在android画布上?

还帮助我理解drawRect(Left, Top, Right, Bottom, Paint);

中给出的论点

1 个答案:

答案 0 :(得分:0)

假设您只希望这是针对此特定模式而不是可扩展的,那么以下内容应该有效。虽然它不太可能看起来正确,因为屏幕不太可能是1:2的宽高比,因此您可能需要使画布设置为符合1:2宽高比的设置尺寸。

int width =canvas.getWidth();
int height = canvas.getHeight();
float a = (height*3)/5;
flaot b = (height*2)/5;
float c = (width*3)/5;
float d = (width*4)/5;

//5x5 square
canvas.drawRect(0,a,width,height);
//3x3 square 
canvas.drawRect(0,0,a,c);
//2x2 square 
canvas.drawRect(c,0,width,b);
//first 1x1 square 
canvas.drawRect(d,b,width,a);
//second 1x1 square 
canvas.drawRect(c,b,d,a);

变量a,b,c,d在下图visual explanation of variables

中说明

drawRect中的参数是画布坐标系中矩形的相应边的坐标。画布坐标系在屏幕的左上角有(0,0)。因此,如果您希望在整个屏幕上填充三角形,则可以使用canvas.drawRect(0,0,canvas.get(width),canvas.getheight());

这将使矩形的左边缘沿x轴为0,顶部沿y轴为0,沿x轴的右边缘为画布宽度,底部沿y轴为y轴画布的高度。

希望这有帮助。