作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试销售位图并在每个步骤中对其进行翻译。
如果我们看下面的代码,我正在绘制一个图像,对其进行平移和缩放,然后反向执行相同的操作以恢复原始配置。但是在应用这些操作之后,我确实得到了原始缩放图像(缩放因子 1),但是图像被平移到不同的位置。
你能指出正确的方法吗? (在上面的例子中,如何到达原始配置?)
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Matrix matrix = new Matrix();
scale = (float)screenWidth/201.0f;
matrix.setTranslate(-40, -40);
matrix.setScale(scale, scale);
canvas.drawBitmap(bitMap, matrix, paint);
//back to original
canvas.drawColor(0, Mode.CLEAR);
matrix.setScale(1.0f/scale, 1.0f/scale);
matrix.setTranslate(40,40);
canvas.drawBitmap(bitMap, matrix, paint);
}
最佳答案
您应该只使用 Canvas
方法进行缩放和平移,这样您就可以利用 save()
和 restore()
API 来做你需要的。例如:
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//Save the current state of the canvas
canvas.save();
scale = (float) screenWidth / 201.0f;
canvas.translate(-40, -40);
canvas.scale(scale, scale);
canvas.drawBitmap(bitMap, 0, 0, paint);
//Restore back to the state it was when last saved
canvas.restore();
canvas.drawColor(0, Mode.CLEAR);
canvas.drawBitmap(bitMap, 0, 0, paint);
}
关于android - 在android中缩放和平移位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18709360/
我是一名优秀的程序员,十分优秀!