PictureBox 绘图保存问题

逐渐变晕 2018-03-10 10:12:24
有一个海康的工业相机,他里面有一个方法就是
m_csVolMeasure.Display(pictureBox2.Handle); 就是会把图像绘制到pictureBox2这个图像控件上,但是想保存图片,
发现pictureBox2.image的属性是null,可能就是直接用GDI绘制到pictureBox2这个控件上,那该怎么保存图像呢?
...全文
664 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
mk_lucifer 2018-03-20
  • 打赏
  • 举报
回复
引用 11 楼 zlf19871014 的回复:
[quote=引用 10 楼 summergo123321 的回复:] 工业相机,读取数据的方法很多,我不知道你为啥会用这么傻的一种方法,难道工业相机就不支持直接读取数据的方法么???我觉得它不可能没有,工业相机,哪怕是普通的电脑摄像头,都可以直接读取拍照数据的。。。 工业相机我也用过,无非就是连拍,控制拍照,摄像头对象都会有一个事件,或者直接读取的方法,让你读取文件化的图片,或者像素点阵,包括用的图像是32RGB还是Gray8,曝光时间了,拍照频率了等等,都可以让你用代码操作,这才叫工业摄像头。。。。如果只有这一个方法,连个电脑摄像头都不如。。
直接读取数据然后要获取图片中的条码、长宽高体积,这些都是厂家已经做好的,我自己调用一下就好了,不然自己读数据这些都得自己开发,感觉有点偏离我们的业务了 [/quote] 即使如此你也可以让他画到位图创建的HDC上,然后保存成jpg,png随便了,为啥非要是PictrueBox。。。
逐渐变晕 2018-03-17
  • 打赏
  • 举报
回复
引用 10 楼 summergo123321 的回复:
工业相机,读取数据的方法很多,我不知道你为啥会用这么傻的一种方法,难道工业相机就不支持直接读取数据的方法么???我觉得它不可能没有,工业相机,哪怕是普通的电脑摄像头,都可以直接读取拍照数据的。。。 工业相机我也用过,无非就是连拍,控制拍照,摄像头对象都会有一个事件,或者直接读取的方法,让你读取文件化的图片,或者像素点阵,包括用的图像是32RGB还是Gray8,曝光时间了,拍照频率了等等,都可以让你用代码操作,这才叫工业摄像头。。。。如果只有这一个方法,连个电脑摄像头都不如。。
直接读取数据然后要获取图片中的条码、长宽高体积,这些都是厂家已经做好的,我自己调用一下就好了,不然自己读数据这些都得自己开发,感觉有点偏离我们的业务了
mk_lucifer 2018-03-16
  • 打赏
  • 举报
回复
工业相机,读取数据的方法很多,我不知道你为啥会用这么傻的一种方法,难道工业相机就不支持直接读取数据的方法么???我觉得它不可能没有,工业相机,哪怕是普通的电脑摄像头,都可以直接读取拍照数据的。。。 工业相机我也用过,无非就是连拍,控制拍照,摄像头对象都会有一个事件,或者直接读取的方法,让你读取文件化的图片,或者像素点阵,包括用的图像是32RGB还是Gray8,曝光时间了,拍照频率了等等,都可以让你用代码操作,这才叫工业摄像头。。。。如果只有这一个方法,连个电脑摄像头都不如。。
逐渐变晕 2018-03-15
  • 打赏
  • 举报
回复
引用 8 楼 xuzuning 的回复:
所以我一开始就让你尝试各种传递句柄的方式,看看哪种是对的。而你却消失了
实在抱歉啊,版主,我按你的方式传递的句柄,好像不能显示,都不知道该咋办了
xuzuning 2018-03-15
  • 打赏
  • 举报
回复
所以我一开始就让你尝试各种传递句柄的方式,看看哪种是对的。而你却消失了
逐渐变晕 2018-03-15
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
这样说吧,只要 pictureBox2 中显示了画面(不管是用什么方法画上去的) 你都可以这样保存成文件
var bmp = new Bitmap(pictureBox2.Width, pictureBox2.Height);
var g = Graphics.FromImage(bmp);
g.CopyFromScreen(PointToScreen(pictureBox2.Location), Point.Empty,pictureBox2.Size);
bmp.Save("图片文件名");
版主不好意思,这两天有点忙,没及时回复,你这样好像是可以的,但是就是picturebox里面的图像是缩小的,不是原图,这样保存的图片就是缩小版的了
xuzuning 2018-03-12
  • 打赏
  • 举报
回复
那么你看到有画面显示出来了吗?
逐渐变晕 2018-03-12
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
把 pictureBox2.Handle 换成 pictureBox2..Image.GetHicon() 不能隐式转换的话就写作 (pictureBox2..Image as Bitmap).GetHicon()
我按你的意思直接写(pictureBox2..Image as Bitmap).GetHicon() 因为PictureBox2.Image属性为空,所以我新建了一个 Bitmap bmp=new Bitmap(1280,1920); pictureBox2.Image = bmp; m_csVolMeasure.Display((pictureBox2.Image as Bitmap).GetHicon()); 我用 if (pictureBox1.Image != null) { pictureBox1.Image.Save("2.bmp"); } bmp.Save("3.bmp");保存的图片还是为空白的? 那该怎么办
xuzuning 2018-03-12
  • 打赏
  • 举报
回复
这样说吧,只要 pictureBox2 中显示了画面(不管是用什么方法画上去的) 你都可以这样保存成文件
var bmp = new Bitmap(pictureBox2.Width, pictureBox2.Height);
var g = Graphics.FromImage(bmp);
g.CopyFromScreen(PointToScreen(pictureBox2.Location), Point.Empty,pictureBox2.Size);
bmp.Save("图片文件名");
xuzuning 2018-03-12
  • 打赏
  • 举报
回复
那么用 pictureBox2.Handle 时,有画面吗?
逐渐变晕 2018-03-12
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
那么你看到有画面显示出来了吗?
也没有画面显示出来
xuzuning 2018-03-10
  • 打赏
  • 举报
回复
把 pictureBox2.Handle 换成 pictureBox2..Image.GetHicon() 不能隐式转换的话就写作 (pictureBox2..Image as Bitmap).GetHicon()

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧