1
이미지 표시에 PictureBox
을 사용하고 있습니다. 해상도가 4000 * 4000까지입니다. 내 디스플레이 영역이 훨씬 작기 때문에 가로 세로 비를 유지하려면 pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
으로 이미지를 표시해야합니다. 그 후 이미지가 화면 중간에 있습니다.C에서 이미지 자르기
이미지 컨트롤의 왼쪽과 실제 이미지 왼쪽의 REAL 사이의 거리를 찾으려면 어떻게해야합니까? (아래 이미지 참조).
해결책이 있습니까?
btw. 화면의 왼쪽에 이미지를 표시하는 것도 트릭을 할 것입니다.
var imageHeight = pictureBox1.Image.Height;
var imageWidth = pictureBox1.Image.Width;
var userSelection = rect.Rect;
var display = pictureBox1.DisplayRectangle;
var xFactor = (float)userSelection.Width/display.Width;
var yFactor = (float)userSelection.Height/display.Height;
var realCropSizeWidth = xFactor * imageWidth;
var realCropSizeHight = yFactor * imageHeight;
var realCropX = imageWidth/display.Width;
realCropX *= userSelection.X;
var realCropY = imageHeight/display.Height;
realCropY *= userSelection.Y;
var realCropRectangle = new Rectangle(realCropX, realCropY, (int)realCropSizeWidth,
(int)realCropSizeHight);
var image = CropImage(pictureBox1.Image, realCropRectangle);
pictureBox1.Image = image;
public Image CropImage(Image source, Rectangle rectangle)
{
var target = new Bitmap(rectangle.Width, rectangle.Height);
using (var g = Graphics.FromImage(target))
{
g.DrawImage(source, new Rectangle(0, 0, target.Width, target.Height),
rectangle,
GraphicsUnit.Pixel);
}
return target;
}
"이미지 컨트롤의 왼쪽면과 실제 이미지의 왼쪽면 사이의 거리"- 수행하려는 것을 설명하는 그림을 설명하거나 게시 할 수 있습니까? –
이 작업을 수행하는 올바른 방법은 PictureBox의 크기를 표시된 이미지와 동일하게 유지하는 것입니다. PictureBox 크기는 @InBetween에서 제공 한 대답을 사용하여 동적으로 계산됩니다. – kayz1