CBCGPImage的GetSize的问题及解决方法
2018-07-16 02:36:07来源:博客园 阅读 ()
BCGControlBar Pro for MFC 25.10是目前(2018-07-16)网上能够找到的最新能够使用的版本,我配合Visual Studio 2010使用。在单文档MFC程序的视图中上下/左右居中显示一幅图片,最终效果如下:
发现关于CBCGPImage的一个奇怪问题,如下:
// m_Image.GetSize()首次调用得到的图片尺寸为(0,0),
// 第二次DrawImage调用得到正确的图片像素尺寸
// m_Image.GetSize(m_pGM) 每次都可以得到正确的图片像素尺寸
程序源代码如下:
1、在SDI程序的stdafx.h文件末尾,添加:
#include <BCGCBProInc.h>
2、在SDI程序的ChildView.h文件的CChildView类定义中,添加:
CBCGPGraphicsManager* m_pGM;
CBCGPImage m_Image;
void DrawImage();
3、在SDI程序的ChildView.cpp 文件中,添加:
3.1在构造函数CChildView::CChildView()中添加:
m_pGM = NULL;
m_Image.Load(TEXT("D:\\myPicture.JPG")); // 导入提前定义好的图片文件
3.2在析构函数CChildView:: ~CChildView()中添加:
if (m_pGM != NULL) delete m_pGM;
3.3在绘图函数void CChildView::OnPaint()中添加:
if (m_pGM == NULL) m_pGM = CBCGPGraphicsManager::CreateInstance();
if (m_pGM == NULL) return;
m_pGM->BindDC(&dc);
m_pGM->BeginDraw();
m_pGM->Clear(CBCGPColor::White);
DrawImage();
m_pGM->EndDraw();
3.3定义显示图片函数void CChildView::DrawImage():
void CChildView::DrawImage()
{
ASSERT_VALID(m_pGM);
CRect rectClient;
GetClientRect(rectClient);
// m_Image.GetSize()首次调用得到的图片尺寸为(0,0),
// 第二次DrawImage调用得到正确的图片像素尺寸
// m_Image.GetSize(m_pGM) 每次都可以得到正确的图片像素尺寸
CBCGPSize imgSize = m_Image.GetSize(m_pGM);
CBCGPPoint pntPos = CBCGPPoint(
max( 0, 0.5*(rectClient.Width() - imgSize.Width()) ),
max( 0, 0.5*(rectClient.Height() - imgSize.Height()) ) );
m_pGM->DrawImage(m_Image, pntPos, imgSize);
}
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:线段树的应用一中模拟lites
下一篇:记忆化搜索(例)
- WDK驱动调试问题点滴 2020-04-21
- 螺旋矩阵问题 2020-04-18
- 用C++实现:完美的代价 2020-04-15
- 用C++实现:FJ的字符串打印 2020-04-04
- 递归函数使用动态数组遇到的问题 2020-03-26
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash