c# - resource - AdornerLayer sale del borde si hago zoom en la imagen WPF
image wpf c# (1)
Creé la lógica que recorta una imagen que está contenida dentro de un borde que está dentro de una cuadrícula. La cuadrícula tiene muchos bordes, por lo que esta cuadrícula tendrá muchas imágenes. El problema es que cuando hago zoom en la imagen, la lógica hace zoom en la imagen (lo cual está bien), pero cuando uso la lógica de recorte, AdornerLayer
sale del borde como la imagen:
En esta imagen, la imagen no tiene zoom, por lo que AdornerLayer
es correcto:
El código que estoy usando para agregar el recorte a la imagen:
private void AddCropToElement(FrameworkElement fel, System.Drawing.Image img)
{
if (!cropElements.ContainsKey(Convert.ToString(((Image)fel).Source)))
{
if (_felCur != null)
{
RemoveCropFromCur();
}
rcInterior = new Rect(
fel.ActualWidth * 0.2,
fel.ActualHeight * 0.2,
fel.ActualWidth * 0.6,
fel.ActualHeight * 0.6);
rectMoving = false;
Rect newRect = scaleRect(rcInterior, img);
imgCropMove = img;
AdornerLayer aly = AdornerLayer.GetAdornerLayer(fel);
_clp = new CroppingAdorner(fel, rcInterior);
aly.Add(_clp);
cropElements.Add(Convert.ToString(((Image)fel).Source), fel);
imageCropped = _clp.Crop(new System.Drawing.Bitmap(img), newRect);
_clp.CropChanged += HandleCropChanged;
_felCur = fel;
}
}
En este caso, el objeto denominado fel es la imagen que quiero recortar y el borde es su padre.
¿Cómo puedo solucionar el problema del AdornerLayout que sale si la imagen se amplía?
¿Está utilizando el Window Adorner predeterminado o ha creado un AdornerDecorator personalizado alrededor de su borde en su XAML?
<AdornerDecorator>
<Border>...</Border>
</AdornerDecorator>
Además, si está aplicando un factor de zoom en su borde, puede agregar un enlace en el rectángulo de visualización de recorte para que coincida con la escala en su objeto de borde.