从矩形缩放到正方形

时间:2014-01-01 13:35:11

标签: android graphics

我是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

1 个答案:

答案 0 :(得分:0)

我明白了。

我绘图拉伸的原因是因为我从矩形到正方形缩放是错误的。

通常当画布是方形时,很容易在1x1方格上绘制,所以我缩放到canvas.scale(宽度,高度), 但是当画布是矩形(宽度,宽度/ 2)时,我应该缩放到(宽度,高度/宽度)以获得1x2的矩形。

所以在我将缩放更改为canvas.scale(宽度,高度/宽度)

之后