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

Использование Skia для загрузки SVG-файла в TBitmap в 32-битном приложении VCL Delphi 12.1 на Windows 11 с сохранением прозрачности

Delphi , Графика и Игры , Bitmap

В этой статье мы рассмотрим, как использовать библиотеку Skia для загрузки файлов SVG в объект TBitmap в 32-битном приложении VCL Delphi 12.1 на Windows 11 с сохранением прозрачности.

Скорость и производительность Skia делают его отличным выбором для работы с графикой в современных приложениях. В последних версиях Delphi, начиная с версии 12, Skia уже включен, что облегчает работу с графическими данными.

Для загрузки файла SVG в TBitmap с сохранением прозрачности можно воспользоваться классом SkiaDraw, который является частью библиотеки Skia. Однако простое использование этого класса может привести к ошибке "Invalid Bitmap". Чтобы избежать этой проблемы, необходимо правильно подготовить объект TBitmap перед использованием SkiaDraw.

Ниже представлен пример кода, демонстрирующий правильную подготовку объекта TBitmap и загрузку файла SVG с сохранением прозрачности:

bmp := TBitmap.Create;

// Устанавливаем размер битмапа в соответствии с размерами изображения
bmp.Width := 100;
bmp.Height := 100;

// Устанавливаем формат пикселей на 32-битный для поддержки прозрачности
bmp.PixelFormat := pf32bit;

// Очищаем битмап с помощью прозрачного цвета
bmp.Canvas.Brush.Color := clNone;
bmp.Canvas.FillRect(Rect(0, 0, bmp.Width, bmp.Height));

// Если список изображений поддерживает прозрачность, прозрачные части изображения должны оставаться прозрачными
bmp.Transparent := True;

try
  // Используем SkiaDraw для загрузки файла SVG в битмап
  bmp.SkiaDraw(
    procedure(const ACanvas: System.Skia.ISKCanvas)
    var
      LSvgBrush: Vcl.Skia.TSkSvgBrush;
    begin
      LSvgBrush := Vcl.Skia.TSkSvgBrush.Create;
      try
        // Загружаем файл SVG в объект SkSvgBrush
        LSvgBrush.Source := TFile.ReadAllText(ThisTarget.Path);

        // Отображаем файл SVG на канвасе с помощью Skia
        LSvgBrush.Render(ACanvas, System.Types.RectF(0, 0, 100.0, 100.0), 1);
      finally
        LSvgBrush.Free;
      end;
    end);

  // Выводим битмап на форму или другой элемент управления
  Image1.Picture.Graphic := bmp;

finally
  bmp.Free;
end;

В этом примере мы создаем объект TBitmap и устанавливаем его размеры, формат пикселей и прозрачный фон. Затем мы используем SkiaDraw для загрузки файла SVG в битмап с помощью объекта SkSvgBrush. После загрузки файла SVG мы отображаем его на канвасе с помощью метода Render. finally блок гарантирует, что объект TBitmap будет правильно освобожден после использования.

Примечание: В данном примере предполагается, что файл SVG находится в той же директории, что и само приложение. Если файл расположен в другом месте, необходимо указать полный путь к файлу при чтении его содержимого с помощью TFile.ReadAllText.

В заключение, использование Skia для загрузки файлов SVG в TBitmap в 32-битном приложении VCL Delphi 12.1 на Windows 11 с сохранением прозрачности является простым и эффективным способом работы с графическими данными. Правильная подготовка объекта TBitmap перед использованием SkiaDraw гарантирует корректную работу кода и отсутствие ошибок, таких как "Invalid Bitmap".

Создано по материалам из источника по ссылке.

В этой статье рассматривается использование библиотеки Skia для загрузки файлов SVG в объект TBitmap в 32-битном приложении VCL Delphi 12.1 на Windows 11 с сохранением прозрачности.


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

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




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


:: Главная :: Bitmap ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 12:36:23/0.0048549175262451/1