この問題に関するいくつかの質問がありましたが、私はすべてのソリューションを試しましたが、私の場合はそれほど効果がありませんでした。 私のコードは動作しています。このimageは、[描画]ボタンをクリックしたときの動作を示しています。 私はその図面をズームする必要があります。オートキャド機能 "ズーム/エクステント"のようなものをコーディングすることは可能ですか?ペイントイベントの描画線のサイズ変更
Pen myPen = new Pen(Color.Black);
int centerpointx, centerpointy;
private void pictureBoxDraw_Paint(object sender, PaintEventArgs e)
{
centerpointx = pictureBoxDraw.Size.Width/2;
centerpointy = pictureBoxDraw.Size.Height/2;
myPen.Width = 2;
if (binary > 0)
{
var sizecrestgeo = 40;
var distancearraycrestgeo = new float[sizecrestgeo];
var elevationarraycrestgeo = new float[sizecrestgeo];
for (int i = 0; i < sizecrestgeo; i++)
{
distancearraycrestgeo[i] = float.Parse(dataGridViewCrestGeo.Rows[i].Cells[0].Value.ToString());
elevationarraycrestgeo[i] = float.Parse(dataGridViewCrestGeo.Rows[i].Cells[1].Value.ToString())*-1;
}
for (int i=0; i < sizecrestgeo-1; i++)
{
e.Graphics.DrawLine(myPen, distancearraycrestgeo[i]+centerpointx, elevationarraycrestgeo[i]+centerpointy, distancearraycrestgeo[i + 1]+centerpointx, elevationarraycrestgeo[i + 1]+centerpointy);
}
}
else
{
}
}
private void buttonDraw_Click_1(object sender, EventArgs e)
{
if (Hd > 0.0001)
{
binary = 1;
pictureBoxDraw.Invalidate();
}
else
{
MessageBox.Show("No data to draw, perform analysis first.");
}
}
private void buttoncleardraw_Click(object sender, EventArgs e)
{
binary = 0;
pictureBoxDraw.Invalidate();
}
}
Graphicsオブジェクトをスケールすることができます。 [ここ](http://stackoverflow.com/questions/32204274/panel-drawing-zoom-in-c-sharp/32204516#32204516)と[ここ](http://stackoverflow.com/questions/32204274/)を参照してください。 panel-drawing-zoom-in-c-sharp/32204516?s = 4 | 0.8505#32204516)を使用します。 – TaW
ペンの幅さえもスケーリングされているので、ペイントでは1pxより小さいサイズを使用することをお勧めします。彼らはまだ最小1pxで描かれます。 – TaW
@TaW役立つ例と警告、ありがとうございます。 [img1](https://i.hizliresim.com/V0q6oV.png)[img2](https://i.hizliresim.com/1LQDmp.png)実際これは私が欲しいものではありません。私はユーザーがこれを制御しないように、私は何とか描画の中心にする必要があります。 –