2013-10-08 7 views
18

격자 안에있는 테두리 안에 들어있는 이미지를 자르는 논리를 만들었습니다. 그리드에는 많은 테두리가있어서이 그리드에는 많은 그림이 있습니다. 문제는 그림을 확대했을 때 로직이 그림을 확대 (괜찮 았음)했으나 자르기 로직을 ​​사용할 때 AdornerLayer은 그림과 같이 테두리 외부로 이동합니다 : Image zoomed with crop selector그림을 확대하면 AdornerLayer가 테두리 밖으로 나옵니다. WPF

이 이미지에는 그림이 없습니다. 줌, 그래서 AdornerLayer가 정확한지 : enter image description here

나는 이미지에 작물을 추가 사용하고 코드 : 타락한라는 이름의 객체가 내가 자르고 자하는 그림이다이 경우

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; 
    } 
} 

국경은 그의 부모입니다.

이미지가 확대 된 경우 외부로 나가는 AdornerLayout 문제를 어떻게 해결할 수 있습니까?

+0

약간의 adorner OnRender 코드를 공유해 주시겠습니까? (또는 xaml 꾸미기를 사용하는 경우) –

답변

1

기본 Window Adorner를 사용하고 있습니까? 아니면 XAML에서 테두리 주위에 사용자 지정 AdornerDecorator를 만들었습니까? 당신이 당신의 국경에 줌 배율을 적용하는 경우

<AdornerDecorator> 
    <Border>...</Border> 
</AdornerDecorator> 

는 또한, 당신은 당신의 테두리 개체의 스케일에 맞도록하여 자르기 표시 사각형에 바인딩을 추가 할 수 있습니다.