画像のトリミングを含む winforms プロジェクトに取り組んでいます。私の目標は、固定サイズのドラッグ可能なピクチャ ボックス コントロールを使用してこれを行い、ユーザーが保存したい領域を選択できるようにすることです。
私の問題は、画像をトリミングするときです。「動作」しますが、トリミング領域が少しずれます。これが私が得る結果です:
明確にするために、ズームについて話しているのではなく、それは設計ごとです。オレンジ色のボックスはほとんどが嵐の目に焦点を合わせていますが、トリミングされた画像はそうではありません。
これはトリミング操作の私のコードです:
private void tsbRecortar_Click(object sender, EventArgs e)
{
Rectangle recorte = new Rectangle(pbxSeleccion.Location.X, pbxSeleccion.Location.Y, pbxSeleccion.Width, pbxSeleccion.Height);
foto = recortarImagen(foto, recorte);
pbxImagen.Image = foto;
}
private Image recortarImagen(Image imagen, Rectangle recuadro)
{
try
{
Bitmap bitmap = new Bitmap(imagen);
Bitmap cropedBitmap = bitmap.Clone(recuadro, bitmap.PixelFormat);
return (Image)(cropedBitmap);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error");
return null;
}
}
pbxSeleccionは、ドラッグ可能なオレンジ色の四角形です。その親はpbxImage です(フォームの読み込み時に再親化します)。
ご覧のとおり、トリミング領域の開始点を定義するためにpbxSeleccionの座標を使用していますが、期待どおりに機能していません... 時々、「メモリ不足」の例外が発生することさえあります。
これは、親のピクチャボックスに画像がどのように読み込まれるか、「ボンネットの下で」マージンがどのように処理されるか、何かに関係していると思いますが、修正しようとしたことはありません...オフセットの大きさを変更するだけです。
Web と SO を検索することは私を大いに助けてくれましたが、この特定の問題については、答えが見つからないようです...コードの改善点を自由に指摘してください。私は長い間コーディングしていません。 C# と .NET は初めてです
どんな助けでも大歓迎です。乾杯!