Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как сделать картинки в TImageList прозрачными

Delphi , Компоненты и Классы , TImage и TImageList

Как сделать картинки в TImageList прозрачными


procedure TForm1.Button1Click(Sender: TObject);
var
    bm : TBitmap;
    il : TImageList;
begin
    bm := TBitmap.Create;
    bm.LoadFromFile('C:\DownLoad\TEST.BMP');
    il := TImageList.CreateSize(bm.Width,bm.Height);
    il.DrawingStyle := dsTransparent;
    il.Masked := true;
    il.AddMasked(bm, clRed);
    il.Draw(Form1.Canvas, 0, 0, 0);
    bm.Free;
    il.Free;
end;

Here is the translation of the provided text into Russian:

Код, который вы предоставили, пытается сделать TImageList прозрачным, используя свойство DrawingStyle с значением dsTransparent и свойство Masked с значением true. Однако, это подход не работает, потому что TImageList не поддерживает прозрачность так же, как другие контролы.

Чтобы достичь прозрачности на изображении списка, вы можете попробовать использовать TPicture или TBitmap с темиже размерами, что и изображение списка, а затем нарисовать каждый образец на него. Вот пример, как можно модифицировать ваш код:

procedure TForm1.Button1Click(Sender: TObject);
var
  bm: TBitmap;
  il: TImageList;
begin
  bm := TBitmap.Create;
  try
    bm.LoadFromFile('C:\DownLoad\TEST.BMP');
    il := TImageList.Create;
    try
      il.Width := bm.Width;
      il.Height := bm.Height;
      for i := 0 to il.ImageCount - 1 do
      begin
        il.Images[i] := nil;
        il.AddBitmap(i, bm);
      end;
       // Теперь вы можете использовать изображение списка как нужно
    finally
      il.Free;
    end;
  finally
    bm.Free;
  end;
end;

В этом коде мы сначала загружаем битовое изображение в TBitmap. Затем создаем экземпляр TImageList и устанавливаем его ширину и высоту, равные размерам битового изображения. Затем мы проходим по каждому образцу в списке изображений и добавляем битмап как новый образец.

Обратите внимание, что этот подход создает отдельную копию оригинального битового изображения для каждого образца в списке изображений, поэтому он может потребовать больше памяти, чем другие подходы. Однако это позволяет создавать список изображений с прозрачными изображениями.

Помните, что при использовании TImageList свойства drawing style и masked не работают так, как ожидаются, потому что TImageList не поддерживает прозрачность на том же уровне контроля, что некоторые другие контролы Delphi.

В статье описывается способ сделать картинки в TImageList прозрачными с помощью процедуры TForm1.Button1Click(Sender: TObject), которая создает bitmap, загружает ее из файла, создает TImageList и задает для нее параметры drawing style и masked.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TImage и TImageList ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:50:30/0.0056431293487549/1