加载位图并按比例缩放显示
来源:互联网 发布:python检测sql注入 编辑:程序博客网 时间:2024/06/08 17:30
CBitmap bkBMP; // BMP位图后台buffer
// 打开位图文件
void CGraphic::OnBnClickedBtnLoadbmp()
{
// TODO: Add your control notification handler code here
//--------------------------------------------------------------------
// 打开BMP位图并显示出来
//--------------------------------------------------------------------
CFileDialog openDlg(true,"*.bmp",NULL,NULL,"*.bmp|*.bmp||"); // creat open BMP dialog
if (openDlg.DoModal()==IDOK) // finish the photo choose
{
CString bmpName = openDlg.GetPathName(); // get BMP photo path
// 通过LoadImage获取位图数据,转存人BMP后台buffer
bkBMP.m_hObject = (HBITMAP)::LoadImage(NULL,bmpName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
}
else
return;
//--------------------------------------------------------------------
// 将打开的BMP位图数据取出
//--------------------------------------------------------------------
CBitmap* m_bBmp; // all BMP photo information buffer
m_bBmp = NULL;
if (m_bBmp != NULL)
{
m_bBmp->DeleteObject();
delete m_bBmp;
m_bBmp = NULL;
}
m_bBmp = new CBitmap; // set RAM for m_pBmp
LoadBitmapFile(openDlg.GetPathName(),*m_bBmp); // load all BMP photo information to buffer
BITMAP infBmp; // 创建一个BMP结构体,存储BMP位图信息
m_bBmp -> GetBitmap(&infBmp); // 这个结构体buffer接收打开的位图信息
delete m_bBmp;
// 将信息一一取出
int bmType = infBmp.bmType;
bmpCol = infBmp.bmWidth;
bmpRow = infBmp.bmHeight;
int widthBytes = infBmp.bmWidthBytes;
int planes = infBmp.bmPlanes;
int bitspixel = infBmp.bmBitsPixel;
m_graDlg_staBMPInfm.Format("bmType=%d, bmWidth=%d, bmHeight=%d, bmWidthBytes=%d, bmPlanes=%d, bmBitsPixel=%d",
bmType,bmpCol,bmpRow,widthBytes,planes,bitspixel);
SetDlgItemText(IDC_STA_BMPINF,m_graDlg_staBMPInfm); // 显示信息
Invalidate(); // 相应OnPaint消息
}
// 显示位图
void CGraphic::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CDC * pDC;
pDC = GetDlgItem(IDC_BMP_DISPLAY)->GetDC(); // 获取picture控件DC
CDC * bkDc = new CDC; // 创建后台DC buffer
bkDc -> CreateCompatibleDC(pDC); // 后台DC与picture控件DC相关联
bkDc -> SelectObject(bkBMP); // 后台DC存入之前已导入的BMP位图
// pDC -> BitBlt(0,0,bmpCol,bmpRow,bkDc,0,0,SRCCOPY); // picture控件显示(这种显示方法图片不能缩放)
pDC -> SetStretchBltMode(HALFTONE); // 调整图片缩放颜色失真
pDC -> StretchBlt(0,0,BMP_STRETCH_WIDTH,BMP_STRETCH_HEIGHT,bkDc,0,0,bmpCol,bmpRow,SRCCOPY); // 将图片按比例缩放
delete bkDc; // 不加此句,更改窗口大小时会影响BMP位图显示
}
关于StretchBlt函数和BitBlt函数的用法参考:http://blog.csdn.net/phenixyf/article/details/41827349
关于StretchBlt函数缩放后失真 参考:http://blog.csdn.net/phenixyf/article/details/41827715
- 加载位图并按比例缩放显示
- 页面图片显示(按比例缩放
- 让图片按比例缩放显示
- vc加载bmp位图并显示
- VC打开并缩放显示位图(.BMP)文件的方法
- Android 详解实现TextView加载带图片标签的Html并按比例缩放
- html中背景图按比例缩放全屏显示
- html中背景图按比例缩放全屏显示
- vc 加载bmp位图并显示的方法
- 加载显示位图
- 加载显示位图
- query预加载等比缩放图片并居中显示
- Webview加载String,并将图片缩放显示
- GCD加载图片并按比例拉伸展示
- 将一个图片按比例缩放显示在一个Frame中。
- Asp.net 让图片按比例进行缩放显示
- pc页面按比例缩放嵌入移动页面显示
- iOS超出屏幕的尺寸的图片按比例缩放显示
- 记录点滴之优化应用性能:Activity里面不要使用静态常量
- 批量删除
- iptables --- auto script
- camera录像过程一
- 想要月入10万以上??那就把它背下来!
- 加载位图并按比例缩放显示
- Gprof在Windows下的使用
- Theano深度学习入门
- DFS
- 并行化资源池队列1——部分有界队列
- Jquery的pagination前端分页技术,带查询功能
- 贪心算法--Communication System
- 第15周项目2阅读程序(1)
- stretchblt为什么会造成图片失真