android - 为什么 drawLine 偏移 1 个像素?

标签 android canvas bitmap paint

对于 Android 专家来说,这可能是一个简单的问题。我正在尝试通过 Canvas 绘制到位图中。我想要精确的颜色、无抗锯齿和位于位图中精确绝对坐标的线条。有时线条位于正确的位置,有时它们偏移 1 个像素。我觉得这与缩放有关。但我不确定。这是代码:

    Paint mPaint = new Paint();
    mPaint.setColor(Paint.WHITE);
    mPaint.setStrokeWidth(0);
    mPaint.setAntiAlias(false);
    mPaint.setDither(false);
    mPaint.setStyle(Paint.Style.STROKE);

    drawingContext.mycanvas.drawLine(20, 0, 10, 10, mPaint);

这实际上画了一条从 (19,0) 到 (10,9) 的线。为什么?

最佳答案

我来回答。我不得不放弃这个并编写一个 Bresenham 算法,一个一个地设置像素。这对我正在做的事情很有效。我怀疑在从左到右、从下到上绘制线条时存在 drawLine 错误。

关于android - 为什么 drawLine 偏移 1 个像素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10923510/

相关文章:

java - 将大图像保存为 PNG

android - 改变物体掉落的速度

javascript - Canvas 背景未清除

java - 是否可以将内联位图对象添加到通过 JavaMail 发送的电子邮件正文中?

javascript - 如何将 iframe 内的 div 转换为 svg 代码?

java - 按 CTRL + 鼠标滚轮将缩放

android - android developer "mplaceholder"中的 "Processing Bitmaps Off the UI Thread"指的是什么?

android - Flutter App 针对 Android 12 CRASHES => FLAG_IMMUTABLE 或 FLAG_MUTABLE 在创建 PendingIntent 时指定

android - 如果我不在 Android 中压缩一个纯文本文件,它会在 APK 中被压缩吗?

java - 如何修复 AdMob 导致 Android 应用程序崩溃的问题?