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

pest007 2007-01-04 03:01:43
这段代码为什么把位图在内存缩放后只能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);
}

...全文
248 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pest007 2007-01-04
  • 打赏
  • 举报
回复
问题已解决.谢谢各位.
pest007 2007-01-04
  • 打赏
  • 举报
回复
谢谢qunta(J2Y2) ,马上给分.当我的目的是想在内存中先把位图缩小后取位图数据,BitBlt只是想看到内存作图的实际效果.不知道可以在以上代码基础上实现吗?
qunta 2007-01-04
  • 打赏
  • 举报
回复
改成
HBITMAP hmemBmp=CreateCompatibleBitmap(ClientDC,srcInfo.bmWidth,
srcInfo.bmHeight);
pest007 2007-01-04
  • 打赏
  • 举报
回复
ClientDc=GetDC(hWnd);//窗口显示区HDC
fileSrc为位图文件路径.
各位大大帮忙呀,分不够可一再给,在线等.
YouTuBe 2007-01-04
  • 打赏
  • 举报
回复
Up

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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