誰かが私がAndroidのクレイジーなCanvasクラスを理解するのを手伝ってくれます。正確ではないようで、パラメータが浮動小数点値である理由がよくわかりません。たとえば、絶対点の値を使用して、描画したいポリゴンを次に示します。
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setColor(Color.RED);
mPaint.setAntiAlias(false);
mPaint.setDither(false);
mPaint.setFilterBitmap(false);
Path path1 = new Path();
path1.moveTo(151, 100);
path1.lineTo(200, 200);
path1.lineTo(100, 151);
path1.lineTo(200, 151);
path1.lineTo(100, 201);
path1.lineTo(151, 100);
// So that these points constitute a closed polygon
path1.setFillType(Path.FillType.EVEN_ODD);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(Color.GRAY);
// Draw the polygon
mCanvas.drawPath(path1, mPaint);
Windows GDIを使用してWindowsで同様のコードを実行すると、ポイントが正確に特定されます。ただし、Androidでは、次の2つの問題があります。
1)アンチエイリアシングをオフにしたのに、線がアンチエイリアシングされているように見えます(灰色の線の周りに黒っぽいピクセルがあります)。2)必ずしも指定されたポイントに達するとは限りません。することもあればしないこともあります
私が望んでいたポイントに近づくために、私はこれをしなければなりません:
Path path1 = new Path();
path1.moveTo(151, 100-1);
path1.lineTo(200+1, 200+1);
path1.lineTo(100-1, 151);
path1.lineTo(200+2, 151);
path1.lineTo(100, 201);
path1.lineTo(151+1, 100);
ここでのルールや、それがとても奇妙なことを理解することはできません。