几何概念的解释

时间:2012-09-01 06:30:47

标签: android android-layout geometry

我知道这是一个愚蠢的问题,但是我正在阅读一个教程,我似乎并不理解下面的代码行......让我的头发理解了这背后的几何算法,但...... 。哦!!!这很简单,但我似乎没有得到它。请帮忙......我是初学者......

  private void drawPict(Canvas canvas, int x, int y, int w, int h,
                              float sx, float sy) {
            canvas.save();
            canvas.translate(x, y);
            canvas.clipRect(0, 0, w, h);
            canvas.scale(0.5f, 0.5f);
            canvas.scale(sx, sy, w, h);
            canvas.drawPicture(mPicture);
            canvas.restore();
        }
        @SuppressWarnings("unused")
            @Override
        protected void dispatchDraw(Canvas canvas) {
            super.dispatchDraw(mPicture.beginRecording(getWidth(), getHeight()));
            mPicture.endRecording();
            int x = getWidth()/2;
            int y = getHeight()/2;
            if (false) {
                canvas.drawPicture(mPicture);
            } else {
                drawPict(canvas, 0, 0, x, y,  1,  1);
                drawPict(canvas, x, 0, x, y, -1,  1);
                drawPict(canvas, 0, y, x, y,  1, -1);
                drawPict(canvas, x, y, x, y, -1, -1);
            }
        }

我再次研究过这个...并且理解canvas.scale有4个参数,是我假设的点的坐标......但是我还是不能理解浮点sx,浮点系统... < / p>

sx = -1和sy = 1 ......它会扩展,同意......但是不是更好的方法吗?

1 个答案:

答案 0 :(得分:2)

按系数+1进行缩放会给出沿轴的一致性变换,并且按系数-1进行缩放会在轴上产生反射。在本示例中,您可以在每个轴上具有四种可能的反射/无反射组合。将两个坐标缩放+1是身份转换。将x坐标缩放-1并将y坐标缩放+1会在垂直线上产生反射,即左右反射。反之亦然,将x缩放+1,将y缩放-1,这是一个向上反射。将两个坐标缩放-1会产生双重反射,这与旋转180度相同。

Canvas类没有单独的反射调用,因此使用缩放。