我是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
答案 0 :(得分:0)
我明白了。
我绘图拉伸的原因是因为我从矩形到正方形缩放是错误的。
通常当画布是方形时,很容易在1x1方格上绘制,所以我缩放到canvas.scale(宽度,高度), 但是当画布是矩形(宽度,宽度/ 2)时,我应该缩放到(宽度,高度/宽度)以获得1x2的矩形。
所以在我将缩放更改为canvas.scale(宽度,高度/宽度)
之后