常规内存到CDC的拷贝问题

maptrix 2000-08-16 05:23:00
我在常规内存中进行了画点,画线等操作,但不知道如何将这些数据直接拷贝到CDC中显示出来!!

因为我把以前直接写屏的程序,移植到windows上。windows不能直接写屏,我就把它先写到常规内存里,然后一下全部拷贝到CDC中。

但是现在遇到了困难,如果方便的话,请帮忙告诉我一下HDC的数据结构也行,我就创建一个hdc然后用bitblt去拷贝。
多谢多谢!!
...全文
269 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
skt642 2001-05-31
  • 打赏
  • 举报
回复
15067关注!
maptrix 2000-08-17
  • 打赏
  • 举报
回复
谢谢大家,我已经解决了这个问题!
基本用的就是第一种加第二种方法。
CDC memDC;
memDC.CreateCompatibleDC(&dc); // 创建内存DC
CBitmap bitmap;
bitmap.CreateBitmap(100,100,1,32,(void *)buffer);
memDC.SelectObject(&bitmap);
// 将数据写到buffer中
dc.BitBlt( 100, 0, 100, 100, &memDC, 0, 0, SRCCOPY);

再次感谢!
westaf 2000-08-16
  • 打赏
  • 举报
回复
对了,scorpion是对的,这个方法比我上面的第一种方法块很多。
不过DC中用的一般是DIB,到视频缓冲区还要一个转换过程,所以肯定是比DirectX慢的。如果要在DC中用DDB,那反而不如DirectX方便了。
westaf 2000-08-16
  • 打赏
  • 举报
回复
你的char*的缓冲区中应该是一个一个的像素点吧?
如果是这样,那么你可以根据这些像素点调用CDC::SetPixel把所有的点画到CDC中去。不过这样肯定是很慢的。如果想快速实现的话,用CDC是不可能的,必须用DirectX。

其实DirectX中可以锁定一个Surface,然后对这个Surface中的视频缓冲区进行直接访问。于是你可以再改动一下“常规内存的各种绘图操作”这部分程序,让他们不是在一个char*缓冲区中绘图,而是在一个锁定了的Surface Buffer中进行,那么这个操作就会非常快了(不用再做任何的拷贝)。
U皮特U 2000-08-16
  • 打赏
  • 举报
回复
你说的是视频缓冲区中的数据吧,这涉及到不同显示方式的问题。VC中已经将底层操作透明化了,无需直接操作视频缓冲区。使用memDC可能达到很好的平滑显示的效果,如果要用复杂的图像,还可以使用DirectX或OpenGL。
DC提供的API,使得统一的编程接口透明访问底层操作,不支持直接操作视频缓冲区。
maptrix 2000-08-16
  • 打赏
  • 举报
回复
多谢!现在的情况是这样的,我已经完成了常规内存的各种绘图操作的移植,数据已经存放在
一个char *的缓冲区中,现在如何将这段缓冲区种的数据拷贝到CDC中。
scorpion 2000-08-16
  • 打赏
  • 举报
回复
memDC应SelectObject()一个CBitmap对象,而这个对象的数据则是放在常规内存中。
U皮特U 2000-08-16
  • 打赏
  • 举报
回复
在内存中绘制一般如下:
CClientDC dc(this);
CDC memDC;
memDC.CreateCompatibleDC(&dc); // 创建内存DC
// 此时可以在memDC中进行内存DC的绘制工作
// 完成后可以用下面的语句将memDC中的内容拷贝到屏幕DC中
dc.BitBlt( x, y, nWidth, nHeight, &memDC, xSrc, ySrc, SRCCOPY);

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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