img
00:00
imgDRKB online - Как вставить растровое изображение в компонент ListBox?
imgimgimg
  Общие вопросы
  Delphi IDE, компиллятор, отладчик, редактор
  Язык программирования Дельфи
  VCL
  Системные функции и WinAPI
  Базы данных
  Работа с файловой системой
  Репортинг, работа с принтером
  Работа с сетью, интернетом, протоколами
  Работа с графикой и мультимедиа
  GDI+ — графическое ядро нового поколения
  Работа со звуком
  Разные вопросы, связанные с графикой
  Манипуляции с текстом
  Работа с цветами и палитрами
  Работа c Canvas
  Работа с BitMap
  Работа с Jpeg
  Работа с GIF
  Работа с видео и анимацией
  Работа с метафайлами, векторыми изображениями
  Рисование в разных местах, захват изображения
  Графические фильтры и эффекты
  Изменение размеров, Thumbnails, деформации, выделение части изображения
  Вращение, зеркальные преобразования
  Яркость, контраст и гамма
  Размытие и шумы, резкозть
  Работа с цветами, каналы и глубина цвета
  Dithering
  Прозрачность
  Различные эффекты
  Черчение
  DerectX, OpenGL
  GDI - графика в Delphi
  Математика, алгоритмы
  Форматы файлов, данных. Конвертация форматов
  ActiveX, COM, DCOM, MIDAS, CORBA, интерфейсы, OLE, DDE
  Разработка приложений
  Kylix
  Delphi.Net
  Развлечения
  
  [drkb=3583] Комментариев: 0 
Как вставить растровое изображение в компонент ListBox?

Для этого необходимо установить в инспекторе объектов поле Style в lbOwnerDrawFixed, при фиксированной высоте строки, или в lbOwnerDrawVariable, при переменной, и установить собственный обработчик события для OnDrawItem. В этом обработчике и надо рисовать растровое изображение.
Пример:
Рисуются изображения размером 32*16 (размер стандартного глифа для Delphi). Очень полезно при поиске нужного изображения для кнопок!
Установить в инспекторе объектов для ListBox поле ItemHeight = 19, а поле Color = clBtnFace.


delphi
{ Загрузить список файлов в ListBox1 при нажатии на кнопку Load (например)}
procedure TForm1.bLoadClick(Sender: TObject);
VAR S : String;
begin
  ListBox1.Clear; {чистим список}
  S := '*.bmp'#0; {задаем шаблон}
  ListBox1.Perform(LB_DIR, DDL_ReadWrite, Longint(@S[1])); {заполняем список}
end;
          ............

{Отобразить изображения и имена файлов в ListBox}
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
           Rect: TRect; State: DrawState);
VAR
  Bitmap : TBitmap;
  Offset : Integer;
  BMPRect: TRect;
begin
  WITH (Control AS TListBox).Canvas DO BEGIN
    FillRect(Rect);
    Bitmap := TBitmap.Create;
    Bitmap.LoadFromFile(ListBox1.Items[Index]);
    Offset := 0;
    IF Bitmap <> NIL THEN BEGIN
      BMPRect := Bounds(Rect.Left+2, Rect.Top+2,
                        (Rect.Bottom-Rect.Top-2)*2, Rect.Bottom-Rect.Top-2);
      {StretchDraw(BMPRect, Bitmap); Можно просто нарисовать, но лучше сначала убрать фон}
      BrushCopy(BMPRect,Bitmap, Bounds(0, 0, Bitmap.Width, Bitmap.Height),
                Bitmap.Canvas.Pixels[0, Bitmap.Height-1]);
      Offset := (Rect.Bottom-Rect.Top+1)*2;
    END;
    TextOut(Rect.Left+Offset, Rect.Top, ListBox1.Items[Index]);
    Bitmap.Free;
   END;
end;




Данный пример работает медленно, но оптимизация, для ускорения, вызвала бы трудность в понимании общего принципа его работы.

Зайцев О.В.
Владимиров А.М.

@Drkb::03767
Взято из http://forum.sources.ru
Количество статей: 4366
 
Вход
Имя:
Пароль:
Запомнить
Регистрация Забыли пароль?
Мини-чат :)
Необходима регистрация
Архив мини-чата
12-12-2019 19:32
Prokok
Всем привет!

12-12-2019 18:12
Programmer
admin создай беседу в вк про десксофт
09-12-2019 15:21
spex
ку
07-12-2019 23:51
admin
Это хоумпейдж, для души, с чего бы ему умирать? К тому же на хостинге другие сервисы подняты, для себя.
07-12-2019 22:49
Oleg4260
Мда... тут 2 страницы пролистаешь и уже на год раньше дата сообщения
походу сайт мёртвый. странно, что он до сих пор хостится, и даже админ вчера онлайн утром был.
07-12-2019 22:48
Oleg4260
сейчас
07-12-2019 22:48
Oleg4260
2019
07-12-2019 22:45
Oleg4260
Ого, это сайт 2007 года!
07-12-2019 22:43
Oleg4260
Только тут письмо на почту долго приходит
07-12-2019 22:43
Oleg4260
А ну регистрируйтесь, быстро! Мне одному скучно.
Статистика
 СегодняВсего
Посетителей5482139342
Запросов7685325458973
Online
Пользователей0
Гостей25
imgimgimgimg
 
img
     00:00