回顾这个问题开始,已经快两个月了,目前window版本已经开发完成,正在进行Web版本的开发。其间从无到有,结合前人的经验和代码,顺便把其中的一些问题列举出来,一步一步解决。
1.选择方式,选择ATL IPicture支持。
2.载入一张BMP/JPEG图片并显示
3.实现图片放大缩小,拖拽
4.实现图片合成
5.内存画图防止闪烁
6.剪切一部分图片,保存为BMP
7.剪切一部分图片,保存为JPEG ,使用GDI+
8.剪切一部分图片,设置dpi为300,使用GDI+
9.在HDC中合成另一张图片
10.合成一张图片并使其背景透明
11.HDC输出文字
12.HDC输出文字设置字体
13.16bit和32bit模式下兼容透明背景
14.WMD视屏处理,使用DirectShow
15.搭建DirectShow环境,使用DirectX 9.0b的版本
16.视频的捕捉
17.视频Filter和截图
18.在视频中插入文字和图片
19.采用视频采集卡,目前有USB方式和PCI插卡方式,这两种方式都是需要支持WDM的。
20.需要在控件中添加一些基本的视频设置,例如视频制式,视频通道,视频格式等,而且不同的系统和硬件DirectShow支持的方式不一样,因此需要判断哪些功能是本系统和硬件支持的。可以参考DrectshowSDK中很出名的AMCAP做为例程研究。
21.视频问题和图形问题解决后,就是相机开发的具体问题了,这个时候要研究相机的API,厂家给的API都是会给例程的,按着例程来做,总不会错。但是开发之前,首先要对拍照的一些术语进行了解,比如什么是白平衡,什么是AWAF,闪光的模式,什么是曝光,什么是B门拍摄,什么是曝光增益,什么是Macro。有条件最好找给摄影师来咨询。
22.到现场不能成功拍照的问题很多,遇见最多的就是不能聚焦无法拍照,因为我们选择的是一款单反,所以当选择聚焦优先的时候,如果是一堵花墙或者单色强就无法聚焦成像,需要更改拍摄模式。关于拍摄模式,目前还在研究中,不过主要是相机中固定的集中模式。
23.开发WEB版,开发WEB版以为很顺利,但是却完全不是,首先就遇见了刷新问题,在WINDOW版的ONDRAW中,一个FireChange()只刷新一次,而在IE容器中却要刷新N次,每次150个像素高度的刷新。这让原有的程序在刷新上有了不小的调整。
24.第二个问题是,WEB中空间没有句柄,也就是说控件的容器就是IE的显示窗口,这个时候你要得到客户端的尺寸得到的就是整个IE的尺寸。所以也需要进行调整(WINDOW程序只需要加一个PANEL就好)。
25.就是键盘捕捉的问题,WINDOW下和IE中键盘捕捉有所区别,WINDOWS可以处理WM_KEYDOW或UP信息,而IE却不行,需要在点击的时候设置一下ACTIVEX的模式状态。这样才能在相应的消息重载函数中捕获。overload
26.就是软件驱动的部署问题(具体相机型号有所不同),与WINDOW版不一样
WINDOW版本用的DELPHI调用ATL空间,WEB版中用到了JQUERY来呈现效果。