将Bitmap的内容粘贴到PictureBox中

时间:2013-04-16 06:34:18

标签: c# bitmap copy picturebox paste

我正在编写一个小型绘图应用程序,用户可以在Panel上绘图。我正在使用选择工具,并希望能够选择Panel的某个区域,然后将此选定区域直接粘贴到我刚才在Panel右侧的PictureBox中。

我的问题是我的代码目前无法正常工作,当我尝试从面板中粘贴我正在创建的Bitmap时,我在PictureBox中获得了一个大的红色X而不是实际的图像。我知道图像正在正确地复制到Bitmap,因为我尝试在它周围放一些代码将它作为jpeg保存到磁盘,然后查看图像,它显示正常。

这是我的代码:

private void tbCopy_Click(object sender, EventArgs e)
{
    int width = selectList[0].getEnd().X - selectList[0].getInitial().X;
    int height = selectList[0].getEnd().Y - selectList[0].getInitial().Y;

    using (Bitmap bmp = new Bitmap(width, height))
    {
        pnlDraw.DrawToBitmap(bmp, new System.Drawing.Rectangle(
                                      selectList[0].getInitial().X,
                                      selectList[0].getInitial().Y, 
                                      width, height));
        pbPasteBox.Image = bmp;             
    }
}   

宽度和高度只是我要复制的区域的尺寸,而selectList是一个包含一个对象的List,其中包含我要复制的区域的坐标。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:6)

当使用大括号内的代码完成时,你的问题是using(){},因为它被认为不再需要,所以处理了()中的对象。

只需将支架移除到只有Bitmap bmp = new Bitmap(width, height)即可解决您的问题