【问题标题】:Paste the contents of a Bitmap into a PictureBox将位图的内容粘贴到 PictureBox 中
【发布时间】:2013-04-16 06:34:17
【问题描述】:

我目前正在编写一个用户可以在面板上绘图的小绘图应用程序。我正在使用选择工具,并希望能够选择面板的某个区域,然后将此选定区域直接粘贴到面板右侧的 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 是一个列表,其中包含一个对象,其中包含我要复制的区域的坐标。

任何帮助将不胜感激。

【问题讨论】:

  • 首先想到的是你的位图正在被垃圾收集,编辑,如果你拿出你的使用括号会发生什么?
  • 删除使用修复它哈哈!感谢赛斯的帮助!
  • 别担心 ;) 我会多写一点解释:P

标签: c# bitmap copy picturebox paste


【解决方案1】:

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

只需移除大括号即可拥有Bitmap bmp = new Bitmap(width, height) 即可解决您的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 2013-05-16
    • 1970-01-01
    相关资源
    最近更新 更多