if( m_bmp.m_hObject != NULL )
m_bmp.DeleteObject();
//载入图片
HBITMAP hbmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), _T("txt.bmp"),
IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE);
//该断程序用来取得加载的BMP的信息
m_bmp.Attach( hbmp ); CRect rect;
GetDlgItem(IDC_STATIC_PIC)->GetWindowRect(&rect);//得到static的rect
ScreenToClient(&rect);
InvalidateRect(rect);
CPaintDC dc(GetDlgItem(IDC_STATIC_PIC));
CRect rcclient;
GetDlgItem(IDC_STATIC_PIC)->GetClientRect(&rcclient);
CDC memdc;
memdc.CreateCompatibleDC(&dc);
CBitmap bitmap;
//初始化一个位图,于设备(本例中为 PictureBox)具有相同的调色板和分辨率
bitmap.CreateCompatibleBitmap(&dc,rcclient.Width(),rcclient.Height());
memdc.SelectObject( &bitmap );
CWnd::DefWindowProc(WM_PAINT, (WPARAM)memdc.m_hDC , 0);
CDC maskdc;
maskdc.CreateCompatibleDC(&dc);
CBitmap maskbitmap;
maskbitmap.CreateBitmap(rcclient.Width(), rcclient.Height(), 1, 1, NULL);
maskdc.SelectObject( &maskbitmap );
maskdc.BitBlt(0, 0, rcclient.Width(), rcclient.Height(), &memdc, rcclient.left, rcclient.top, SRCCOPY);
CBrush brush;
brush.CreatePatternBrush(&m_bmp);
dc.FillRect(rcclient, &brush);
brush.DeleteObject();
这个是图像显示的函数,如何能让显示的bmp图像在图像控件中居中显示呢。求助各位大侠。
m_bmp.DeleteObject();
//载入图片
HBITMAP hbmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), _T("txt.bmp"),
IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE);
//该断程序用来取得加载的BMP的信息
m_bmp.Attach( hbmp ); CRect rect;
GetDlgItem(IDC_STATIC_PIC)->GetWindowRect(&rect);//得到static的rect
ScreenToClient(&rect);
InvalidateRect(rect);
CPaintDC dc(GetDlgItem(IDC_STATIC_PIC));
CRect rcclient;
GetDlgItem(IDC_STATIC_PIC)->GetClientRect(&rcclient);
CDC memdc;
memdc.CreateCompatibleDC(&dc);
CBitmap bitmap;
//初始化一个位图,于设备(本例中为 PictureBox)具有相同的调色板和分辨率
bitmap.CreateCompatibleBitmap(&dc,rcclient.Width(),rcclient.Height());
memdc.SelectObject( &bitmap );
CWnd::DefWindowProc(WM_PAINT, (WPARAM)memdc.m_hDC , 0);
CDC maskdc;
maskdc.CreateCompatibleDC(&dc);
CBitmap maskbitmap;
maskbitmap.CreateBitmap(rcclient.Width(), rcclient.Height(), 1, 1, NULL);
maskdc.SelectObject( &maskbitmap );
maskdc.BitBlt(0, 0, rcclient.Width(), rcclient.Height(), &memdc, rcclient.left, rcclient.top, SRCCOPY);
CBrush brush;
brush.CreatePatternBrush(&m_bmp);
dc.FillRect(rcclient, &brush);
brush.DeleteObject();
这个是图像显示的函数,如何能让显示的bmp图像在图像控件中居中显示呢。求助各位大侠。
解决方案 »
- 新手求助!!急!
- 问下有没有这样的数据结构或算法,求实现方法
- 关于MoveFile的问题
- 求助,老是显示missing ';' before '}'这个错误,请教一下,内附相关详细代码。
- 高手们,如何在任意位置绘制一个XP风格的最大化按钮?(能够随着系统设置的改变而改变)
- 问两个SoftIce命令的用法:
- 请教SDK编程,如何生产MDI窗口!
- 如何跨类访问
- 有《精通Visual C++图象编程》下吗?
- 谢谢,请问在ToolBar上如何实现ToolBar上按钮的运行时的添加和删除????
- 下面的switch +case 和 线程同步用的有神马问题吗?我的主管加主管的主管都不会
- 编译cpp出的错误
比如图的大小为(nWidth, nHeight), 你显示的区域为CRect rc(...);
最终图片将要显示的区域CRect rect;
rect.left = rc.left + (rc.Width()-nWidth)/2;
rect.top = rc.top + (rc.Height() - nHeight)/2;
rect.right = rect.left + nWidth;
rect.bottom = rect.top + nHeight;