1 android canvas android-custom-view android-view
我必须创建一个自定义视图,我必须绘制一个矩形.我正在尝试使用该canvas.drawRect
方法.我想像这样创建一些矩形
灰色的是我的自定义视图,它扩展了View
类.在onDraw
方法内部我试图绘制矩形.
但实际上我对drawRect
方法的参数感到困惑.
根据文档
/**
* Draw the specified Rect using the specified paint. The rectangle will
* be filled or framed based on the Style in the paint.
*
* @param left The left side of the rectangle to be drawn
* @param top The top side of the rectangle to be drawn
* @param right The right side of the rectangle to be drawn
* @param bottom The bottom side of the rectangle to be drawn
* @param paint The paint used to draw the rect
*/
Run Code Online (Sandbox Code Playgroud)
我假设左边和顶部形成起点的x,y坐标,右边是宽度,底部是高度.但它似乎没有这样的方式.
我尝试过这样的东西来绘制一个矩形,但它没有绘制任何东西
paint.setColor(Color.BLUE);
canvas.drawRect(5, canvas.getHeight()/2, 30, 30, paint );
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我们如何使用这些值绘制一个矩形?
如果有人能够显示至少绘制第一个矩形的代码,那将非常有用.
我的要求是,内部矩形的数量是动态的,所以如果我将4个传递给这个视图,它应该水平创建4个相等宽度的矩形.就像是
提前致谢!!
Sar*_* Kn 10
但实际上我对drawRect方法的参数感到困惑.
该drawRect
方法只需要两个坐标来绘制矩形.左上角和右下角.因此,4个点在画布中形成这两个坐标.希望从下面的图像中可以清楚地看到
P1和P2是由(左,上)和(右,下)形成的点,因此绘制的矩形将是这样的.
要像在图像中显示的那样动态绘制矩形,请尝试这样的操作
int[] colors = new int[]{Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW}; // given some fixed colors
Run Code Online (Sandbox Code Playgroud)
在你的onDraw
方法
@Override
protected void onDraw(Canvas canvas) {
int padding = 5;
float rectangleWidth = (getMeasuredWidth() - padding * 2) / colors.length;
for (int i = 0; i < colors.length; i++) {
paint.setColor(colors[i]);
canvas.drawRect(padding + (rectangleWidth * i), getMeasuredHeight() / 2, padding + rectangleWidth * (i + 1), getMeasuredHeight() - padding, paint); // 5 px is the padding given to the canvas
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4106 次 |
最近记录: |