こんにちは。
私は、ユーザーがビットマップをロードしたTImageをキャンバス上にドラッグアンドドロップできる描画プログラムに取り組んでいます。(RAD StudioXE2のFiremonkeyHDアプリケーションの場合)ユーザーは、画像を保存する前に、xとyのスケールと回転を変更できます。すべてのTImageはリストに保持され、このリストは次の簡単な手順を使用して基になるキャンバスに書き込まれます。
for i := 0 to DroppedList.Count - 1 do
begin
AImage := DroppedList[i];
SourceRect.Left := 0;
SourceRect.Right := AImage.Bitmap.Width;
SourceRect.Top := 0;
Sourcerect.Bottom := AImage.Bitmap.Height;
TargetRect.Left := AImage.Position.X;
TargetRect.Right := AImage.Position.X + AImage.Bitmap.Width;
TargetRect.Top := AImage.Position.Y;
TargetRect.Bottom := AImage.Position.Y + AImage.Bitmap.Height;
with FImage.Bitmap do
begin
Canvas.BeginScene;
Canvas.DrawBitmap(AImage.Bitmap, SourceRect, TargetRect, 1, True);
Canvas.EndScene;
BitmapChanged
end;
end;
FImage.Bitmap.SaveToFile('test.bmp');
これに伴う問題は、ウィンドウに表示されている画像の縮尺と回転への変換がDrawBitmapによって考慮されず、保存時に失われることです。背景に描画する前に、ビットマップに変換を適用する方法を探しています。私はこれに関する情報を見つけることができなかったので、私はここの誰かが助けてくれることを望んでいました。
ありがとう、ダニエル