1

path.lineTo(x、y)が実際にどのように機能するかを誰かが理解するのを手伝ってくれませんか。フィンガーペイントタイプのアプリでシンプルな直線を描いてみました。これが私が試した例です:

            mPath.reset();
            mPath.moveTo(0, 0);
            mPath.lineTo(480, 800);

しかし、線は0,0から240、400までしか移動しません。画面上で指を動かすと、常に半分の距離になります。(実際のプログラムには、0,0&480,800ではなくstartX、startY、x、yのタッチ座標があります)

4

3 に答える 3

1

たぶん、このコードはあなたのために働くでしょう:

Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);
Path mPath= new Path();
mPath.moveTo(0, 0);
mPath.lineTo(480, 800);
p.setColor(0xff800000);
canvas.drawPath(mPath,p);

また、(480、800)座標は、まだ画面内にありますか?

于 2012-11-15T11:53:12.143 に答える
1

コマンドは期待どおりに機能します。Path上記のコマンドは、480x800の画面を完全にカバーするビューで、左上から右下の隅に線を引く必要があります。

次のことを確認してください。

  • ビューはすべての画面をカバーします
  • それと重なる他のビューはありません
  • 座標は、ビューの左上の座標を基準にしています。左上のビューが画面の左上にあることを確認します

よろしく。

于 2012-11-15T11:56:03.650 に答える
1

これをtruobleshootするのを手伝ってくれたGozと他の人たちのおかげで、Paintがこの設定でそれをやっていたことがわかりました:

mPaint.setPathEffect(new CornerPathEffect(1000))

これを削除するかnullに設定すると、lineToは最後まで実行されます。ペイントがこれを行うとは最初は予想していませんでしたが、このコーナーの丸め効果により直線が短くなる可能性があります。

于 2012-11-17T09:20:44.750 に答える