Изменение размера ToolStripButtons для соответствия полному фоновому изображению - PullRequest
2 голосов
/ 23 марта 2010

Моя цель - полностью подогнать изображение в toolStripButton и toolStripDropDownButton.

Если изображение в кнопке установлено со свойством image, я не могу полностью уместить изображение в кнопке. Из-за полей, границ или чего-то еще от кнопки (точно не знаю).

Поэтому я пытаюсь установить изображение в кнопке со свойством BackgroudImage. После настройки какого-либо свойства (например, «Авторазмер», «Размер» и т. Д.) Я могу разместить изображение в кнопке.

но в этом случае я не вижу фоновое изображение. Исчезает, когда на кнопке находится курсор мыши.

Как я могу решить эту проблему ??

Свойство Image. Я не могу устранить разрыв между изображениями. alt text

Свойство BackgroundImage. Я не могу видеть изображение, когда курсор мыши находится на изображении. alt text

Ответы [ 2 ]

3 голосов
/ 23 марта 2010

Ну, вы узнали, почему он оставляет пространство вокруг свойства 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);
                }
            }
        }
    }

}

Вам нужно будет заполнить линии // Something ... и сделать какой-нибудь рисунок, который сделает очевидным, что кнопка нажата или выбрана. Может быть, нарисовать прямоугольник с толстой ручкой, это ваше дело.

2 голосов
/ 23 марта 2010

Когда вы отображаете изображение на заднем плане ToolStripButton, при наведении на него мышью оно исчезает, в соответствии с дизайном. Эффект MouseOver для ToolStripButton рисуется поверх любого фонового изображения, в противном случае эффект никогда не будет виден.

Когда вы устанавливаете свойство Image для ToolStripButton, убедитесь, что для ImageScaling установлено значение «Нет», чтобы гарантировать, что функция автоматического изменения размера масштабирует ToolStripButton для соответствия размеру изображения.

«Разрыв между изображениями» встроен в объект ToolStrip, чтобы пользователь знал, где заканчивается одна кнопка, а начинается другая.

...