安卓 canvas.scale(-1,1)

标签 android graphics canvas

所以我的目标是水平翻转图像,然后将其绘制在 Canvas 上。目前我正在使用 canvas.scale(-1,1) ,它可以有效地工作并水平绘制图像,但是它也会与 x 轴值发生关系,在比例之前,x 位置将是 150,之后我必须切换它到 -150 以在同一位置呈现。

我的问题是,我怎样才能使 x 值在两种情况下都为 150,而不必在缩放后调整 x 位置?有没有一种更有效的方法可以在不影响性能的情况下做到这一点?

最佳答案

我知道这个问题很老了,但我碰巧遇到了同样的问题。在我的情况下,在扩展 ImageButton 的类上绘图时,我不得不翻转 Canvas 。幸运的是,这个特定案例的解决方案比我想象的更优雅。只需重写 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);
}

关于安卓 canvas.scale(-1,1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3902772/

相关文章:

c++ - 多个对象,不同的行为

Java Canvas 大小问题

Android - 动态分配和检索 ID

android - Google Play 结算 : how to simulate 'Account Hold' status (in debug/sandbox mode)

java - 它可能在 url 中发送数组

javascript - 如何重新创建此 "wavy"图像效果?

javascript - Paper.js背景栅格化故障

java - 如果页面已经加载,如何使 viewpager 不再加载页面

xcode - OS X 是否支持 3 倍缩放?

java - 如何渲染无间隙的逐像素绘图? Java Swing