У меня есть приложение Winforms, которое пользователь использует, чтобы сделать снимок экрана на основе региона. Я хочу иметь небольшую панель предварительного просмотра, но я не уверен, как это сделать. До сих пор я пытался воссоздать растровое изображение при движении мыши, и оно слишком запаздывало, чтобы его можно было использовать. Поэтому я подумал, что если бы я использовал заранее определенное изображение (скриншот всего экрана) и переместил его в поле для картинок в зависимости от местоположения мыши, чтобы вы увеличили взгляд на экран (чтобы выбрать точные пиксели, которые вы хотите взять скриншот с проще). Я не уверен, как я могу это реализовать, я также довольно новичок в рисовании, поэтому я покажу вам, что у меня есть сейчас.
private void falseDesktop_MouseMove(object sender, MouseEventArgs e)
{
zoomBox.Image = showZoomBox(e.Location);
zoomBox.Invalidate();
}
private Image showZoomBox(Point curLocation)
{
int x = 0;
int y = 0;
if (curLocation.X - 12 <= 0)
{
x = curLocation.X - 12;
}
else
{
x = curLocation.X;
}
if (curLocation.Y - 11 <= 0)
{
y = curLocation.Y - 11;
}
else
{
y = curLocation.Y;
}
Point start = new Point(curLocation.X - 12, curLocation.Y - 11);
Size size = new Size(24, 22);
Rectangle rect = new Rectangle(start, size);
Image selection = cropImage(falseDesktop.Image, rect);
return selection;
}
private static Image cropImage(Image img, Rectangle cropArea)
{
if (cropArea.Width != 0 && cropArea.Height != 0)
{
Bitmap bmpImage = new Bitmap(img);
Bitmap bmpCrop = bmpImage.Clone(cropArea, bmpImage.PixelFormat);
bmpImage.Dispose();
return (Image)(bmpCrop);
}
return null;
}
EDIT:
Вот макет, как и просили:
Черная часть этого изображения представляет собой панель, разумеется, текст представляет собой метку, а область, в которой вы видите изображение (переполнение стека), будет блоком рисунка (называемый zoomBox), а линии поверх zoomBox будут руководство и где пересекаются 2 линии будет положение мыши. Надеюсь, это поможет вам понять мою проблему.
Еще одна вещь, которая может помочь объяснить мою проблему, - форма фактически заполняет весь экран «ложным рабочим столом». это картинка, которая покрывает весь экран скриншотом рабочего стола, когда был нажат «printscreen». Поэтому я хочу, чтобы эта маленькая «панель предварительного просмотра» была в основном увеличена в месте, где находится мышь.