Cortar a imagem usando uma caixa de fotos arrastável de tamanho fixo
Eu estou trabalhando em um projeto winforms que envolve o corte de uma imagem. Meu objetivo é fazer isso usando um controle de caixa de figuras arrastável de tamanho fixo, permitindo que o usuário selecione a área que deseja preservar.
Meu problema é quando eu recorte a imagem; isto"trabalho", mas a área de cultivo compensa um pouco. Aqui está o resultado que recebo:
Para esclarecer, não estou falando sobre o zoom, isso é por design. Observe que a caixa laranja está focando principalmente no olho da tempestade, mas a imagem cortada não está.
Este é o meu código para a operação de colheita:
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 é o retângulo laranja arrastável; seu pai épbxImage (Eu re-pais na carga do formulário).
Como você pode ver, eu estou usando as coordenadas depbxSeleccion para definir o ponto de partida da área de corte, mas não está funcionando como esperado ... às vezes, até obtenho uma exceção "Sem memória".
Eu acho que isso tem a ver com a forma como a imagem carrega na caixa de imagem pai, algo sobre como a margem é tratada "sob o capô", mas nada que eu tentei corrigi-lo ... apenas muda a magnitude do deslocamento.
Pesquisando na web e SO me ajudou muito, mas para esta questão em particular, não consigo encontrar uma resposta ... por favor, sinta-se livre para apontar melhorias para o meu código, eu não tenho codificado por muito tempo e Eu sou novo em C # e .NET
Qualquer ajuda é muito apreciada. Felicidades!