具体来说,图像文件为.dat,里面2个bytes组成一个像素点,如何在VC界面程序中比较快速的显示出完整的图像。用过SetPixel,感觉比较慢,如果是连续的视频文件,那就更慢了。请教下大家,有没有比较好的方法可以实现?(分没有多少,谅解)

解决方案 »

  1.   

    还有个BUG忘记说了,就是转换成VS2008工程的时候,编译会失败,把manifest文件删了就可以运行了!哪位高人找到解决办法了,给我说说~
      

  2.   

    把这个dat文件传给我看下,我去解析下。
      

  3.   

    你邮箱多少?dat文件中2个bytes按照565格式拆分成rgb,然后再显示,现在用Setpixel可以做到,只是效率上很慢,如果是视频监控的话,那样就。
      

  4.   

    F:\wangchao\------pic------
      

  5.   

    我的资源有一个把内存数据转换为bmp图像  http://download.csdn.net/source/23779011、先把2个bytes按照565格式拆分成rgb
    2、CKlsBmpFile bmp ;
    bmp.FormatImage(pData, 24, width, height) ;
    3、bmp.Draw(...) ;不过其实你要是这样画图的方法,视频还是有一些问题的
      

  6.   

    我看网上一些资料说是要用DirectX来做,但具体不知道怎么处理?
      

  7.   

    你说是DAT格式,结果传给我的是txt的后缀,然后用UltraEdit一打开看就知道这个里面除了可能有图像数据外还有一些其他的数据,那你就要告诉大家从什么地方开始是图像数据,图像的宽度和高度由那个位置的数据决定,没有这些,都是扯谈。
      

  8.   

    laviewpbt,你可能误解我的意思了。这个数据是我从视频采集卡中获得的一帧图像数据,数据的组织形式是2个bytes组成一个像素点,里面的数据全是像素点的,并没有宽度和高度的信息,和你所想的标准图像格式是不一样的,关于每一帧图像,我现在都能显示出来,问题是连续的显示的话(也就是视频),用SetPixel效率上就是一个问题,所以我想问下有没有什么比较好的方法来处理像这样的视频流数据。
      

  9.   

    SetDIBitsToDevice 
    先要根据事先知道的图像的宽度和高度以及16位图像的具体格式(565,555,444?)构造一个BMP文件头,然后分配一片内存,一次性把所有字节的字节读入这个内存,最后调用SetDIBitsToDevice 这个函数显示。如果你自己也不知道图像你采集的图像的一些宽度或者高度信息,那无法继续下去的。就说到这。
      

  10.   

    图像的大小当然知道的,这个函数我刚才也查了下,确实是可以的,谢谢laviewpbt。顺便讨教下,像这种不是通用的视频数据格式,能够在做一些转换后通过播放器来播放吗?这样效率会不会更高?