好,小弟我承认昨天是小弟我不好,态度也不好,小弟我这里道歉了,不过大家近来看看,小弟我改完了,到底哪出了有关问题,显示的图像不对
好,我承认昨天是我不好,态度也不好,我这里道歉了,不过大家近来看看,我改完了,到底哪出了问题,显示的图像不对
如题
首先和给我回复过帖子的朋友道歉
由于时间紧,很着急,话也不怎么好听
好了,我参考了下大家的答案,然后想了个最好的办法(也许是,如果不是请批评)
------解决方案--------------------
昨天的事情没看到,帮顶,呵呵
------解决方案--------------------
不懂,帮顶
------解决方案--------------------
如题
首先和给我回复过帖子的朋友道歉
由于时间紧,很着急,话也不怎么好听
好了,我参考了下大家的答案,然后想了个最好的办法(也许是,如果不是请批评)
- C/C++ code
//(1)代码我没做改动,还是这样 unsigned char rgb_buf[100*40*3] ; //这个内存区呢,里面有很多位图r,g,b值,格式是bgrbgrbgrbgr.... CDC * cur_dc ; CDC * mem_dc ; CBitmap * mem_bmp ; cur_dc = GetDC() ; //获得显示设备信息 if(mem_dc != NULL) delete mem_dc ; mem_dc = new CDC ; if(mem_bmp != NULL) delete mem_bmp ; mem_bmp = new CBitmap ; mem_dc- >CreateCompatibleDC(cur_dc) ; mem_bmp- >CreateCompatibleBitmap(cur_dc, 100, 40) ; mem_dc- >SelectObject(mem_bmp) ; //(2)这一步我改了,改为先生成位图在拷贝到屏幕,如下 HBITMAP hOldBitmap = HBITMAP(mem_bmp); ::SetBitmapBits(hOldBitmap, sizeof(rgb_buf), rgb_buf ); mem_dc->SelectObject(hOldBitmap) ; cur_dc->BitBlt(0,0, 100, 40, mem_dc, 0,0, SRCCOPY) ; //这下我测试了下速度,恩,不错,快多了,但问题出来了:: 图像根本不是正确的数据,反正图像是什么我也不知道,问题肯定出在第2步了 但究竟出在哪导致的图片乱七八糟的不知道是什么呢??大家帮我看看 解决了,所有帖子都结分
------解决方案--------------------
昨天的事情没看到,帮顶,呵呵
------解决方案--------------------
不懂,帮顶
------解决方案--------------------
- C/C++ code
unsigned char rgb_buf[100*40*4]; for(int i=0; i< 100; i++) { for(int j=0; j<40; j++) { rgb_buf[i*100 +j*4] = 100; rgb_buf[i*100 +j*4+1] = 150; rgb_buf[i*100 +j*4+2] = 255; rgb_buf[i*100 +j*4+3] = 0; } } CDC * cur_dc ; CDC * mem_dc ; CBitmap * mem_bmp ; cur_dc = GetDC() ; //获得显示设备信息 mem_dc = new CDC ; mem_bmp = new CBitmap ; mem_dc->CreateCompatibleDC(cur_dc) ; mem_bmp->CreateCompatibleBitmap(cur_dc, 100, 40) ; //(2)这一步我改了,改为先生成位图在拷贝到屏幕,如下 HBITMAP hOldBitmap = HBITMAP(*mem_bmp); // 这里。。。。。。。。。。。 ::SetBitmapBits(hOldBitmap, sizeof(rgb_buf), rgb_buf ); mem_dc->SelectObject(mem_bmp) ; cur_dc->BitBlt(0,0, 100, 40, mem_dc, 0,0, SRCCOPY) ;
------解决方案--------------------
什么32位,怎么改....