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

これは、数学的座標と「実際の」ピクセル座標との間の変換に関連していると思います。

エラーが常に同じポイントで発生することを確認するために、線を 2 回以上描画することをお勧めします。

また、実際のデバイスでテストします。問題は、Android と PC 画面間の画面座標の変換に関連している可能性があります...

頑張ってください、このバグは面白くありません

于 2013-08-14T19:19:35.747 に答える