Path.transform和Canvas.scale之间有什么区别

时间:2014-03-18 09:10:49

标签: android matrix bitmap path android-canvas

我希望缩放一条可以绘制到Canvas的路径。我想知道以下两个选项之间的区别是什么:

public void onDraw(Canvas canvas){
    canvas.scale(factor, factor);
    canvas.draw(path, paint);
}

public void onDraw(Canvas canvas){
    // prepare the matrix here
    ....
    path.transform(matrix);
    canvas.draw(path, paint);
}

我的理解是:第一个将改变Canvas本身而不是要绘制的对象,就像路径一样;第二个是转换对象本身。

这有什么区别?我应该在什么样的情况下使用哪个选项?在Bitmap的基础Canvas方面发生了什么?谢谢

1 个答案:

答案 0 :(得分:1)

我认为这是为了使路径更大。

使用Canvas.Scale()使画布变小,绘制到它,然后再将其缩小(我认为你错过了一步)。

Path.transform使路径变大,然后将其绘制到画布上。

缩放方法将使路径像素化,因为它在绘制后调整大小。 变换将更好地调整大小,因为它在绘制之前调整矢量路径的大小。

如果你让路径变小......那么就没有明显的效果值得注意。除了线宽之外。