met*_*din 5 graphics android canvas
所以我的目标是水平翻转图像然后在画布上绘制它.目前我正在使用canvas.scale(-1,1),它可以有效地工作并水平绘制图像,但是它也会固定x轴值,在x刻度之前,x位置为150,之后我必须切换它到-150在同一个地方渲染.
我的问题是,如何在两种情况下使x值为150,而不必在比例后调整x位置?有没有一种更有效的方法来做到这一点而不会影响性能?
我知道这个问题很老,但我碰巧遇到了同样的问题.在我的情况下,我必须在绘制扩展ImageButton的类时翻转画布.幸运的是,这个特定案例的解决方案比我想象的更优雅.只需覆盖该onDraw(Canvas)方法如下:
@Override
protected void onDraw(final Canvas canvas) {
// Scale the canvas, offset by its center.
canvas.scale(-1f, 1f,
super.getWidth() * 0.5f, super.getHeight() * 0.5f);
// Draw the button!
super.onDraw(canvas);
}
Run Code Online (Sandbox Code Playgroud)
我通过在使用位图之前将转换应用于位图来解决此问题,如下所示:
public void applyMatrix(Matrix matrix) {
mBitmap = Bitmap.createBitmap(mBitmap, 0, 0,
mBitmap.getWidth(), mBitmap.getHeight(), matrix, true);
}
...
Matrix matrix = new Matrix();
matrix.preScale(-1, 1);
mSprite.applyMatrix(matrix);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8353 次 |
| 最近记录: |