2010-03-22 214 views
2

我的目標是在toolStripButton和toolStripDropDownButton中完全合適的圖像。調整ToolStripButton的大小以適合完整的BackGround圖像

如果圖像屬性設置的按鈕中的圖像,我不能完全適合按鈕中的圖像。由於保證金,邊界或按鈕的東西(我不知道)。

所以我嘗試使用BackgroudImage屬性在按鈕中設置圖像。在我調整一些屬性(如AutoSize,Size等...)後,我可以將圖像放入按鈕中。

但在這種情況下,我看不到背景圖像。當鼠標光標位於按鈕中時,它消失。

我該如何解決這個問題?

圖片屬性。我無法消除圖像之間的差距。 alt text

BackgroundImage Property。當鼠標光標在圖像上時,我看不到圖像。 alt text

回答

3

那麼,你發現它爲什麼會在Image屬性周圍留下空間。您可以通過分配ToolStrip.Renderer屬性來自定義按鈕的渲染。這可能是這個樣子:

public partial class Form1 : Form { 
    public Form1() { 
     InitializeComponent(); 
     toolStrip1.Renderer = new MyRenderer(); 
    } 
    private class MyRenderer : ToolStripProfessionalRenderer { 
     protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e) { 
      if (e.Item.BackgroundImage == null) base.OnRenderButtonBackground(e); 
      else { 
       Rectangle bounds = new Rectangle(Point.Empty, e.Item.Size); 
       e.Graphics.DrawImage(e.Item.BackgroundImage, bounds); 
       if (e.Item.Pressed) { 
        // Something... 
       } 
       else if (e.Item.Selected) { 
        // Something... 
       } 
       using (Pen pen = new Pen(Color.Black)) { 
        e.Graphics.DrawRectangle(pen, bounds.X, bounds.Y, bounds.Width - 1, bounds.Height - 1); 
       } 
      } 
     } 
    } 

} 

你必須填寫// ...東西線和做一些拉伸,使得它明顯的是,按下按鈕,或者選擇的用戶。也許用一個粗筆畫一個矩形,這取決於你。

+0

哇。驚人。這是新的世界。 :) 非常感謝。這個反應正是我正在尋找的。再次感謝 :) – net 2010-03-23 13:29:15

2

當您在ToolStripButton的背景中顯示圖像時,將鼠標移到它上面會導致它在設計中消失。 ToolStripButton的MouseOver效果被繪製在任何背景圖片的頂部,否則效果永遠不會被看到。

當您設置ToolStripButton的Image屬性時,請確保ImageScaling設置爲None,以確保AutoSizing功能可以擴大ToolStripButton以適應圖像大小。

「圖像之間的差距」被設計到ToolStrip對象中,以便用戶知道一個按鈕的結束位置和另一個按鈕的開始位置。

+0

嗯..在閱讀您的回覆之前,我不知道原因。 我會學習更多。感謝Stewbob。 :) – net 2010-03-23 13:34:28

相關問題