【问题标题】:Android subpixel renderingAndroid 亚像素渲染
【发布时间】:2013-01-18 02:07:06
【问题描述】:

我有一条线应该越长越细。问题是,当像素变薄时,您可以清楚地看到跳跃。有没有办法在 Android 上进行亚像素渲染/抗锯齿?

canvas.drawRect() 采用浮点值,但它忽略了这些值。代码如下:

@Override
protected void onDraw(Canvas canvas) {
    float width = getMeasuredWidth() / (float) getMeasuredHeight()  * getMinimumHeight();
    float left = (getMeasuredWidth() - width) / 2.0f;
    canvas.drawRect(left, 0, left + width, getMeasuredHeight(), paint);
    super.onDraw(canvas);
}

paint 对象启用了ANTI_ALIAS_FLAG 并包含纯色。

这是默认行:

这是它变得更长更薄的时候。它的侧面应该有一些抗锯齿,虽然使整个过渡看起来更平滑。

【问题讨论】:

  • 你试过setAntiAlias( true )吗?使用setFlags() 很容易意外覆盖标志。
  • 不,它也不起作用。我没有设置任何其他标志:/
  • 可以发截图吗?
  • 我已经编辑了我的帖子并添加了截图,谢谢!
  • 实际上设置了 strokeWidth 的 drawLine 似乎可以完成这项工作!

标签: android android-canvas subpixel


【解决方案1】:

这似乎做得更好:

@Override
protected void onDraw(Canvas canvas) {
    float width = getMeasuredWidth() / (float) getMeasuredHeight()  * getMinimumHeight();
    float left = (getMeasuredWidth() - width) / 2.0f;
    paint.setStrokeWidth(width * getResources().getDisplayMetrics().density);
    canvas.drawLine(left, 0, left, getMeasuredHeight(), paint);
    super.onDraw(canvas);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-06
    • 2015-09-14
    • 2011-08-02
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 2011-05-29
    相关资源
    最近更新 更多