私は実際の座標の特定の点をViewBox内のキャンバスに視覚化しなければならないプロジェクトに取り組んでいます。以下は、データコレクションのサンプルです。実世界のデータをキャンバス内で正規化するwpf
X Y
-40085.119 266560.373
-40084.72 266560.736
-40083.51165 266559.4097
-41606.37001 263437.3891
-40098.72351 266327.5417
-40075.57653 266399.5039
-40076.09771 266398.6382
-40629.41856 265374.2896
-40698.41477 265214.1637
現実世界のデータをキャンバス内に収めるには:私は次の関数を呼び出しています。次のように私が述べた機能を使用し
public double changeScale(double point, double min, double max, double size){
double convertedValue;
convertedValue = (point - min)/(max - min);
convertedValue *= size;
return convertedValue;
}
:
sc.changeScale(x, xmax, xmax, mycanvas.Width)
sc.changeScale(y, ymax, ymin, mycanavs.Height)
XMIN、XMAXとYMINを、ymaxのは、リアルタイムデータのテーブルから取り出されます。私のキャンバスのサイズは1280 X 720です。たとえば、ある要素に座標(XMax、YMax)がある場合、それは(1280,720)にプロットされ、同様に、要素に座標(XMin、XMax) (0,0)にプロットされます。 これはまだ動作していますが、現実世界の表示が不正確であるノーマライズされたマップが伸びているため、これは正しくないことがわかりました。私は私と他のソフトウェアの結果を比較しました。以下の画像は、私が作成したものです:
私の期待される結果は次のとおりです。あなたは縦横比を維持する必要が
あなたはもっと喜ばせることができますか? – Skaranjit
私は答えを更新しました。アスペクト比を維持するには、X軸とY軸の両方の値に同じ量を乗算しなければならないことに注意してください。 –
私はあなたの答えに従っていましたが、私は縮尺で値を使用することに固執しています。私は(XMax - XMin)/(YMax - YMin)の比率を使用しました。私は同じ比率で両方を掛け合わせましたが、ちょうどそれを小さくしました。 – Skaranjit