我正在嘗試使用鼠標滾輪放大圖片框。 使用下列變量:PictureBox縮放失算
public static int offsetX = 0;
public static int offsetY = 0;
public static double scale = .05;
我畫了一系列的多邊形的圖片框。但是,我希望左下角指向0 ,,所以我用-y繪製所有的表單。所繪製點數已受上述變量的影響,但真實點保持不變。
void pictureBox1_MouseWheel(object sender, MouseEventArgs e)
{
if (e.Delta > 0)
scale += .025;
else
scale -= .025;
pictureBox1.Invalidate();
}
當鼠標滾輪向前移動時,我增加了比例變量和框被刷新。它在PictureBox的paint方法使用此代碼粉刷:
Graphics g = e.Graphics;
foreach (Member m in activeTruss.members)
{
if (m.Visible == true)
{
Point[] pointArray = new Point[m.poly.Points.Count()];
int index = 0;
foreach (System.Windows.Point p in m.poly.Points)
{
pointArray[index].X = (int)((p.X + offsetX) * scale);
pointArray[index].Y = (int)-((p.Y + offsetY) * scale);
index++;
}
SolidBrush myBrush = new SolidBrush(m.color);
g.FillPolygon(myBrush, pointArray);
}
}
它放大正確的量,但是它似乎向左上角放大,因爲偏移量保持不變。縮小時相反。當我轉動鼠標滾輪以便直接縮放到鼠標下方的位置時,應該如何編輯偏移量?
發佈您的代碼。 –
+1,對於這個問題,反對票有點苛刻,即使沒有代碼,集中的概念是普遍的,因爲在問題中已經提供了什麼 – Joe
規模上的'f'是不必要的,只是向編譯的代碼添加更多的命令。 (單個[浮動]轉換爲雙倍) –