我看过this关于如何使用光标捕获屏幕的教程。
现在,我添加了一个计时器和datagridview,我想将每个捕获保存在datagridview中。这是我所做的:

private void Display(Bitmap desktop)
{
    Graphics g;
    Rectangle r;
    if (desktop != null)
    {
        r = new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height);
        g = pictureBox1.CreateGraphics();
        g.DrawImage(desktop, r);
        g.Flush();

            Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height, g);

        dataGridView1.Rows.Add(bmp);
    }
}


但是我得到的只是这样的白色图像:



我无法保存在picturebox上显示的内容并将其添加到datagridview的位置

最佳答案

使用CreateGraphics是屏幕上的临时图形,因此图像不会转移到位图。

尝试直接绘图:

private void Display(Bitmap desktop) {
  if (desktop != null) {
    Bitmap bmp = new Bitmap(pictureBox1.ClientSize.Width,
                            pictureBox1.ClientSize.Height);
    using (Graphics g = Graphics.FromImage(bmp)) {
      g.DrawImage(desktop, Point.Empty);
    }
    pictureBox1.Image = bmp;
    dataGridView1.Rows.Add(bmp);
  }
}

关于c# - 无法将图片从图片盒保存到datagridview,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22178566/

10-12 12:43