VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: 守望爱情

CreateCompatibleBitmap创建的位图默认是黑色的,在往上画之前,必须刷成你要的底色譬如白色

[复制链接]

0

主题

6

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-11-25 12:45:02 | 显示全部楼层
sorry:
>>>temBmp.CreateCompatibleBitmap(&pDC,rect.Width(),rect.Height());
回复

使用道具 举报

0

主题

6

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-11-25 13:00:02 | 显示全部楼层
>>>temBmp.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());

---老了!
回复

使用道具 举报

0

主题

6

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-11-25 13:15:01 | 显示全部楼层
以下代码运行结果为红色。
         CDC dc;
        CDC* pDrawDC = pDC;
        CBitmap bitmap;
        CBitmap* pOldBitmap;
       
        CRect rect;
        GetClientRect(&rect);
        //========================================================
        if (dc.CreateCompatibleDC(pDC))
        {
                if (bitmap.CreateCompatibleBitmap(pDC,
                        rect.Width(),
                        rect.Height()))
                {
                        OnPrepareDC(&dc,NULL);
                        pDrawDC = &dc;
                        pOldBitmap = dc.SelectObject(&bitmap);
                }
        }
        //========================================================
        //pDoc->Draw(pDrawDC,ViewID);
>>>>>>>>>pDrawDC->FillSolidRect(0,0, 100,100, RGB(255,0,0));
        pDrawDC->TextOut(1,1,_T("ABC"));
        dc.DPtoLP(&rect);
        //========================================================
        if ( 1)//pDrawDC != pDC )
        {
                pDC->BitBlt( 0, 0,rect.Width(), rect.Height(),
                        &dc, 0, 0, SRCCOPY);
                dc.SelectObject(pOldBitmap);
                bitmap.DeleteObject();
        }
回复

使用道具 举报

0

主题

3

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-11-25 13:30:01 | 显示全部楼层
好像是我大意了,哎呀
回复

使用道具 举报

2

主题

8

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-11-25 13:45:01 | 显示全部楼层
我在OnPrepareDC()中有SetMapMode(MM_TWIPS)语句;当我把这条语句注释掉后,就可以出正常结果了,为什么呢?
回复

使用道具 举报

2

主题

8

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-11-25 14:00:01 | 显示全部楼层
--->>>meteora12

你的例子我试过了,是对的。我要是在该例子的OnPrepareDC()中加入有SetMapMode(MM_TWIPS);

也会出现黑屏现象,因为我的程序要支持打印,所以加上了SetMapMode(MM_TWIPS)。

你知道原因吗?

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

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