0

DrawLine は、定義された領域外の座標を処理できますか?

例えばmyGraphics.DrawLine(MyPen, -20, -80, 20, 90);

無限のキャンバスを使用したかのように、これが線を正しく生成することを期待しますが、グラフィック内のセクションのみをプロットします。

私のコードは次のとおりです。データベースに記録された座標から動きをプロットしています。時折、被写体がビットマップの端を越えて、予想よりも遠くに移動します。DrawLine に依存して処理していたため、この発生をチェックしません。

Bitmap Border = new Bitmap(5000, 5000);
Border.SetResolution(254, 254);

Graphics MyGraphics= Graphics.FromImage(Border);
Pen MyPen = new Pen(Color.Black, 1);


for (Int32 Point = 1; Point <= Points; Point++)
{
   XCoord2 = XCoord1;
   YCoord2 = YCoord1;
   XCoord1 = *READ FROM DATABASE*
   YCoord1 = *READ FROM DATABASE*

   if (Point > 1)
   {
        MyGraphics.DrawLine(MyPen, XCoord1, YCoord1, XCoord2, YCoord2);
   }
}

実際には、私のプロットはほとんどの場合うまくいきます。ただし、行が欠落しているグラフィックや、奇妙な座標に由来する不明瞭な行が表示されることがあります。

要約すると、DrawLine の動作は異常なパラメーターで予測可能である必要があります。プロットが常にグリッド内に収まるように三角法を導入する必要がありますか?

4

2 に答える 2

0

実際の制限は、正または負の 10 億です。この過去の質問 (.net を使用) を参照してください。

GDI+ で座標を描画するためのハード バウンドは何ですか?

私の推測では、データベースのプルが間違っていると思います。これは、文字列データ ストレージを使用していて、それを強制的に解析している場合に発生する可能性があります。

thread.sleep() を追加し、Debug.WriteLine に新しいプル (または単にブレークポイントのもの) を追加します。おそらく、値がそこに入っている可能性があり、それは奇妙であるか、奇妙に解析されています

于 2013-03-28T21:50:42.630 に答える
0

さらに実験を重ねた結果、最終的に問題を解決しました...

SolidBrush WhiteBrush = new SolidBrush(Color.White);
myGraphics.FillRectangle(WhiteBrush,0,0,5000,5000);

つまり、線を描く前に、グラフィックスの背景を真っ白にしました。NULLの背景に黒い線を描く前。これが何かに影響を与える理由はわかりませんが、影響はありました。

于 2013-03-29T13:46:03.467 に答える