複数Imageの印刷

解決


Sak  2010-04-09 23:31:37  No: 38249

現在、Panel上に複数のImageがランダムに配置されています。
そして、PaintBox上にLineToで描画されています。
それらを1つの画像として保存したいと思っております。
その際、どういった方法を取ればいいのでしょうか?
教えて下さい。
よろしくお願いいたします。

[WinXP+Delphi5]


KHE00221  2010-04-10 03:29:11  No: 38250

http://khe00221.image.coocan.jp/index.php?FrontPage%2FTips%2F%A5%AF%A5%EA%A5%C3%A5%D7%A5%DC%A1%BC%A5%C9%2F%A5%B9%A5%AF%A5%EA%A1%BC%A5%F3%A5%B7%A5%E7%A5%C3%A5%C8%CA%DD%C2%B8

自分自身のスクリーンショットが取りたいのかな???


Sak  2010-04-13 19:57:03  No: 38251

返信遅くなりすいません。説明不足ですいませんでした。
スクリーンショットではなく、
Panel(幅500高さ500)上にPaintBox(幅500高さ3000)が配置されています。
そしてPanel上に任意の場所に配置されたImageは隠れた部分(スクロールバーを動かせばもちろん見えますが)にもあり、それら全て画像+PaintBoxに描画されたものを1つの画像として保存したいと思っております。

よろしくお願いいたします。


TS  2010-04-14 04:49:17  No: 38252

ちょっと違いますが、過去に下記の書き込みがあります。
参考に。
checkboxとradiobuttonの印刷について
https://www.petitmonte.com/bbs/answers?question_id=6524

>それら全て画像+PaintBoxに描画されたもの
と言う事はあり得ない画像を保存したいと言う事なので無理だと思います。
できるとしたら1つの画像の中にそれぞれをもう一度独自に描画する事
だと思います。


KHE00221  2010-04-14 08:46:36  No: 38253

Panel に スクロールバーはないのでおそらく ScrollBox だと仮定して

procedure TForm1.Button1Click(Sender: TObject);
var
    Bitmap: TBitmap;
    X,Y,I,VP,HP: Integer;
    SourceRect,DestRect: TRect;
begin
    Bitmap := TBitmap.Create;
    Bitmap.Canvas.Brush.Color := ScrollBox1.Color;
    Bitmap.SetSize(PaintBox1.Width,PaintBox1.Height);
    VP := ScrollBox1.VertScrollBar.Position;
    HP := ScrollBox1.HorzScrollBar.Position;

    //PaintBox to Bitmap
    DestRect := Rect(HP,VP,HP+ScrollBox1.Width,VP+ScrollBox1.Height);
    SourceRect := Rect(HP,VP,HP+ScrollBox1.Width,VP+ScrollBox1.Height);
    Bitmap.Canvas.CopyRect(SourceRect,PaintBox1.Canvas,DestRect);

    //Image to Bitmap
    for I:=0 to Form1.ComponentCount -1 do
    begin
      if Form1.Components[I] is TImage then
      begin
        if TImage(Form1.Components[I]).Parent = ScrollBox1 then
        begin
          X := TImage(Form1.Components[I]).Left;
          Y := TImage(Form1.Components[I]).Top;
          Bitmap.Canvas.Draw(X+HP,Y+VP,TImage(Form1.Components[I]).Picture.Graphic);
        end;
      end;
    end;
    Bitmap.SaveToFile('C:\AAA.BMP');
    Bitmap.Free;
end;


Sak  2010-04-14 23:21:13  No: 38254

TS さん、KHE00221 さんありがとうございます。
コードまでわざわざ書いてくださって。
やりたいことそのものでした。
ホント感謝です。ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加