我是android和图形开发的新手。我实现了一个自定义视图,并希望绘制到画布上。我将自定义视图的大小设置为(宽度x(宽度/2)),因此矩形的高度是宽度的一半。现在开始绘图时,我很容易在像1X1这样的正方形区域上绘图。像这样:
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec){
int widthSize = MeasureSpec.getSize(widthMeasureSpec);
int heightSize = MeasureSpec.getSize(heightMeasureSpec);
int ChosenSize = Math.min(widthSize, heightSize);
int width = ChosenSize;
int height = (int)(ChosenSize/2);
setMeasuredDimension(width,height);
}
@Override protected void onDraw(Canvas canvas){
float width = (float)getWidth();
float height = (float)getHeight();
canvas.save(Canvas.MATRIX_SAVE_FLAG);
canvas.scale(width ,height );
// start drawing in a 1X1 square coordinates
canvas.restore();
}
但在restore()之后,结果会有一点拉伸。我做错了什么??注意:我注意到,当不使用缩放并使用矩形宽度和高度时结果看起来不错
Thx
我想明白了。
我的画之所以拉长,是因为我从矩形缩放到正方形,这是错误的。
通常当画布是正方形时,很容易在1x1正方形上绘制,所以我缩放到画布。缩放(宽度,高度),但是当画布是矩形(宽度,宽度/2)时,我应该缩放到(宽度,高度/宽度)以获得1x2的矩形。
所以在我将缩放改为canvas之后。缩放(宽度、高度/宽度)