当前位置:  开发笔记 > Android > 正文

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

如何解决《Android中的Paint和TextPaint有什么区别?》经验,为你挑选了1个好方法。

Paint和之间有什么区别TextPaint?只能TextPaint在画布上绘制文字吗?

我最近一直在研究如何在画布上绘制文字,这导致了我TextPaint.但是,在阅读源代码时,我很惊讶地发现根本没有太多内容TextPaint.实际上,您实际上并不需要它在画布上绘制文本.所以我正在添加这个Q&A以使其更加清晰.



1> Suragch..:

TextPaint是.的子类Paint.然而,与您从这些名称中猜到的相反,在画布上绘制文本的繁重工作是通过完成的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提供了一些额外的数据.如果您阅读TextLine类源代码(此类绘制一行文本),您可以看到这一点.这显然是为什么在创建像a这样的东西时你必须传入一个TextPaint而不是一个Paint对象StaticLayout.

TextPaint字段

关于"额外数据"在这里的说明是一个更全面的解释,文档非常稀少.(Disclamer:通过更改a中的这些值TextPaint,我实际上无法影响我在测试中绘制文本的方式的任何更改.所以请仔细阅读本节内容.)

baselineShift - 基线是文本底部的线.请参阅此答案以获取图像.更改baselineShift会导致基线向上或向下移动,从而影响在线上绘制文本的高度.

bgColor - 这是文本背后的背景颜色.

density - 我认为这是屏幕密度,但我找不到它在任何源代码中使用.

drawableState- 除了PFLAG_DRAWABLE_STATE_DIRTY标志之外,我在源代码中找不到太多内容,这让我觉得这可以让对象知道何时需要重绘.

linkColor - 我只能假设这意味着它所说的,链接的文本颜色.但是,我发现在任何源代码中都没有使用它.

笔记

TextPaint 源代码

Paint 源代码

如果您有任何其他信息,请留言或更新此答案.

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有