3
我已經把這個簡單的代碼放在一起繪製一條線。現在我想申請一個ScaleTransform
它的10倍;但下面的代碼不起作用。將ScaleTransform應用於圖形GDI +
var bitmap = new Bitmap(pictureBox1.Size.Width, pictureBox1.Size.Height);
var g = Graphics.FromImage(bitmap);
pictureBox1.Image = bitmap;
var pn = new Pen(Color.Wheat, -1);
g.DrawLine(pn, 0, 0, 10, 10);
pn.Dispose();
// I'm trying to scaletransform here!
g.ScaleTransform(10, 10);
更新:
什麼是更新變化的正確方法是什麼?我沒有得到任何結果從這個:(
g.ScaleTransform(1, 1);
pictureBox1.Invalidate();
謝謝Olivier,如果我想稍後改變比例怎麼辦?例如要實現縮放?如何將ScaleTransform應用於已繪製的線? – Vahid
您無法更改現有的圖形。你總是必須重繪它!將繪圖邏輯放入圖片框的「Paint」事件處理程序中,每次縮放因子改變時(通常在鼠標或鍵值改變的事件處理程序中)調用'pictureBox1.Invalidate()。我會直接在圖片框上繪製而不是位圖。 –
所以我們在這裏沒有像'ScaleTransform'這樣的東西可以改變已經畫出的線的比例。謝謝,我會選擇這個作爲正確的答案。我打算通過WPF選擇WinForms,因爲您可以將厚度設置爲-1,並始終獲得一個像素行,並且我認爲可以對其進行縮放而不重繪它以獲得快速結果。我想我會回來與WPF。 – Vahid