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

Создание утилиты для создания прозрачного изображения или загрузки изображения и создания иконки с помощью Bgrabmp

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

В статье будет рассмотрено создание утилиты для создания прозрачного изображения или загрузки изображения и создания иконки с помощью библиотеки Bgrabmp. Мы рассмотрим два подхода к решению этой задачи: первый, предложенный пользователем Boleeman, основан на итерации по пикселям и замене цветов в пределах заданной толерантности. Второй подход, предложенный пользователем d2010, основан на использовании прозрачного цвета и изменении его в зависимости от цвета пикселя.

Подход Boleeman: Итерация по пикселям и замена цветов в пределах толерантности

Этот подход основан на итерации по каждому пикселю изображения и замене цветов, которые находятся в пределах заданной толерантности от выбранного цвета. Для этого можно использовать следующий код на Object Pascal (Delphi) с использованием библиотеки Bgrabmp:

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Bgrabmp;

type
  TForm1 = class(TForm)
    btnLoad: TButton;
    btnMakeTransparent: TButton;
    spnTolerance: TSpinEdit;
    imgPicture: TImage;
    procedure btnLoadClick(Sender: TObject);
    procedure btnMakeTransparentClick(Sender: TObject);
  private
    { Private declarations }
    FBitmap: TBitmap;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnLoadClick(Sender: TObject);
begin
  FBitmap.LoadFromFile('image.jpg');
  imgPicture.Picture.Graphic := FBitmap;
end;

procedure TForm1.btnMakeTransparentClick(Sender: TObject);
var
  X, Y: Integer;
  Pixel: TColor;
  Tolerance: Integer;
begin
  Tolerance := spnTolerance.Value;
  for X := 0 to FBitmap.Width - 1 do
    for Y := 0 to FBitmap.Height - 1 do
    begin
      Pixel := FBitmap.Canvas.Pixels[X, Y];
      if (Abs(Pixel.R - 255) < Tolerance) and (Abs(Pixel.G - 255) < Tolerance) and (Abs(Pixel.B - 255) < Tolerance) then
        FBitmap.Canvas.Pixels[X, Y] := $00FFFFFF
      else
        FBitmap.Canvas.Pixels[X, Y] := $FF000000;
    end;
  imgPicture.Picture.Graphic := FBitmap;
end;

end.

В этом коде кнопка "Загрузить изображение" загружает изображение с помощью библиотеки Bgrabmp и отображает его на изображении. Кнопка "Сделать прозрачным" итерируется по каждому пикселю изображения, проверяет, находится ли цвет пикселя в пределах заданной толерантности от белого цвета, и если да, то делает пиксель полностью прозрачным, а если нет, то делает его полностью непрозрачным.

Подход d2010: Использование прозрачного цвета и изменение его в зависимости от цвета пикселя

Этот подход основан на использовании прозрачного цвета и изменении его в зависимости от цвета пикселя. Для этого можно использовать следующий код на Object Pascal (Delphi) с использованием библиотеки Bgrabmp:

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Bgrabmp;

type
  TForm1 = class(TForm)
    btnLoad: TButton;
    btnMakeTransparent: TButton;
    imgPicture: TImage;
    procedure btnLoadClick(Sender: TObject);
    procedure btnMakeTransparentClick(Sender: TObject);
  private
    { Private declarations }
    FBitmap: TBitmap;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnLoadClick(Sender: TObject);
begin
  FBitmap.LoadFromFile('image.jpg');
  imgPicture.Picture.Graphic := FBitmap;
end;

procedure TForm1.btnMakeTransparentClick(Sender: TObject);
var
  X, Y: Integer;
  Pixel: TColor;
begin
  for X := 0 to FBitmap.Width - 1 do
    for Y := 0 to FBitmap.Height - 1 do
    begin
      Pixel := FBitmap.Canvas.Pixels[X, Y];
      if (Pixel = $FFFFFFFF) then
        FBitmap.Canvas.Pixels[X, Y] := $00FFFFFF
      else
        FBitmap.Canvas.Pixels[X, Y] := $FF000000;
    end;
  imgPicture.Picture.Graphic := FBitmap;
end;

end.

В этом коде кнопка "Загрузить изображение" загружает изображение с помощью библиотеки Bgrabmp и отображает его на изображении. Кнопка "Сделать прозрачным" итерируется по каждому пикселю изображения, проверяет, равен ли цвет пикселя полностью белому цвету, и если да, то делает пиксель полностью прозрачным, а если нет, то делает его полностью непрозрачным.

Вывод

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

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

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


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 06:17:41/0.0033299922943115/0