永发信息网

MFC单文档窗口分割后,想要显示两张不同的位图,并做处理比较

答案:1  悬赏:20  手机版
解决时间 2021-02-13 19:42
MFC单文档窗口分割后,想要显示两张不同的位图,并做处理比较
最佳答案
假设你的这三张图分别存储在下面三组变量中:
bmp1:
LPBITMAPINFO bmi1;
LPBYTE pBits;

bmp2:
LPBITMAPINFO bmi2;
LPBYTE pBits2;

bmp3:
LPBITMAPINFO bmi3;
LPBYTE pBits3;
至于怎么存储在这三个结构中,你可以参考如下代码(不过这段代码不是解决你问题的关键):
BOOL CBmp::Read(CString FileName)
{
CFile file;
BITMAPFILEHEADER bmfh;

//打开文件
if(!file.Open(FileName,CFile::modeRead))
{
AfxMessageBox("File cannot open!");
return FALSE;
}

//读文件信息头
file.Read( (LPVOID)&bmfh, sizeof(bmfh) );
if(bmfh.bfType != 0x4d42)
{
AfxMessageBox("This is not a bmp file!");
return FALSE;
}

if(bmi)
{
delete bmi;
bmi = NULL;
}
if(pBits)
{
delete pBits;
pBits = NULL;
}

//读位图信息头和调色板
int infoSize = bmfh.bfOffBits - sizeof(bmfh);
bmi = (LPBITMAPINFO)new BYTE[infoSize];
file.Read( (LPVOID)bmi, infoSize);
if(bmi->bmiHeader.biBitCount!=1 && bmi->bmiHeader.biBitCount!=4
&& bmi->bmiHeader.biBitCount!=8 && bmi->bmiHeader.biBitCount!=24)
{
AfxMessageBox("The number of colors is not valid!");
return FALSE;
}

//读图像数据
pBits = new BYTE[bmi->bmiHeader.biSizeImage];
file.Read( (LPVOID)pBits, bmi->bmiHeader.biSizeImage);

return TRUE;
}

你的问题关键用一个函数:StretchDIBits

在你的视图类的OnDraw函数中,添加如下代码即可:

if(bmi1 && pBits1)
{
::StretchDIBits(pDC->GetSafeHdc(),0,0,bmi1->bmiHeader.biWidth,bmi1->bmiHeader.biHeight,\
0,0,bmi1->bmiHeader.biWidth,bmi1->bmiHeader.biHeight,\
pBits1,bmi1,DIB_RGB_COLORS,SRCCOPY);
}

if(bmi2 && pBits2)
{
::StretchDIBits(pDC->GetSafeHdc(),0,10,bmi2->bmiHeader.biWidth,bmi2->bmiHeader.biHeight,\
0,0,bmi2->bmiHeader.biWidth,bmi2->bmiHeader.biHeight,\
pBits2,bmi2,DIB_RGB_COLORS,SRCCOPY);
}

if(bmi3 && pBits3)
{
::StretchDIBits(pDC->GetSafeHdc(),0,20,bmi3->bmiHeader.biWidth,bmi3->bmiHeader.biHeight,\
0,0,bmi3->bmiHeader.biWidth,bmi3->bmiHeader.biHeight,\
pBits3,bmi3,DIB_RGB_COLORS,SRCCOPY);追问兄弟!你这答案我见过~~~~
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
春游的时候,我们“只拣儿童多处行”,就不会
婆高在什么地方啊,我要过去处理事情
作文 雨夜,我感受到爱300字
【安148】12×4+14×6+16×8+…+148×50.
现有250克浓度为20%的糖水,我们加入70克糖,这
我放疗时医生忘了给我放模具上那块胶片,不知
活佛济公中济公的扇子的来历
萍燕综合商店我想知道这个在什么地方
洋葱根尖分生区细胞中的某一细胞器通过显微技
小弟想参加事业编考试,老家山东临沂,想打听
祥和渔具店我想知道这个在什么地方
请教各位车友:补过的轮胎,是放在前轮,还是
细胞质基质呈胶质状态是什么意思?
室性奔马律的组成是A.S与S、SB.病理S与S、SC.
海信专卖店HS豫11060地址在哪,我要去那里办
推荐资讯
【热爱生命的故事500字】四年级下册五单元作
宝泉岭农场二十三队这个地址在什么地方,我要
华日婚纱艺术摄影在什么地方啊,我要过去处理
电动车天天被人借,弄的我好烦。
凌度行车记录仪A66C怎么样
1983茅台内供应 多少钱
高科手机城地址有知道的么?有点事想过去
腾达手机店地址在什么地方,想过去办事
佳汇网咖地址在哪,我要去那里办事
英语作文是李华想去一家餐厅当暑假服务生,自
如何鉴别二手轮胎质量,帮帮忙,拜托大家了!
此人是骗子冒充黑客专门骗新手QQ6342282,我
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?