Android - 线条绘图问题

时间:2013-08-14 18:49:18

标签: java android line android-canvas

我正在写一个显示分数的小应用程序,当我绘制五线谱线时我遇到了问题。同时,线条未正确绘制。这是一张说出我所说的内容的图片:

http://imageshack.us/photo/my-images/850/y1xk.png/

这是代码:

int x = canvas.getWidth();
int y = 0;
int x_margin = 40;
int y_margin = 60;

for (int i=1; i < 51; i++) {
    canvas.drawLine(x_margin, y + y_margin, x - x_margin, y + y_margin, mLinePaint);

    if (i % 5 == 0) {

        if ((i % 10 != 0) && (tracks == 2)) {
            canvas.drawLine(x_margin, y + y_margin, x_margin, y + y_margin + 40, mLinePaint);
            canvas.drawLine(x - x_margin, y + y_margin, x - x_margin, y + y_margin + 40, mLinePaint);

            y += 40;
        }

        else {
            y += 60;
        }

    }
    else {

        canvas.drawLine(x_margin, y + y_margin, x_margin, y + y_margin + 15, mLinePaint);
        canvas.drawLine(x - x_margin, y + y_margin, x - x_margin, y + y_margin + 15, mLinePaint);

        y += 15;
    }
}

有谁知道为什么会这样?

提前致谢。

3 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为行的开头和结尾的y略有不同,请确保两个y值完全相同。

您也可以尝试

youCanvas.setDrawFilter(new PaintFlagsDrawFilter(Paint.ANTI_ALIAS_FLAG,Paint.DITHER_FLAG));

答案 1 :(得分:0)

您是否检查过以确保它不是模拟器。如果你在手机上运行它可能会正常工作。

答案 2 :(得分:0)

我猜这与数学坐标和“真实”像素坐标之间的转换有关。

我建议画线两次或更多次以验证错误总是在同一点上发生。

我也会在真实的设备上测试它,问题可能与android和PC屏幕之间的屏幕坐标转换有关...

祝你好运,这个bug不好笑