我在圖片框中使用以下代碼嘗試在圖像上繪圖,但是更改不是在窗體上呈現。通過圖形更改圖像不會在窗體中呈現
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
if (drawMode)
{
Graphics g = Graphics.FromImage(pictureBox1.Image);
RectangleF rectf = new RectangleF(10, 10, 100, 100);
g.SmoothingMode = SmoothingMode.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.DrawString("yourText", new Font("Tahoma", 22), Brushes.Green, rectf);
g.Flush();
....
編輯:代碼現在在picturebox1對象的PaintEventHandler中。
正如答案所說,對Invalidate的調用會擦除您所做的任何操作並將其替換爲原始圖像。您需要確保每次控件重新繪製時自己修改圖像,或者將其保存到新的位圖並將其用作picturebox圖像。 –
謝謝@RonBeyer - 我已經改變了這一點,但沒有運氣。我錯過了什麼嗎? – FaddishWorm
是的,先在paint方法調用base.Paint(sender,e)。然後在你的代碼中不要使用Graphics.FromImage,使用g = e.Graphics。那麼它應該工作。 –