![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как на ListBox'е сделать фоновый рисунок? [D7]
rolex © (2004-07-12 06:57:00)Как на ListBox'е сделать фоновый рисунок?
DVM (2004-07-12 19:45:00) [1]
> rolex (12.07.04 18:17) [10]
Все отлично рисуется в обработчике сообщения WM_ERASEBKGND.
Для того это сообщение и существует.
Не забудь только возвращать result = 1
Sergey Kaminski (2004-07-12 18:39:00) [2]А еще заметишь странности, когда добавишь в листбокс строки ;)
Так что
1. либо используй неуниверсальный OnDrawItem
2. либо напиши наследника от TCustomListBox и почитай посты
Sergey Kaminski (2004-07-12 18:35:00) [3]А оно так и не получиться :)
Сделай после этого вот так:
ListBox1.Canvas.FillRect(ListBox1.ClientRect);
Только не нужно радоваться, ибо через некоторое время, когда листбокс перерисуется, ты заметишь, что все опять вернулось на круги своя.
И вот тогда настанет вреся подумать... и ты сам, надеюсь, разберешься, что к чему, ибо информации дали достаточно :)))
rolex (2004-07-12 18:17:00) [4]
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Canvas.Brush.Bitmap := Image1.Picture.Bitmap;
end;
Я вот так сделал - неполоучилось! При нажатии на Button1 фон остаётся темже.
Sergey Kaminski (2004-07-12 15:18:00) [5]У меня тоже получилось, вызывает опасение фраза из Delphi Help
If the image is larger than eight pixels by eight pixels, only the top left eight-by-eight region is used.
А в MSDN:
Windows 95: Creating brushes from bitmaps or DIBs larger than 8x8 pixels is not supported. If a larger bitmap is specified, only a portion of the bitmap is used.
Т.е, Microsoft уверяет, что ограничение 8x8 это для 9x, а на NT вроде как нормально. На практике у же у меня получалось и на 98 (к сожалению нет под рукой исходника, но там ничего мудрого не было). Кстати, с канвой принтера такая фигня с большим битмапом не прошла даже на NT.
DVM (2004-07-12 14:45:00) [6]
> Sergey Kaminski (12.07.04 14:40) [7]
Я пробовал - получалось для любого размера картинок.
Sergey Kaminski (2004-07-12 14:40:00) [7]Bitmap для кисти это хорошо, но там, кажется, только 8х8 пикс., хотя на NT (сам пробовал, но для другого случая) у меня почему-то получилось воспользоваться и бОльщей картинкой.
DVM (2004-07-12 14:24:00) [8]ListBox1.Canvas.Brush.Bitmap := MyBitmap; Вроде так.
но я бы предпочел [5]
Sergey Kaminski (2004-07-12 14:08:00) [9]WM_ERASEBKGND?
Sheng (2004-07-12 12:52:00) [10]в методе OnDrawItem ручкими через канвас рисуешь фон, потом на него текст (там в параметрах метода всё указано)
Sheng (2004-07-12 12:50:00) [11]только так
Snip (2004-07-12 12:49:00) [12]ListBox1.Canvas
rolex (2004-07-12 11:04:00) [13]Ну может поможет кто-нибудь?