我試圖從屏幕上覆制PictureBox
的位置。我的代碼如下所示:元素矩形
Form1.cs中:
_recorder = new ScreenRecord();
_recorder.StartRecording(
pictureBox1,
pictureBox1.RectangleToScreen(new Rectangle())
);
ScreenRecord.cs:
class ScreenRecord
{
private ScreenBitmap scBitmap;
public void StartRecording(PictureBox cam, Rectangle rect)
{
scBitmap = new ScreenBitmap(cam, rect);
cam.Image = scBitmap.GetBitmap();
}
}
ScreenBitmap.cs:
class ScreenBitmap
{
private PictureBox camBox;
private Rectangle camLocation;
public ScreenBitmap(PictureBox cam, Rectangle rect)
{
camBox = cam;
camLocation = rect;
}
public Bitmap GetBitmap()
{
Bitmap screenBitmap = GetScreen();
return screenBitmap;
}
private Bitmap GetScreen()
{
Bitmap scBitmap = new Bitmap(camBox.Width, camBox.Height);
Graphics g = Graphics.FromImage(scBitmap);
g.CopyFromScreen(
camLocation.X,
camLocation.Y,
0,
0,
new Size(camBox.Width, camBox.Height)
);
return scBitmap;
}
}
我得到pictureBox1
矩形然後從屏幕上覆制,但看起來不起作用。如果我嘗試下面的代碼:
g.CopyFromScreen(
camLocation.X,
121,
0,
0,
new Size(camBox.Width, camBox.Height)
);
其中121
是它的工作原理隨機數(我得到的圖像,不是我想要的一部分,但它的工作原理),因此y矩形的座標可能是錯的?或者我失去了一些東西...
你想要捕獲並顯示在畫箱中的是什麼? – terrybozzio
顯示圖片框爲 –
的屏幕部分,這意味着如果picturebox圖像是您想要分配給圖片框的全部綠色圖片,那個圖片的相同?...因爲您正在複製圖片框 – terrybozzio