이미지 자르기에 문제가 있습니다. 직사각형으로 이미지를 자르려고하면 자르기 영역이 이상한 값으로 설정됩니다.WPF 이미지 잘라 내기
<Grid Name="GridImage">
<Image Name="LoadedImage" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="HighQuality">
</Image>
<Canvas x:Name="ImageCanvas" ClipToBounds="True">
<Rectangle x:Name="SelectionRectangle" Stroke="LightBlue" Fill="#220000FF" Visibility="Collapsed" />
</Canvas>
</Grid>
여기에서 나는 작물 이미지 방법 :
이 var imagePosition = LoadedImage.TransformToAncestor(GridImage).Transform(new Point(0, 0));
Rect rect1 = new Rect(Math.Max(Canvas.GetLeft(SelectionRectangle) - imagePosition.X, 0), Math.Max(Canvas.GetTop(SelectionRectangle) - imagePosition.Y, 0), SelectionRectangle.Width, SelectionRectangle.Height);
var ratioX = LoadedImage.Source.Width/LoadedImage.ActualWidth;
var ratioY = LoadedImage.Source.Height/LoadedImage.ActualHeight;
Int32Rect rcFrom = new Int32Rect
{
X = (int)(rect1.X * ratioX),
Y = (int)(rect1.Y * ratioY),
Width = (int)(rect1.Width * ratioX),
Height = (int)(rect1.Height * ratioY)
};
try
{
BitmapSource bs = new CroppedBitmap((BitmapSource)LoadedImage.Source, rcFrom);
LoadedImage.Source = bs;
SetImageStretch(LoadedImage);
SetElementVisibility(Visibility.Hidden, Visibility.Visible, SelectionRectangle);
}
private void SetImageStretch(Image image)
{
if (image.Source.Width > image.ActualWidth || image.Source.Height > image.ActualHeight)
image.Stretch = Stretch.Uniform;
else image.Stretch = Stretch.None;
}
사람이 알고 있나요가 어떻게 해결하기 위해 여기에 는 XAML 코드?
Here how it looks before cropping
안정적으로 문제를 재현하는 좋은 [mcve]가 없으면 필요한 답변을 확실히 알 수 없습니다. 대체로 새로운 비트 맵을 생성해서는 안되며 대신 원래의 비트 맵이 화면에 어떻게 표시되는지를 제한하기 위해'Image' 요소의 변환 옵션에 의존해야합니다. 좋은 MCVE를 제공해 주시고 그 코드가 지금하고있는 일과 원하는 일을 _precisely_ 설명하십시오. –