Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/75: Рейтинг темы: голосов - 75, средняя оценка - 4.92
 Аватар для danyasworld
10 / 9 / 2
Регистрация: 12.04.2015
Сообщений: 238
Записей в блоге: 2
.NET 4.x

Создание кнопки с изображением (значка)

09.11.2015, 21:22. Показов 14166. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я повсюду вижу такие кнопки - в студии, в других приложениях, и что казалось бы может быть проще? Но не так все просто... Я никак не смог сделать кнопку нормально.

Вариант 1) просто добавить изображение нужного размера в свойствах кнопки. Просто, но не так как надо. Кнопка может менять свой размер с 40 пикселей до 60. Не очень то красиво. +размер картинки 300 пикселов. Нет я конечно могу ее ужать, но хочется сделать правильно. Как autosize в imagebox.

Вариант 2) image box. тут все просто - я не умею рисовать.

Вариант 3) User control от button. В итоге всех моих потуг получился imaje box, только без автосайза (да, эту тему я смотрел)

Вриант 4) изменение размера (ссылка на мдсн из этой темы). Но работает только с битмапами

в итоге - можно ли изменить размер image.png чтоб засунуть в button через стандартные свойства кнопки? Или есть ли возможноть сделать вариант 3 нормально, а не так как я?)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.11.2015, 21:22
Ответы с готовыми решениями:

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

Кнопки с изображением
как сделать такие кнопочки помогите пожалуйста

Залить кнопки др изображением. Swing
Как залить кнопки др изображением? Пробовал, но не получается. Вот код. Изображение выложено. Просто появляется большая кнопка без заливки....

7
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
09.11.2015, 23:14
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от danyasworld Посмотреть сообщение
Вриант 4) изменение размера (ссылка на мдсн из этой темы). Но работает только с битмапами
А у вас что? Чем любое растровое изображение не битмап?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System.Drawing;
using System.Windows.Forms;
using System.IO;
 
namespace WindowsFormsApplication38
{
    class ImageButton : Button
    {
        public Image img;
        protected override void OnPaint(PaintEventArgs pevent)
        {
            pevent.Graphics.DrawImage(img, this.ClientRectangle);
        }
    }
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            ImageButton IB = new ImageButton() { Location = new Point(100, 100),Size = new Size(200,400) };
            using (FileStream fs = new FileStream("test.png", System.IO.FileMode.Open))
            IB.img = System.Drawing.Image.FromStream(fs);
            this.Controls.Add(IB);
        }
 
    }
}
Все нормально рисует и масштабирует. Только изображение придется разное использовать под разное состояние кнопки.
0
 Аватар для danyasworld
10 / 9 / 2
Регистрация: 12.04.2015
Сообщений: 238
Записей в блоге: 2
10.11.2015, 19:38  [ТС]
EvilFromHell,
Цитата Сообщение от danyasworld Посмотреть сообщение
В итоге всех моих потуг получился imaje box
Добавлено через 4 минуты
то есть добавить ужатое изображене не лишив кнопку ее внешнего вида невозможно? ведь если просто загрузить через свойства картинку - то кнопка реагирует на наведение, нажатие и focus (не знаю как сказать по-русски). Хотелось бы видеть это в итоге, но не рисуя картинки....
0
 Аватар для Павлик Морозов
138 / 137 / 42
Регистрация: 26.10.2012
Сообщений: 443
10.11.2015, 22:58
danyasworld, в winForms любой компонент рисуется. Независимо от того, есть у него картинка или нет. А все остальное это события элемента управления: MouseMove, MouseUp и т.д.
0
 Аватар для danyasworld
10 / 9 / 2
Регистрация: 12.04.2015
Сообщений: 238
Записей в блоге: 2
10.11.2015, 23:05  [ТС]
Павлик Морозов, это понятно. Только не хочется лишаться стандартного обработчика мышки....

Добавлено через 56 секунд
насколько я знаю, все эти события обрабатываются и picturebox тоже. Тогда смысл в использовании кнопки?

Добавлено через 1 минуту
извиняюсь. Нету
0
 Аватар для Павлик Морозов
138 / 137 / 42
Регистрация: 26.10.2012
Сообщений: 443
10.11.2015, 23:10
danyasworld, хотя-бы эстетическое назначение. Пользователю понятно, где картинка, а где кнопка, по которой обязательно надо щелкнуть мышкой раз 250... наборы событий и методов - кнопка все таки элемент управления, обладающий соответствующей анимацией, а PictureBox скорее для отображения графических данных. Конечно, если очень хочется, можно везде натолкать PictureBox, но боюсь юзерфрендли у интерфейса будет не то что бы стремное, но очень стремится к этому
0
 Аватар для danyasworld
10 / 9 / 2
Регистрация: 12.04.2015
Сообщений: 238
Записей в блоге: 2
10.11.2015, 23:22  [ТС]
Цитата Сообщение от Павлик Морозов Посмотреть сообщение
не то что бы стремное
нет, я все понимаю, именно из за этого и была поднята тема
Цитата Сообщение от danyasworld Посмотреть сообщение
Вариант 3) User control от button. В итоге всех моих потуг получился imaje box, только без автосайза
как видите. Код предложенный выше в результате обработки ничем не отличается от picture box. Вот, приведу пример. Слева - repaint, справа - добавил через свойства в студии. Есть разница не правда ли?
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
11.11.2015, 00:11
Хех, я думал вы ,как раз таки, сами хотите рисовать кнопку полностью. Если же нет, и вас устраивают стандартные эффекты фокуса/нажатия-масштабруйте тогда картинку, стоящую в свойстве Image:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System.Drawing;
using System.Windows.Forms;
using System.IO;
 
namespace WindowsFormsApplication42
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Button b = new Button();
            Image fullsizeimage;
            using (var stream = new FileStream("test.png", FileMode.Open)) {
                fullsizeimage = Image.FromStream(stream);
                b.Image = new Bitmap(fullsizeimage, new Size(b.ClientRectangle.Width, b.ClientRectangle.Height));
            }
            b.SizeChanged += (s, e) =>
            {
                var btn = s as Button;
                if (btn.Image == null)return;
                var pic = new Bitmap(fullsizeimage, new Size(btn.Width, btn.Height));
                btn.Image = pic;
            };
            b.Click += (s, e) => b.Size = new Size(b.Width+10,b.Height+10); //эта строчка для теста
            this.Controls.Add(b);
        }
    }
}
Добавлено через 2 минуты
Данный код создает кнопку с картинкой из файла test.png и при каждом нажатии она увеличивается, масштабируя изображение под себя.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.11.2015, 00:11
Помогаю со студенческими работами здесь

Создание значка в системном трее (Icon)
Всем привет! Сразу хочу сказать, что никогда не занимался ресурсами и писал в основном console-based приложения. Нужно загрузить свой...

Отправки формы с изображением вместо кнопки
Как сделать так чтоб отправить изображения как кнопку Submit? <form action="index.php" method="POST"> <input...

Тулбар для IE, кнопки с изображением разного размера
Доброго времени суток, у меня возникла проблема которую я безуспешно пытаюсь решить. Все наверное видели тулбар для ИЕ где на кнопках...

Создание flash анимации из файлов с изображением.
Всем здравствуйте! Задача у меня такая: есть куча файлов с графиками, хочу создать из них анимацию с кнопками play, pause и т.п. с...

Не могу поставить подпись под изображением и над изображением, и как изображение разместить в центре страницы
Вот сам код и скриншот что нужно сделать <!DOCTYPE HTML PUBLIC "-/W3C//DTD HTML 4.01 Transitional//EN" ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru