喫茶XRAYトップページ

[スレッド全体
]

[12538] Re2:plPrev.pas の StretchDrawBitmap でイメージを透過したい返信 削除
2019/1/18 (金) 22:08:47 Mr.XRAY
> 自力で Canvas に描画してください.

こんな感じでしょうか.

procedure TForm1.Button1Click(Sender: TObject);
var
  LFilePath : string;
  LBitmap   : TBitmap;
begin
  LFilePath := ExpandFileName('502.bmp');

  LBitmap := TBitmap.Create;

  //印刷用のコードを書く
  plPrev1.BeginDoc;
  try
    plPrev1.Canvas.Font.Height := 180;
    plPrev1.Canvas.TextOut(200, 300, '印刷プレビューの簡単なテスト');

    LBitmap.LoadFromFile(LFilePath);
    LBitmap.Transparent := True;
    plPrev1.Canvas.StretchDraw(Rect(300, 300, 1300, 1300), LBitmap);
  finally
    plPrev1.EndDoc;
    FreeAndNil(LBitmap);
  end;


  //プレビューフォームのサイズと位置を設定
  //自動生成なので,そのためのプロパティがある
  //指定しなければデフォルト値となる
  plPrev1.FormPosition := poDesktopCenter;
  plPrev1.FormWidth    := 600;
  plPrev1.FormHeight   := 450;

  //プレビュー開始
  plPrev1.ShowModal;
end;

上の図が描画しているビットマップ画像です.


[12542] Re3:plPrev.pas の StretchDrawBitmap でイメージを透過したい返信 削除
2019/1/20 (日) 21:42:53 snail
▼ Mr.XRAYさん
> > 自力で Canvas に描画してください.
>
> こんな感じでしょうか.


なんとかできました。
実は元ファイルでは TBitmap ではなく TImage を利用していました。

  WImage.Picture.Bitmap.Transparent := True;  // 背景透過。

で自分では透過させていたつもりが変更されていませんでした。

  WImage.Transparent := True;                 // 背景透過

結局親を透過モードにすることでできました。

あと作ったプログラムを実行したところ透過できたプリンターと
駄目なプリンターが存在しました。

正しく透過されたプリンター
・ブラザー MFC-J727D
・Windows10 Microsoft Print to PDF

駄目だったプリンター
・CubePDF

という結果になりました。

ありがとうございました。



[12543] Re4:plPrev.pas の StretchDrawBitmap でイメージを透過したい返信 削除
2019/1/20 (日) 22:09:04 Mr.XRAY
▼ snailさん

> あと作ったプログラムを実行したところ透過できたプリンターと
> 駄目なプリンターが存在しました。


情報ありがとうございます.
そういうのがあるんですね.
今後の研究材料としたいと思います.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82