2010-03-22 218 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

相关问题