Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ListBox BackgroundImage C#

16K
16 февраля 2007 года
polo_vova
7 / / 31.05.2006
Привет всем.
Народ, посоветуйте как в С# на background ListBox-а засунуть рисунок?
Еще интересно как ListBox сделать прозрачным и как убрать вертикальный скрол.

Спасибо.
273
19 февраля 2007 года
3A3-968M
1.2K / / 22.12.2005
Цитата: polo_vova
Привет всем.
Народ, посоветуйте как в С# на background ListBox-а засунуть рисунок?
Еще интересно как ListBox сделать прозрачным и как убрать вертикальный скрол.

Спасибо.


Рисунок просто так не засунешь в ListBox на background. Но выход есть, можно получить объект Image от рисунка и при помощи GDI и объекта Graphics нарисовать рисунок на ListBox. Получить доступ к поверхности рисования этого контрола можно в событии Paint. Если слишком сложно - обратись к сторонним продуктам.

16K
19 февраля 2007 года
polo_vova
7 / / 31.05.2006
Спасибо за ответ :)
Я в отнаследувался от ListBox и в событии OnPaint рисую background, а в событии OnDrawItem рисую елементы с иконочками. Но получается такая вещь что событие OnPaint происходит позже чем OnDrawItem, и background рисуется сверху по елементах и соответственно елементов не видно :)...как сделать на оборот? Спасибо.
263
19 февраля 2007 года
koltaviy
816 / / 16.12.2004
Цитата: polo_vova
Спасибо за ответ :)
Я в отнаследувался от ListBox и в событии OnPaint рисую background, а в событии OnDrawItem рисую елементы с иконочками. Но получается такая вещь что событие OnPaint происходит позже чем OnDrawItem, и background рисуется сверху по елементах и соответственно елементов не видно :)...как сделать на оборот? Спасибо.


ИМХО, в событии OnDrawItem отрисовывай сначала фон, а потом уже элементы!!

16K
19 февраля 2007 года
polo_vova
7 / / 31.05.2006
Можна в событии OnDrawItem отрисовывать сначала фон....но тогда при передвижении по элементах такое "слайдшоу" начинается... :) Что то подвис я с этой проблемкой :( ...В Delphi и QT с этим попроще...но надо C#.
Народ, хелп, буду благодарен за любые предложения :)
273
21 февраля 2007 года
3A3-968M
1.2K / / 22.12.2005
Цитата: polo_vova
Можна в событии OnDrawItem отрисовывать сначала фон....но тогда при передвижении по элементах такое "слайдшоу" начинается... :) Что то подвис я с этой проблемкой :( ...В Delphi и QT с этим попроще...но надо C#.
Народ, хелп, буду благодарен за любые предложения :)


Перенеси перерисовку фона в событие Paint, в OnDrawItem оставь перерисовку только элементов списке. Теперь в Paint добавляй перерисовку элементов после перерисовки фона.

273
21 февраля 2007 года
3A3-968M
1.2K / / 22.12.2005
Можно ещё сделать так: создать свой класс, производный от ListBox. Т.к. ЛистБокс в свою очередь производный от Control, то он обладает свойством [SIZE=2]BackgroundImage. Вот в конструкторе и запиши своё изображение в это свойство.
[/SIZE]
16K
21 февраля 2007 года
polo_vova
7 / / 31.05.2006
Ситуация такая:
1.Если в OnPaint рисовать сначала фон, а потом элементы то тормоза и слайдшоу ужасные, ничего не видно кроме сплошного моргания.
2. Я и сделал свой клас, производный от ListBox, если в конструкторе прописать свойство фона, то реакции ноль. Просто ListBox наследуется от ListControl, а ListControl уже от Control.
Короче тупик...начал писаль свой колтрол...но добивает меня Color.Transparent :)
Спасибо.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог