Форум: "Основная";
Текущий архив: 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.036 c