現在、Panel上に複数のImageがランダムに配置されています。
そして、PaintBox上にLineToで描画されています。
それらを1つの画像として保存したいと思っております。
その際、どういった方法を取ればいいのでしょうか?
教えて下さい。
よろしくお願いいたします。
[WinXP+Delphi5]
自分自身のスクリーンショットが取りたいのかな???
返信遅くなりすいません。説明不足ですいませんでした。
スクリーンショットではなく、
Panel(幅500高さ500)上にPaintBox(幅500高さ3000)が配置されています。
そしてPanel上に任意の場所に配置されたImageは隠れた部分(スクロールバーを動かせばもちろん見えますが)にもあり、それら全て画像+PaintBoxに描画されたものを1つの画像として保存したいと思っております。
よろしくお願いいたします。
ちょっと違いますが、過去に下記の書き込みがあります。
参考に。
checkboxとradiobuttonの印刷について
https://www.petitmonte.com/bbs/answers?question_id=6524
>それら全て画像+PaintBoxに描画されたもの
と言う事はあり得ない画像を保存したいと言う事なので無理だと思います。
できるとしたら1つの画像の中にそれぞれをもう一度独自に描画する事
だと思います。
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;
TS さん、KHE00221 さんありがとうございます。
コードまでわざわざ書いてくださって。
やりたいことそのものでした。
ホント感謝です。ありがとうございました。
ツイート | ![]() |