Изменение размера ToolStripButtons для соответствия полному изображению BackGround

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

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

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

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

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

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

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


person net    schedule 22.03.2010    source источник


Ответы (2)


Что ж, вы узнали, почему он оставляет пространство вокруг свойства 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 ... и сделать какой-то рисунок, который сделает очевидным для пользователя, что кнопка нажата или выбрана. Может быть, нарисуйте прямоугольник толстым пером, решать только вам.

person Hans Passant    schedule 22.03.2010
comment
Ух ты. Удивительный. это новый мир. :) большое спасибо. этот ответ - именно то, что я ищу. Еще раз спасибо :) - person net; 23.03.2010

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

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

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

person Stewbob    schedule 22.03.2010
comment
хм .. Я не знал о причине до того, как прочитал ваш ответ. Буду изучать больше. спасибо Stewbob. :) - person net; 23.03.2010