Прозрачный растр в компоненте TGraphicControl - PullRequest
0 голосов
/ 25 августа 2018

Я создал компонент на основе TGraphicControl. это прозрачно, когда я рисую линию прямо на холсте. Но когда я пытаюсь нарисовать растровое изображение на холсте, он не отображается как прозрачный. Как нарисовать прозрачное растровое изображение на холсте TGraphicControls? спасибо

unit Test;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls,Types,DB;

type
  TTest = class(TgraphicControl)
  private
    { Private declarations }
    BMP:TBitmap;
  protected
    { Protected declarations }
    Procedure Paint; Override;
  public
    { Public declarations }
    Constructor create(Aoner: Tcomponent); Override;
    Destructor Destroy; Override;
  published
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Automation', [TTest]);
end;

Constructor TTest.create(Aoner: TComponent);
begin
  Inherited Create(Aoner);
  Width:=100;
  Height:=100;
  Bmp := TBitmap.Create;
  BMp.Width:=50;
  BMP.Height:=50;
  BMP.Transparent:=true;
  BMP.TransparentColor:=BMp.Canvas.Pixels[0,0];
  BMP.Canvas.MoveTo(1,1);
  BMP.Canvas.LineTo(50,50);
End;

Procedure TTest.Paint;
Begin
  Inherited Paint;
  Canvas.MoveTo(0,0);
  Canvas.LineTo(100,100);
  Canvas.Draw(0,0,BMp);
End;

Destructor TTest.Destroy;
begin
  Inherited Destroy;
end;

1 Ответ

0 голосов
/ 25 августа 2018

При создании растрового изображения по умолчанию для всех пикселей установлено определенное значение.В моих тестах значение было $ FFFFFFFF.Когда вы вызываете Pixel [0,0], он считывает цвет в этой позиции и преобразует его в RGB.В этом случае $ FFFFFF.Так что это ваш TransparentColor.Когда изображение отображается, оно сравнивает значение каждого пикселя с TransparentColor.Те, которые соответствуют, прозрачны.Но $ FFFFFFFF не соответствует $ FFFFFF, и поэтому эти пиксели не являются прозрачными.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...