Android - 具有硬件加速和抗锯齿功能的drawline会导致伪影

jba*_*r21 5 android drawing canvas antialiasing hardware-acceleration

我正在开发一个Android自定义图表视图,它使用Canvas#drawLines和一个打开抗锯齿的绘图对象.我的观点已打开硬件加速.偶尔当我捏合放大/缩小时,我的图形中的一些线条将显得脱节,并且它们逐渐变细为渐变.如果我更改为软件层或禁用抗锯齿,问题就会消失.这是drawLines的错误还是有人知道可能会发生什么?

第一个图像显示问题,第二个图像稍微移动并演示图形在大多数情况下的外观,完全连接的线条.

(图像演示问题) 在此输入图像描述

(显示图形应该如何显示的图像 - 仍然是几个小间隙) 在此输入图像描述

小智 1

我认为 Romain Guy 的这篇文章回答了您的一些问题:http://android-developers.blogspot.com/2011/03/android-30-hardware-acceleration.html

本质上,当硬件加速打开时,drawLines 不支持抗锯齿。另请记住,硬件加速并不总是对您的应用程序“更好”。如果您正在绘制的内容可以加速,您的应用程序将从中受益,但对于某些操作来说可能会更糟。

我相信这可以解释为什么当硬件加速时你的线条会显得脱节。不过,我不太确定它能解释为什么当你关闭抗锯齿功能时它会起作用。我想象即使关闭抗锯齿它也会显得脱节,但显然情况并非如此!