首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Paint.setStrokeWidth()使用什么度量单位?

Paint.setStrokeWidth()使用什么度量单位?
EN

Stack Overflow用户
提问于 2011-01-25 11:52:34
回答 3查看 18.1K关注 0票数 47

Paint.setStrokeWidth()使用什么度量单位,是否需要根据当前屏幕密度缩放此值?

它是一个浮点值,所以我知道它不是一个像素数。它一定是相对于某些东西的。

这是在撰写本文时文档所说的全部内容:

设置描边的宽度。将0传递到细线模式中的笔划。发际线总是画一个独立于画布矩阵的像素。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-25 16:48:04

笔划宽度是以像素为单位定义的(是的,它是一个浮点数,使用像素的分数是没有问题的:)

票数 41
EN

Stack Overflow用户

发布于 2014-11-12 08:42:59

setStrokeWidth使用像素。因此,要将dps转换为用于绘画的像素:

代码语言:javascript
复制
        int dpSize =  10;
        DisplayMetrics dm = getResources().getDisplayMetrics() ;
        float strokeWidth = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpSize, dm);
        paint.setStrokeWidth(strokeWidth);
票数 27
EN

Stack Overflow用户

发布于 2019-05-22 01:38:15

如果你正在尝试onDraw你自己的“画布边框”,有一件事要记住,那就是即使是笔画也是被裁剪的。所以

代码语言:javascript
复制
paint.style = Paint.Style.STROKE
rect.set(0, 0, width, height)
paint.strokeWidth = 10F
canvas.drawRect(rect, paint)

将导致一个只有5F宽的“边框”。这是因为笔划在矩形上居中,在这种情况下,矩形是画布的边缘-导致它的一半实际上被裁剪,因为它在画布之外。

要解决这个问题,只需将所需的边框厚度乘以2。在上面的示例中,您设置了strokeWidth = 20F,您将“看到”一个10F的笔划。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4789806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档