VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 614|回复: 4

这段代码为什么把位图在内存缩放后只能2色显示?

[复制链接]

1

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-2-6 16:30:01 | 显示全部楼层 |阅读模式
这段代码为什么把位图在内存缩放后只能2色显示?  
void StrectBMP(char * fileSrc,HDC ClientDc,double proportion)
{
BITMAP srcInfo;
HBITMAP HBmpSource=(HBITMAP)LoadImage(0,fileSrc,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
      
    HDC hsrc=CreateCompatibleDC(NULL);
HGDIOBJ hold=SelectObject(hsrc,HBmpSource);
GetObject(HBmpSource,sizeof(BITMAP),(LPVOID)&srcInfo);

HDC hDest=CreateCompatibleDC(NULL);
int mode=SetStretchBltMode(hDest,COLORONCOLOR);
// SelectStockObject(hDest,BLACK_BRUSH);
HBITMAP hmemBmp=CreateCompatibleBitmap(hDest,srcInfo.bmWidth,
                            srcInfo.bmHeight);
  HGDIOBJ holdsrc=SelectObject(hDest,hmemBmp);

BOOL b=StretchBlt(hDest,0,0,srcInfo.bmWidth,srcInfo.bmHeight,hsrc,0,0,
           srcInfo.bmWidth,srcInfo.bmHeight,SRCCOPY);

    b= BitBlt(ClientDc,0,0,srcInfo.bmWidth,srcInfo.bmHeight,hDest,0,0,SRCCOPY);
}  

回复

使用道具 举报

1

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-3-27 06:45:01 | 显示全部楼层
ClientDc=GetDC(hWnd);//窗口显示区HDC
fileSrc为位图文件路径.
各位大大帮忙呀.
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-3-27 12:15:02 | 显示全部楼层
改成
HBITMAP hmemBmp=CreateCompatibleBitmap(ClientDC,srcInfo.bmWidth,
                            srcInfo.bmHeight);
回复

使用道具 举报

1

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-3-28 13:45:01 | 显示全部楼层
谢谢feng214 ,当我的目的是想在内存中先把位图缩小后取位图数据,BitBlt只是想看到内存作图的实际效果.不知道可以在以上代码基础上实现吗?
回复

使用道具 举报

1

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-4-3 17:00:01 | 显示全部楼层
问题已解决.谢谢各位.
回复

使用道具 举报

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

本版积分规则

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

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