gpt4 book ai didi

android - onDraw() 方法中,为什么提供的 Canvas 已经有比例尺了?

转载 作者:搜寻专家 更新时间:2023-11-01 07:39:11 24 4
gpt4 key购买 nike

在当前的测试项目中,我有一个自定义 View ,我将其命名为 SVGView,它只是将一些矢量图形(路径等)绘制到 Canvas 上。

XML 布局文件只包含一个 FrameLayout,它包含一个子 SVGView。当前示例中 SVGView 的 android:layout_widthandroid:layout_height 属性均设置为 300px(包含的 FrameLayout 超过足够的空间来容纳)。在 SVGView 的 onMeasure() 中,调用 setMeasuredDimension() 的参数为 300、300。

调用onDraw()方法绘制图形到Canvas对象时,发现Canvas没有单位矩阵;相反,Canvas 已经应用了一些比例转换。这是什么原因?我(错误地)假设 Canvas 的缩放比例为 1,因为 View 的实际尺寸、它的 Canvas 和它在屏幕上的表示都匹配。

我问的这个问题与我在之前的问题中详细描述的问题有关:Canvas drawing cache bitmap is slightly blurred or has anti-alias .我发现当我将缓存位图绘制回 Canvas 时,它与原始矢量图形相比略微模糊,尽管事实上我没有使用重新缩放并使用关闭了抗锯齿的 Paint 绘制回位图.我现在绝对相信必须有 一些 缩放过程,我不知道会导致位图发生这种情况。发现 onDraw() 的 Canvas 参数已经应用了一些缩放变换可能是解决这个问题的一个重要线索——但我不明白为什么它有这样的缩放,当 Canvas 的尺寸肯定与它最终要绘制到的屏幕。

谢谢,

崔维

最佳答案

您是否在 list 中声明了 minSdkVersion 或 targetSdkVersion?如果您的目标 API 级别低于 4,您的应用将以缩放兼容模式运行,就像它针对 G1 屏幕一样。

关于android - onDraw() 方法中,为什么提供的 Canvas 已经有比例尺了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6286483/

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