2012-04-12 65 views
0

我有在運行時需要在屏幕的當前位置相對於圖片框如何獲得在PictureBox

在這行代碼複製一個PictureBox問題屏幕的位置採取的位置picturebox,但我需要相對於屏幕的位置。有什麼辦法可以做嗎?

// gfxScreenshot.CopyFromScreen(pictureBox1.Bounds.X, pictureBox1.Bounds.Y, 0, 0, pictureBox1.Bounds.Size, CopyPixelOperation.SourceCopy); 

if (saveScreenshot.ShowDialog() == DialogResult.OK) 
    { 

     bmpScreenshot = new Bitmap(pictureBox1.Bounds.Width, pictureBox1.Bounds.Height, PixelFormat.Format32bppArgb); 

     gfxScreenshot = Graphics.FromImage(bmpScreenshot); 

     gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy); 

     bmpScreenshot.Save(saveScreenshot.FileName, ImageFormat.Png); 

    } 
+0

我不是100%確定的,但是如果你能夠計算圖片框中屏幕截圖的縮放比例,你可能會接近計算未縮放的指針位置。 – 2012-04-12 17:12:36

回答

3

爲了讓圖片框本身,使用的位置的屏幕座標:

var screenPosition = form.PointToScreen(pictureBox1.Location); 

知趣箱中的一個點的屏幕座標:

var screenPosition = pictureBox1.PointToScreen(new Point(10, 10)); 

這將給你的圖片框中的位置(10,10)的屏幕座標。

+0

我有一個問題,我的朋友在這 var screenPosition = pictureBox1.PointToScreen(new Point(10,10)); 跨線程操作無效:控制'pictureBox1'從其創建線程以外的線程訪問。 我只需要在屏幕上尊重PictureBox1的當前位置,如果用戶移動表格 – marduck19 2012-04-12 19:45:13

+0

我已經解決了我的朋友問題是,使用計時器,但你的答案是非常有用的。來自墨西哥瓜達拉哈拉的問候=) – marduck19 2012-04-12 20:21:14