2012-06-27 214 views
1

我試圖在檢測到mousedown事件時在窗口的特定位置繪製一個橢圓。橢圓不保留繪製

橢圓繪製時沒有任何問題,但繪製後立即消失。

我認爲這與應用程序不斷處理WM_PAINT消息有關,但應用程序不在每個繪製消息上繪製橢圓。

如何使橢圓保持繪製在窗口的特定座標上?

private void rtbLogicCode_MouseDown(object sender, MouseEventArgs e) 
    { 
     Point p = new Point(e.X, e.Y); 
     if (p.X < 39 && p.Y < 817) 
     { 
      LinearGradientBrush lgb = new LinearGradientBrush(new Rectangle(0, p.Y, 15, 15), Color.LightPink, Color.Red, 45); 

      System.Drawing.Graphics formGraphics = rtbLogicCode.CreateGraphics(); 
      formGraphics.FillEllipse(lgb, 0, p.Y, 15, 15); 
      this.Invalidate(); 
      lgb.Dispose(); 
      formGraphics.Dispose(); 
     } 
     ... 
    } 

回答

3

通常的模式應該是WM_MOUSEDOWN處理程序只記錄位置並使窗口無效。然後WM_PAINT處理程序檢索信息並進行適當的繪製。