gpt4 book ai didi

android - Android 中的 Paint 和 TextPaint 有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:44:48 25 4
gpt4 key购买 nike

PaintTextPaint 有什么区别?只能 TextPaint 将文本绘制到 Canvas 上吗?

我最近一直在研究如何在 Canvas 上绘制文本,这让我想到了 TextPaint。然而,在阅读the source code我惊讶地发现 TextPaint 没有太多内容。事实上,您实际上并不需要它在 Canvas 上绘制文本。因此,我添加了此问答以使其更加清楚。

最佳答案

TextPaintPaint 的子类.然而,与您从这些名称中可能猜到的相反,在 Canvas 上绘制文本的繁重工作是由 Paint 完成的。因此,这

TextPaint textPaint = new TextPaint();
textPaint.setTextSize(50);
canvas.drawText("some text", 10, 100, textPaint);

还有这个

Paint paint = new Paint();
paint.setTextSize(50);
canvas.drawText("some text", 10, 100, paint);

实际上做同样的事情。 TextPaint 只是 Paint 的轻型包装器,并为 Android 提供了一些 extra data在绘制和测量文本时使用。如果您阅读 TextLine class source code,您可以看到这一点。 (此类绘制一行文本)。这显然是为什么在创建类似 StaticLayout 的对象时必须传入 TextPaint 而不是 Paint 对象的原因.

TextPaint 字段

关于“额外数据”是什么的文档非常稀疏,这里有一个更全面的解释。 (免责声明:通过在 TextPaint 中更改这些值,我实际上无法影响测试中文本绘制方式的任何更改。所以请看这一部分加一粒盐。)

  • baselineShift - 基线是文本底部的线。参见 this answer对于图像。更改 baselineShift 会导致基线向上或向下移动,从而影响文本在一行中的绘制高度。
  • bgColor - 这是文本后面的背景色。
  • density - 我假设这是屏幕密度,但我找不到任何源代码中使用它。
  • drawableState - 除了 PFLAG_DRAWABLE_STATE_DIRTY,我在源代码中找不到太多内容标志,这让我觉得这是用来让对象知道何时需要重新绘制的。
  • linkColor - 我只能假设这意味着它所说的,链接的文本颜色。但是,我找不到在任何源代码中使用它。

注意事项

关于android - Android 中的 Paint 和 TextPaint 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41775821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com