掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
2つのimageを合成して1つのfileに保存するには? (ID:18325)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>この全体を1つのfileに保存したいのですが、 2つのTImageを別々として一つのファイルに保存する例です. 趣旨にかなうかは不明です. Button1Click,Button2Clickと,Button3Click,Button4Clickはペアです. 以下の例では,同じForm上に読出しています.いろいろ工夫して下さい. Imageまるごと保存しておけば,(TImageを配置していない)他のForm上 でも読出せます. //===================================================================== // 保存先のパス名 // AFilePathはグローバル変数(private部等で定義しておく) //===================================================================== procedure TForm1.FormShow(Sender: TObject); begin AFilePath:=ExtractFilePath(Application.ExeName)+'Images.dat'; end; //===================================================================== // Imageごと保存する例 //===================================================================== procedure TForm1.Button1Click(Sender: TObject); var AStream : TFileStream; begin AStream:=TFileStream.Create(AFilePath,fmCreate or fmOpenReadWrite); try AStream.WriteComponent(Image1); AStream.WriteComponent(Image2); finally AStream.Free; end; end; //===================================================================== // Button1ClickでImageごと保存したImageを取出して表示 //===================================================================== procedure TForm1.Button2Click(Sender: TObject); var AStream : TFileStream; begin if not FileExists(AFilePath) then exit; //元通りに読出されることを確認するために位置を変更しておく Image1.Left:=10; Image2.Left:=10; Update; Sleep(2000); AStream:=TFileStream.Create(AFilePath,fmOpenRead); AStream.Position:=0; try if AStream.Size>0 then begin AStream.ReadComponent(Image1); AStream.ReadComponent(Image2); end; finally AStream.Free; end; end; //===================================================================== // Pictureだけを保存する //===================================================================== procedure TForm1.Button3Click(Sender: TObject); var AStream : TFileStream; begin AStream:=TFileStream.Create(AFilePath,fmCreate or fmOpenReadWrite); try Image1.Picture.Graphic.SaveToStream(AStream); Image2.Picture.Graphic.SaveToStream(AStream); finally AStream.Free; end; end; //===================================================================== // Button3Clickで保存したPictureのBitmapを読出す // Pictureそのものは不可.TPicture.LoadFromStreamが無いのはストリーム // だけではどんなグラフィックスフォーマットか簡単に判断できないため //===================================================================== procedure TForm1.Button4Click(Sender: TObject); var AStream : TFileStream; APicture : TPicture; begin if not FileExists(AFilePath) then exit; //読込まれる事を確認するために画像を一旦消去 //Image1.Picture:=nilも同じ Image1.Picture.Bitmap:=nil; Image2.Picture.Bitmap:=nil; Update; Sleep(2000); AStream:=TFileStream.Create(AFilePath,fmOpenRead); AStream.Position:=0; APicture :=TPicture.Create; try if AStream.Size>0 then begin Image1.Picture.Bitmap.LoadFromStream(AStream); Image2.Picture.Bitmap.LoadFromStream(AStream); end; finally AStream.Free; APicture.Free; end; end; end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.