1

我正在编写一个显示乐谱的小应用程序,当我绘制五线谱的线条时遇到了问题。同时,线条没有正确绘制。这是一张图片来说明我在说什么:

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;
    }
}

有谁知道为什么会这样?

提前致谢。

4

3 回答 3

1

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

你也可以试试

youCanvas.setDrawFilter(new PaintFlagsDrawFilter(Paint.ANTI_ALIAS_FLAG,Paint.DITHER_FLAG));
于 2013-08-14T19:04:45.903 回答
0

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

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

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

祝你好运,这个bug不好笑

于 2013-08-14T19:19:35.747 回答
0

Have you checked to make sure it isn't the emulator. It may work fine if you run it on your phone.

于 2013-08-14T19:01:45.640 回答