java - 在同一位置多次在画布上画线使其更加饱和
问题描述
我遇到了一个非常奇怪的绘图问题。我想创建 PDF,为此,我使用了一个 android 本机 PDF API,它为我提供了一个画布。过了一会儿,我注意到在同一个地方多次画线或矩形比只画一次的饱和度更高。这是我的测试代码:
Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(0.5f);
paint.setARGB(255,0,0,0);
for(int i = 0;i < 1000;i++)
canvas.drawLine(0, 10, PageRectangle.A4.getPointX(), 10, paint);
canvas.drawLine(0, 20, PageRectangle.A4.getPointX(), 20, paint);
这是结果
有没有办法消除这种饱和?
解决方案
经过一番研究,我发现Canvas
提供的 byPdfDocument.Page
不绘制像素,它绘制PostScript Points。这是将像素转换为点的代码:
/**
* Converting pixels to PostScript Points
* @param px pixels to convert
* @return PostScript Points
*/
public float convert(float px){
return (px+0.5f) * 72f / 96;
}
推荐阅读
- django - Cloud Build Django:出错时重试(collectstatic,ServiceUnavailable)
- python - 如何等待线程将结果写入输出文件?
- matplotlib - 网格单元和用于突出显示它们的颜色网格之间的错位(在 Matplotlib 中)
- javascript - 基于移动设备上的选择选项隐藏/显示选择
- javascript - 每次打开终端时使用节点运行程序
- java - 在没有dom解析器的java中使用xpath获取属性计数
- sql - 将 Null 和空白列抓取到表中
- python - Jupyter Notebooks:在 Python 中读取 cvs 文件时遇到问题
- python - 向熊猫数据透视表中的列添加新行
- javascript - 我在 javascript 中的 innerHTML 分配命令不会自动更新 ui