Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.25;
Скачать: 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 вся ветка

Текущий архив: 2004.07.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.069 c
6-1085740049
Tr0sT
2004-05-28 14:27
2004.07.25
Отсутствие компонентов TClientSocket и TServerSocket


1-1089692376
depresnjak
2004-07-13 08:19
2004.07.25
почему изменяется буфер у процедуры blockwrite


3-1088589754
adLer
2004-06-30 14:02
2004.07.25
Delphi надо просматривать изображение сохраняемое FoxPro


1-1089797743
hgd
2004-07-14 13:35
2004.07.25
Как записать звук и представить его в виде графика?


4-1086984795
alienserg
2004-06-12 00:13
2004.07.25
Synchronize внутри DLL. Пытаюсь рисовать из треда на форме.