5

透明な PNG 画像をレイヤーとして ImgView32 (graphics32 ライブラリから) に追加できるようにする必要があります。これをどのように達成できるか知っている人はいますか?

基本的に、任意の画像をレイヤーとして Image32 に追加できますが、すべての画像 (本来透明であっても) の背景は白です。この問題を回避する必要があります。誰にもアイデアはありますか?

これは、画像をレイヤーとして追加する方法です。

var
  B: TBitmapLayer;
  P: TPoint;
  W, H: Single;
const
  MasterAlpha: SmallInt = 100;
begin
  with OpenPictureDialog do
    if Execute then
    begin
      B := TBitmapLayer.Create(ImgView321.Layers);
      with B do
      try
        Bitmap.LoadFromFile(FileName);
        Bitmap.DrawMode := dmTransparent;
        with ImgView321.GetViewportRect do
          P := ImgView321.ControlToBitmap(GR32.Point((Right + Left) div 2, (Top + Bottom) div 2));
        W := Bitmap.Width * 0.5;
        H := Bitmap.Height * 0.5;

        with ImgView321.Bitmap do
          Location := GR32.FloatRect(P.X - W, P.Y - H, P.X + W, P.Y + H);

        Scaled := True;
        B.Bitmap.CombineMode := cmBlend;
        B.Bitmap.DrawMode := dmTransparent;
        OnMouseDown := LayerMouseDown;
        OnKeyUp :=LayerKeyUp;
      except
        Free;
        raise;
      end;
      Selection := B;
    end;
end;

したがって、 Bitmap.DrawMode := dmTransparent;を設定しても問題ないようです。それは何もしません。uses に PNGImage を追加しても、png 画像を選択して画像に追加できるようになったこと以外は何も変わりません。

ですから、私が間違っていることと、これを解決するにはどうすればよいか教えてください。

ありがとうございました

編集

このリンクhttp://graphics32.org/wiki/FAQ/ImageFormatRelatedで説明されているように、PNGをBitmap32にロードすることを認識していますが、明らかに「TBitmap32をTBitmapLayerに割り当てることはできません」ので、透明なPNGをBitmap32にロードした後は問題ありません(理論的には)レイヤーにどのように割り当てるのですか?

4

0 に答える 0