Вниз
Скачать: CL | DM;

Как на ListBox е сделать фоновый рисунок?   Найти похожие ветки 

← →
rolex   (2004-07-12 06:57) [0]

Как на ListBox"е сделать фоновый рисунок?


← →
rolex   (2004-07-12 11:04) [1]

Ну может поможет кто-нибудь?


← →
Snip ©   (2004-07-12 12:49) [2]

ListBox1.Canvas


← →
Sheng ©   (2004-07-12 12:50) [3]

только так


← →
Sheng ©   (2004-07-12 12:52) [4]

в методе OnDrawItem ручкими через канвас рисуешь фон, потом на него текст (там в параметрах метода всё указано)


← →
Sergey Kaminski   (2004-07-12 14:08) [5]

WM_ERASEBKGND?


← →
DVM ©   (2004-07-12 14:24) [6]

ListBox1.Canvas.Brush.Bitmap := MyBitmap; Вроде так.
но я бы предпочел [5]


← →
Sergey Kaminski   (2004-07-12 14:40) [7]

Bitmap для кисти это хорошо, но там, кажется, только 8х8 пикс., хотя на NT (сам пробовал, но для другого случая) у меня почему-то получилось воспользоваться и бОльщей картинкой.


← →
DVM ©   (2004-07-12 14:45) [8]


> Sergey Kaminski   (12.07.04 14:40) [7]

Я пробовал - получалось для любого размера картинок.


← →
Sergey Kaminski   (2004-07-12 15:18) [9]

У меня тоже получилось, вызывает опасение фраза из 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.


← →
rolex   (2004-07-12 18:17) [10]

procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Canvas.Brush.Bitmap := Image1.Picture.Bitmap;
end;

Я вот так сделал - неполоучилось! При нажатии на Button1 фон остаётся темже.


← →
Sergey Kaminski   (2004-07-12 18:35) [11]

А оно так и не получиться :)

Сделай после этого вот так:

 ListBox1.Canvas.FillRect(ListBox1.ClientRect);


Только не нужно радоваться, ибо через некоторое время, когда листбокс перерисуется, ты заметишь, что все опять вернулось на круги своя.
И вот тогда настанет вреся подумать... и ты сам, надеюсь, разберешься, что к чему, ибо информации дали достаточно :)))


← →
Sergey Kaminski   (2004-07-12 18:39) [12]

А еще заметишь странности, когда добавишь в листбокс строки ;)

Так что
1. либо используй неуниверсальный OnDrawItem
2. либо напиши наследника от TCustomListBox и почитай посты


← →
DVM ©   (2004-07-12 19:45) [13]


> rolex   (12.07.04 18:17) [10]

Все отлично рисуется в обработчике сообщения WM_ERASEBKGND.
Для того это сообщение и существует.
Не забудь только возвращать result = 1



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.033 c
14-1088926731
Dan
2004-07-04 11:38
2004.07.25
Как заставить Delphi инсталлиться только для одного юзера


1-1089638173
Alkmas
2004-07-12 17:16
2004.07.25
Как узнать о состоянии процесса ?


14-1088868473
Baron
2004-07-03 19:27
2004.07.25
Есть здесь кто имел проблемы с законом?


9-1080627452
Goida
2004-03-30 10:17
2004.07.25
Пересечение луча и "какой-то" фигуры...


14-1088658968
Kerk
2004-07-01 09:16
2004.07.25
Вырезки из работ американских студентов




   Наверх