将位图的内容粘贴到PictureBox中

本文关键字:PictureBox 位图 | 更新日期: 2023-09-27 18:09:16

我目前正在编写一个小绘画应用程序,用户可以在面板上绘制。我正在使用选择工具,希望能够选择面板的某个区域,然后将选中的区域直接粘贴到面板右侧的PictureBox中。

我的问题是,我的代码目前不能正常工作,当我试图粘贴我从面板创建的位图时,我在PictureBox中得到一个大的红色X,而不是实际的图像。我知道图像正在正确地复制到位图,因为我尝试在它周围放置一些代码以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,该对象包含我想要复制的区域的坐标。

将位图的内容粘贴到PictureBox中

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

简单地删除大括号,只有Bitmap bmp = new Bitmap(width, height)应该解决你的问题