こんにちは。
現在、サイズ 32x32 の画像を表示するコントロールを作成しているのですが、背景が透過できずに困っています。
画像の縁が消去できず、矩形領域全体に描画されてしまうのです。
私は Paint メソッドを次のようにコーディングしたのですが、背景が透過されるような方法があれば、どなかたご教授いただければ幸いです。
procedure TCharacter.Paint;
var
Dest, Source: TRect;
begin
inherited;
Dest:= Rect(0, 0, 31, 31);
Source:= Rect(0, 0, 31, 31);
if FFace <> nil then begin
Canvas.CopyRect(Dest, FFace.Canvas, Source);
end;
Width := chWidth;
Height:= chHeight;
end;
//
ちなみに FFace の中に、描画すべき画像を保持しています。FFace は Bitmap オブジェクトです。
よろしくお願いいたします。
ちなみに、chWidth = 32(const.), chHeight = 32(const.) です。
背景透過は CopyRect() では効きません。
一度ビットマップ(32x32) に写し取って、背景色を設定してから Canvas.Draw()
で描画するといいです。
ありがとうございます!FFace の Transparent プロパティを真にして、Canvas.Draw で描画したところ、縁を透過することができました。
ただ、コンポーネント自体の背景は透過されないみたいです(clBtnFace で塗りつぶされる)。ここはどのようにして透過すればよろしいでしょうか?
また、アルファ値の調整したいのですが、可能でしょうか?
ツイート | ![]() |