line
というリストから座標を入れて、パネル1でスケーリングし、それらを接続する線をGraphicsPath
で描画します。私が得ている問題は、画像が垂直に反転されていることです。これはおそらくpanel1の(0,0)
の座標が左上にあり、通常の座標が左下にゼロを持つ座標系から発生しているからです。コードは以下の通りである:グラフィックスはキャンバスを垂直に反転します
Graphics G = e.Graphics;
GraphicsPath gp = new GraphicsPath();
foreach (var line in tockeKoordinate)
{
gp.AddLine((float)(line.startX), (float)(line.startY),
(float)(line.endX), (float)(line.endY));
gp.CloseFigure();
}
var rect = gp.GetBounds();
var scale = Math.Min(1f * (int)(panel1.ClientSize.Width)/rect.Width,
1f * (int)(panel1.ClientSize.Height)/rect.Height);
using (Pen pen = new Pen(Color.DarkGreen, 0.0001f))
{
G.SmoothingMode = SmoothingMode.AntiAlias;
G.Clear(Color.White);
G.ScaleTransform(scale, scale);
G.TranslateTransform(-rect.X, -rect.Y);
G.DrawPath(pen, gp);
}
私が検索してきたし、それが何らかの形でG.TranslateTransformラインに行うようになっていますが、私は値にマイナスのプレフィックスを追加するゼロの成功を収めてきた...
あなたは本当にただ、むしろ左上にある(0、0)の通常のグラフィックス規則を使用する必要があります数学的な慣習からそれをやって、後で反転させるより。 – Jashaszun
フリップされたグラフィックスオブジェクトを使用する方法については、[こちら](http://stackoverflow.com/questions/37497929/flip-coordinates-when-drawing-set-of-rectangles/37498798?s=1.5030#37498798)を参照してください。キャンバスのサイズを知る必要があることに注意してください! – TaW
@JashaszunソースGPSの座標はそうであり、それらの多くは手動で残念なことにそれらを変更することはできません。 – Romy