> えっ? どうしても知りたい ?
しょうがないなーって,誰も教えてくれとは言ってませんが.
例えばこんなのはどうでしょう.
動作確認は,前と同じ.
えっ? さっきの書き込み書いてから考えていたんだろうって,
ほっといてください!!
ただし,このコードが,Delphi ML で質問された方の参考になるかは
分かりません.私が勝手に内容を解釈しているたげですので.
//-----------------------------------------------------------------------------
// TImageに表示している画像をビットマップとして保存
// 保存した画像は色数が8ビットの画像となる
//-----------------------------------------------------------------------------
procedure TForm1.Button3Click(Sender: TObject);
var
TmpBMP : TBitMap;
begin
TmpBMP := TBitMap.Create;
try
TmpBMP.PixelFormat := pf8bit;
TmpBMP.SetSize(Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height);
TmpBMP.Canvas.Draw(0, 0, Image1.Picture.Bitmap);
TmpBMP.SaveToFile('AAA.bmp');
finally
TmpBMP.Free;
end;
end;
TBitmap は特に指定しないかぎり,ビット深さは 32 ビットとなります.
そこで,上のコードの try の中では,
(1) 生成したビットマップのビット深さを PixelFormat で 8 ビットとする
(2) そのビットマップのサイズを TImage のビットマップと同じにする
(3) そのビットマップの Canvas に何かを描く.ここでは別のビットマップを描画
別のビットマップとは,TImage に描画されているビットマップ
(4) ビットマップを保存する
という手順になっています.
元の,生成したビットマップを 8 ビットとしています.したがって,何を描画
しても,8 ビットのビットマップは,8 ビットのビットマップのままです.
ということを利用した方法です.
|