none
最小化到工具列中再復原後picturebox中我畫的圖框會不見... RRS feed

  • 問題

  • 我的Form中有一個picturebox跟幾個按鈕, 在picturebox上貼一個圖,然後用
    Graphics aGraphics = pictureBox1.CreateGraphics();
    aGraphics.FillRectangle(abrush, videoRect.X, videoRect.Y, videoRect.Width, videoRect.Height);
    aGraphics.DrawRectangle(apen, videoRect.X, videoRect.Y, videoRect.Width - 1, videoRect.Height - 1);
    aGraphics.DrawString("影像視窗", afont, abrush2, videoRect.X + 2, videoRect.Y + 2);
    在上面畫一個框框

    然後我把整個工作視窗最小化, 然後還原, 程式中似乎會執行很多次Form1_Activated(object sender, EventArgs e)
    所以我把畫框框寫成一個函式drawall()放到
    private void Form1_Activated(object sender, EventArgs e)
    {
        drawall();
    }

    但是最後結果式picturebox上只有一個圖, 框框沒有畫出來, 但是我用中斷點在drawall一步一步跑到最後是有畫出框框的
    請問要怎麼解決這個問題, 如果我描述問題不清楚我再補充, 謝謝^^
    2010年3月1日 上午 01:18

解答

所有回覆

  • Hi!

    試試看放到 Paint 重繪事件

            private void Form1_Paint(object sender, PaintEventArgs e)
            {
                 drawall();
            }



    小歐ou是個菜鳥工程師,回答不好請不要標我的回覆為解答,有網友熱心回覆也請發問者儘快回應,謝謝
    歡迎參觀我的Blog.NET菜鳥自救會
    • 已標示為解答 lala賢 2010年3月1日 上午 05:05
    2010年3月1日 上午 01:27
    版主
    • 已標示為解答 lala賢 2010年3月1日 上午 08:21
    2010年3月1日 上午 01:27
  • Hi,
    請問Form1_Paint與pictureBox1_Paint有什麼差異
    我要怎麼把事件加入@@?

    我在
    public Form1()
    {
                InitializeComponent();
    }
    加入 pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);
    然後
    private void pictureBox1_Paint(object sender, PaintEventArgs e)
    {
           drawall();
    }
    發現他會一直畫不停
    2010年3月1日 上午 03:15
  • Hi,
    請問Form1_Paint與pictureBox1_Paint有什麼差異
    我要怎麼把事件加入@@?

    1. 請問Form1_Paint與pictureBox1_Paint有什麼差異
    一個表示 Form1 需重繪時觸發事件
    一個表示 pictureBox1 需重繪時觸發事件

    2. 我要怎麼把事件加入
    可在選取 Form1 控制項或者 PictureBox1 控制項後,按右鍵,選擇 [屬性]
    在 [屬性] 視窗上點選 [事件],圖案為閃電
    找出 Paint 點兩下,會產生對應的事件處理函式

    3. 發現他會一直畫不停
    因為您的 DrawAll() 對 pictureBox1 作繪圖動作,所以觸發 Paint 事件進行重繪並且執行 DrawAll(),所以就一直畫



    小歐ou是個菜鳥工程師,回答不好請不要標我的回覆為解答,有網友熱心回覆也請發問者儘快回應,謝謝
    歡迎參觀我的Blog.NET菜鳥自救會
    • 已標示為解答 lala賢 2010年3月1日 上午 08:21
    2010年3月1日 上午 03:27
    版主
  • hi
    也可以參考這篇討論
    http://social.msdn.microsoft.com/Forums/zh-TW/233/thread/798220e2-e491-4c55-9f12-509a84149de5
    http://www.dotblogs.com.tw/ricochen/Default.aspx
    • 已標示為解答 lala賢 2010年3月1日 上午 08:22
    2010年3月1日 上午 04:02
  • 謝謝版大, 問題解決了~~~
    2010年3月1日 上午 05:06