系统截屏问题

xkf1119 2017-05-08 06:33:14
光学影象设备电脑,WINXP系统,运行的厂商软体,该软体会时时显示光学扫描的影象,我用Windows的GetDC抓全屏,软件周边以及软件上的一些控件都能抓到,但就是即时影象那个区域很奇怪,抓第一张图是对的,抓第二张图后,两张图的影象都是最新的,也就是不管抓几次,前面的图再打开影象那个区域都只显示最后一次的影象,但根据其他部分的变化能判断我的截图程式是没问题的,再测试把这些图移到其他电脑上,开启图档发现影象区域是全黑的。看到有人说是DirectX的问题,我测试用DirectX截屏函数来操作,也是一样的结果。有人碰到过吗?调低DirectX硬体加速功能,我怕会影响设备本身的功能.
...全文
569 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xkf1119 2017-05-10
  • 打赏
  • 举报
回复
引用 5 楼 DelphiGuy 的回复:
这个并没有什么神奇的,它这个输出应该是用的DirectDraw Hardware Overlay,简单说就是显示的图像并没有绘制到显存中,而是一个单独的overlay buffer(可以理解为第二显存),由显卡硬件在输出时把两个图像叠加到一起,所以你的程序如果用标准截屏方法GetDC、BitBlt只能获取到显存中的图像,而overlay buffer则获取不到。
我測試用DSPack的FilterGraph控件連接顯卡,不過掃到了設備的視頻源:dalsa imaging video source,如果無法連結,提示Interface not Supported.有什麼辦法嗎?
lyhoo163 2017-05-10
  • 打赏
  • 举报
回复
还没有完成要求?你还是找到厂商的SDK,才是事倍功半。
xkf1119 2017-05-10
  • 打赏
  • 举报
回复
引用 10 楼 jjpweb 的回复:
看你的描述,应该是你代码的问题,新抓的把原来的覆盖了 你这样,每抓一次保存到硬盘一次,试试。
並且我測試用Windows自帶的Prt Scr以及其他的抓圖軟體來抓,都是一樣的結果
xkf1119 2017-05-10
  • 打赏
  • 举报
回复
引用 10 楼 jjpweb 的回复:
看你的描述,应该是你代码的问题,新抓的把原来的覆盖了 你这样,每抓一次保存到硬盘一次,试试。
我每次抓都是指定不同的存檔名稱的.
xkf1119 2017-05-10
  • 打赏
  • 举报
回复
我測試下看,不過我完整的需求是每0.1秒就即時記錄下該設備軟體當前的一些訊息(包括影像畫面),其他的文字訊息我可以通過Handler來擷取,影像畫面部分如果要透過第三方軟體,那就還要額外處理兩邊輸出資料關聯的部分,並且不知道第三方軟體是否支持外部的控制以及0.1秒的頻率
jjpweb 2017-05-10
  • 打赏
  • 举报
回复
看你的描述,应该是你代码的问题,新抓的把原来的覆盖了 你这样,每抓一次保存到硬盘一次,试试。
  • 打赏
  • 举报
回复
可以试试HyperCam
xkf1119 2017-05-10
  • 打赏
  • 举报
回复
關了它,設備就等於不工作了,這就本末倒置了.你有沒有什麼其他辦法能取到這圖像.
  • 打赏
  • 举报
回复
因为Hardware Overlay是非常有限的资源,通常只能有一个程序占用,它的程序使用,你的程序就不能用,你可以把它的程序关掉,然后连接视频源试试。
xkf1119 2017-05-09
  • 打赏
  • 举报
回复
剛才再去設備端測試了下,實際上截圖中的影像區域就是是個超連結一樣,只要設備鏡頭移動,所有之前抓的圖中的影像區域就會變成當前拍到的即時圖像,就算檔案開著也會馬上刷新,真是神奇. 另外我測試把系統DirectX Disable掉,還是一樣的結果. 再測試把顯卡的硬體加速拉成無,設備的鏡頭功能就直接沒了,一片黑.
xkf1119 2017-05-09
  • 打赏
  • 举报
回复
引用 2 楼 lyhoo163 的回复:
好的办法,你要通过厂商,获取厂商提供的DSK,直接从光学影象设备上获取截屏。这一占厂商应该提供的。 另你非得自己搞的放,可以通过录像0.1称(或更短),再从中获取其中的一幅贞(图像)即可。这才是真正的截屏图像。
找廠商1台設備收費8W美金,太高了. 另外如果是截圖失敗,應該不管是在本地電腦看還是放到遠端電腦看都黑的才對.但是我按照每0.1秒的頻率截圖,不管截多少張,在本地電腦任何時候打開看每個張圖的影像區域都顯示的是最後一張的影像圖.那怕是我先截一張立刻打開看下影像部分是對的,再截第二張後,再去開第一張圖,那塊影像區域就變成同第二張圖一樣的影像了,不知道會不會是廠商軟體在做手腳.
lyhoo163 2017-05-09
  • 打赏
  • 举报
回复
好的办法,你要通过厂商,获取厂商提供的DSK,直接从光学影象设备上获取截屏。这一占厂商应该提供的。 另你非得自己搞的放,可以通过录像0.1称(或更短),再从中获取其中的一幅贞(图像)即可。这才是真正的截屏图像。
lyhoo163 2017-05-09
  • 打赏
  • 举报
回复
通过你的表述,截屏不成功。 一般的截屏手段,是截不到视频的。因为视频是有闪频的,只有你截屏的瞬间,视频正好显示图像,才能截到图像。 视频有桢幅的,你要把一个桢幅截下来才可以。
  • 打赏
  • 举报
回复
这个并没有什么神奇的,它这个输出应该是用的DirectDraw Hardware Overlay,简单说就是显示的图像并没有绘制到显存中,而是一个单独的overlay buffer(可以理解为第二显存),由显卡硬件在输出时把两个图像叠加到一起,所以你的程序如果用标准截屏方法GetDC、BitBlt只能获取到显存中的图像,而overlay buffer则获取不到。

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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