基本的に私がやろうとしているのは、描画作業を簡単にすることです。
VB6の時代には、ScalewidthとScaleheightと呼ばれるものがあり、それらをカスタム値に設定できました。元。100。
次に、使用可能なスペースの中心に点を描画する必要がある場合は、50,50で描画します。
.Netで同様の機能を取得する方法はありますか?
そのため、描画キャンバスのサイズに関係なく、絶対座標を使用して描画できます。
.NETでこれを実現する方法があるかどうかはわかりませんが、これを自分で簡単に実装できます。
// Unscaled coordinates = x, y; canvas size = w, h;
// Scaled coordinates = sx, sy; Scalewidth, Scaleheight = sw, sh;
x = (sx / sw) * w;
y = (sy / sh) * h;
// Or the other way round
sx = (x / w) * sw;
sy = (y / h) * sh;
Schnaader は正しい考えを持っていました... 最終的に、これを行うために 4 つの関数を実装しました。機能は以下
private float cnvX(double x)
{
return (float)((Width / 100.00) * x);
}
private float rcnvX(double x)
{
return (float)(x / Width) * 100;
}
private float rcnvY(double y)
{
return (float)((y / Height) * 100);
}
private float cnvY(double y)
{
return (float)((Height / 100.00) * y);
}