Ho creato la logica che ritaglia un'immagine contenuta all'interno di un bordo che si trova all'interno di una griglia. La griglia ha molti bordi, quindi questa griglia avrà molte immagini. Il problema è che quando zoomo l'immagine la logica ingrandisce l'immagine (che va bene) ma quando uso la logica di ritaglio lo AdornerLayer
esce dal bordo come l'immagine: AdornerLayer esce da Border se si ingrandisce l'immagine WPF
Su questa immagine la foto non ha zoom, in modo che il AdornerLayer
è corretta:
il codice che sto usando per aggiungere il raccolto per l'immagine:
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;
}
}
In questo caso l'oggetto denominato FEL è l'immagine che voglio ritagliare e il Border è il suo genitore.
Come posso risolvere il problema di AdornerLayout che va all'esterno se l'immagine è ingrandita?
Puoi condividere un po 'del codice OnRender del tuo adorner per favore? (o se stai usando xaml adorners condividilo) –