游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2162|回复: 4

如何先画到内存再画到屏幕

[复制链接]

42

主题

137

帖子

137

积分

注册会员

Rank: 2

积分
137
发表于 2006-9-10 20:33:00 | 显示全部楼层 |阅读模式
我想先
HDC gdc = GetDC (hwnd);
HDC mdc = CreateCompatibleDC (gdc);

LineTo (mdc, 100, 100);
BitBlt (gdc, 0, 0, maxwidth, maxheight, mdc, 0, 0, SRCCOPY);

DeleteDC (mdc);
ReleaseDC (hwnd, gdc);
可是不行,什么都没有,怎么办?

3

主题

8

帖子

33

积分

注册会员

Rank: 2

积分
33
发表于 2006-9-11 10:38:00 | 显示全部楼层

Re:如何先画到内存再画到屏幕

兼容DC里要有兼容位图,否则图是没地方画的,这是我的一段代码
                CDC* pDC;
        CDC MemDC;        //定义一个显示设备对象
        CBitmap MemBitmap;        //定义一个位图对象

        //建立与屏幕显示兼容的内存显示设备
        MemDC.CreateCompatibleDC(NULL);

        //下面建立一个与屏幕显示兼容的位图
        MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);

        //将位图选入到内存显示设备中
        CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);

        //先用背景色将位图清除干净,黑色
        MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(0,0,0));

        //绘制游戏场景       
        g_world.Draw(&MemDC);             //画背景世界
        g_world.DrawMiniMap(&MemDC);        //画小地图
        pDoc->m_Block.Draw(&MemDC);        //画方块

        //将内存中的图拷贝到屏幕上进行显示
        pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);

        //绘图完成后的清理
        MemBitmap.DeleteObject();
        MemDC.DeleteDC();

42

主题

137

帖子

137

积分

注册会员

Rank: 2

积分
137
 楼主| 发表于 2006-9-11 12:38:00 | 显示全部楼层

Re:如何先画到内存再画到屏幕

谢谢,受教了~

3

主题

137

帖子

151

积分

注册会员

Rank: 2

积分
151
QQ
发表于 2006-9-12 21:31:00 | 显示全部楼层

Re:如何先画到内存再画到屏幕

2楼的不要用MFC的代码误导楼主。
楼主的SDK代码总的结构没啥问题,
问题出在你lineto之前没有设置画笔的颜色。
而且只有一个lineto,未必会画的出来吧。

42

主题

137

帖子

137

积分

注册会员

Rank: 2

积分
137
 楼主| 发表于 2006-9-13 16:40:00 | 显示全部楼层

Re:如何先画到内存再画到屏幕

不好意思,楼上大虾才是误导。mfc我没学过但看得懂,只不过是把句柄藏到对象里罢了。2楼大虾是对的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 10:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表