Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];

Вниз

Как на 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.031 c
1-1089712583
Kost
2004-07-13 13:56
2004.07.25
Модальная форма?


3-1088514199
Sonnik
2004-06-29 17:03
2004.07.25
Пользовательский интерфейс.


14-1088781511
OSokin
2004-07-02 19:18
2004.07.25
В чем измерять глюки и баги?


8-1083431693
Sur
2004-05-01 21:14
2004.07.25
TImage + GIF


8-1083920470
Dr.Alex
2004-05-07 13:01
2004.07.25
AVI to JPEG





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский