我正在写一个显示分数的小应用程序,当我绘制五线谱线时我遇到了问题。同时,线条未正确绘制。这是一张说出我所说的内容的图片:
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;
}
}
有谁知道为什么会这样?
提前致谢。
答案 0 :(得分:1)
这种情况正在发生,因为行的开头和结尾的y略有不同,请确保两个y值完全相同。
您也可以尝试
youCanvas.setDrawFilter(new PaintFlagsDrawFilter(Paint.ANTI_ALIAS_FLAG,Paint.DITHER_FLAG));
答案 1 :(得分:0)
您是否检查过以确保它不是模拟器。如果你在手机上运行它可能会正常工作。
答案 2 :(得分:0)
我猜这与数学坐标和“真实”像素坐标之间的转换有关。
我建议画线两次或更多次以验证错误总是在同一点上发生。
我也会在真实的设备上测试它,问题可能与android和PC屏幕之间的屏幕坐标转换有关...
祝你好运,这个bug不好笑