【发布时间】:2017-10-20 03:09:56
【问题描述】:
我很少看到关于这个问题的问题,我尝试了所有解决方案,但没有一个适合我的情况。 我的代码正在运行;这个image 显示了当我点击绘图按钮时会发生什么。 我需要放大该图。是否可以编写类似 autocad 功能“缩放/范围”的代码?
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();
}
}
【问题讨论】:
-
请注意,即使是笔的宽度也会被缩放,因此您可能希望在您的 Paint 中使用小于 1px 的宽度。它们仍将以至少 1 像素的尺寸绘制。
-
要保持点居中,您将添加一个 TranslateTransform。提前计划可能的滚动!
-
@TaW 你能给我举个例子吗?我不知道 TranslateTransform 的事情..
标签: c# drawing picturebox zooming