Kullanıcının bölge tabanlı ekran görüntüsü almak için kullandığı bir Winform uygulaması var. Küçük bir önizleme panosuna sahip olmak istiyorum, ancak nasıl yapılacağından emin değilim. Şimdiye kadar fare hareketi üzerinde bir bitmap yeniden yaratmayı denedim ve kullanılabilir olması için çok fazla laggy. Bu yüzden önceden tanımlı bir görüntü kullandım (tüm ekranın ekran görüntüsü) ve farenin bulunduğu yere göre bir resim kutusu içine aldırdım, böylece ekranda yakınlaştırılmış bir görüntü elde edersiniz (istediğiniz pikselleri seçmek için). ekran görüntüsü daha kolay). Bunu nasıl uygulayacağımı bilmiyorum, ayrıca çizim yapmak için de oldukça yeni ve şimdi elimde olanı göstereceğim.Ekran görüntüsü "önizleme" penceresi nasıl çizilir?
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;
}
DÜZENLEME: İşte
sahte yukarı gibidir istendi:bu resmin siyah kısmı elbette metin Görselin bir etiket ve alan olmak bir paneldir (yığın taşması), zoombox'ın üstündeki çizgilerin (zoombox olarak adlandırılır), bir kılavuz olacak ve 2 çizginin kesiştiği yerde fare konumu olacaktır. Umarım bu, sorunumu anlamanıza yardımcı olacak daha iyi bir yardımcıdır. sorunumu açıklanmasına yardımcı olabilir
Başka bir şey formu aslında bir "yanlış masaüstü" ile tüm ekranı doldurur olduğunu. "printscreen" düğmesine basıldığında masaüstünün ekran görüntüsüyle tüm ekranı kaplayan bir resim kutusu. Bu yüzden, bu küçük "önizleme bölmesi" nin, farenin nerede olduğuyla ilgili olarak yakınlaştırılmasını istiyorum.
Senin sorunun ilginç geliyor ama kod parçacığı adresinin niyet anlamaya zor. Devam etmenin en iyi yolu, neyin peşinde olduğunuzu göstermek için MS Paint ile bir maket oluşturmaktır, IMO. (Sen-ebilmek almak ve mock-up pic için bağlantı gerekir ...) –
@Paul: Ben daha fazla ayrıntı ve sizin için bir sahte görüntü ekledim. – Alex
Size yardımcı olabilecek eksiksiz bir kod örneği ekledim. Bu kodlanmış ve biraz hack-ish ama sizin için yararlı olabilir. –