TImageのソースにJpeg画像を設定し、マウスで描画(クリックした2点間に直線か矩形を描画)させたいのですが、エラーになります。
元画像がBMPの場合は問題ないようですが、Jpegでは不可能なんでしょうか。
WindowsXP+Delphi5 Pro
以下のような感じでBMPに変換するのはどうですか?
var
Jpg: TJPEGImage;
JpgFile: string;
begin
Jpg := TJPEGImage.Create;
try
Jpg.LoadFromFile(JpgFile);
Image1.Picture.Bitmap.Assign(Jpg);
finally
Jpg.Free;
end;
end;
manbonさん、ありがとうございました。
つまり、jpegのままでは描画はできないと..
わかりました。
直線(矩形)を書いたあと、書いたものも含めて保存する必要がないなら
TImageの上にTPaintBoxを重ねて貼りつけて、TPaintBoxに描画するとか。
>jpegのままでは描画はできない
この部分の「jpegのままでは描画」の意味も分からないです。
jpegのままでは、そもそも表示することもできないです。
TImage では、内部的にビットマップ相当に変換して表示してるので、
明示的に変換すると TCanvas が使えて線が描けるわけです。
jpeg かどうかは結果を保存するときに指定するファイルフォーマットであって
ウィンドウズではどんな形式の画像でもユーザが描けるのはビットマップだけです。
放置になってしまいまして、済みませんでした。よく調べたら過去に童謡の質問があったようなのですが、「プロジェクト***がEInvalidOperationクラスの例外を生成しました。ビットマップを持っている時のみイメージの変更が可能です。」というエラーになるのです。
全く同じ処理でソースをBMPファイルにした時は問題ありませんが、ソースをjpegファイルにした時のみ発生します。
ツイート | ![]() |