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);

}

CBCGPImage的GetSize的问题及解决方法的更多相关文章

  1. IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法

    直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...

  2. MVVM框架从WPF移植到UWP遇到的问题和解决方法

    MVVM框架从WPF移植到UWP遇到的问题和解决方法 0x00 起因 这几天开始学习UWP了,之前有WPF经验,所以总体感觉还可以,看了一些基础概念和主题,写了几个测试程序,突然想起来了前一段时间在W ...

  3. iPhone Anywehre虚拟定位提示“后台服务未启动,请重新安装应用后使用”的解决方法

    问题描述: iPhone越狱了,之后在Cydia中安装Anywhere虚拟定位,但是打开app提示:后台服务未启动,请重新安装应用后使用. 程序无法正常使用... 解决方法: 打开Cydia-已安装, ...

  4. python中IndentationError: expected an indented block错误的解决方法

    IndentationError: expected an indented block 翻译为IndentationError:预期的缩进块 解决方法:有冒号的下一行要缩进,该缩进就缩进

  5. js闭包for循环总是只执行最后一个值得解决方法

    <style> li{ list-style: none;width:40px;height: 40px;text-align:center;line-height: 40px;curso ...

  6. mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法!

    mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法! 修改mysql5.7的配置文件即可解决,方法如下: linux版:找到mysql的安装路径进入默认的为/usr/shar ...

  7. maven常见异常以及解决方法

    本文写的是我在整合ssm框架时遇到的一些问题,我估计很多人也会遇到,所以,这里作为一个总结,希望能够帮助大家解决问题 一,加入shiro组件时抛出的异常 加入步骤(略) 问题 1,保存后,无法导入sh ...

  8. WebEssentials 在vs2013 update5安装报错的解决方法.

    WebEssentials 最高支持到update4 如果更新到了update5 RC, 则无法直接安装. 解决方法是 1,下载WebEssentials2013.vsix 文件. 2, 安装7zip ...

  9. [异常解决] windows用SSH和linux同步文件&linux开启SSH&ssh client 报 algorithm negotiation failed的解决方法之一

    1.安装.配置与启动 SSH分客户端openssh-client和openssh-server 如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有 ...

随机推荐

  1. [转]使用jquery dataTable

    本文转自:http://blog.csdn.net/llhwin2010/article/details/8663753 jQuery 的插件 dataTables 是一个优秀的表格插件,提供了针对表 ...

  2. linux 下库的深入调研

    linux操作系统中,linux库文件路径还是比较常用的,于是我研究了一下linux库文件路径,在这里拿出来和大家分享一下,希望对大家有用. 库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程 ...

  3. Spring课程 Spring入门篇 1-3Spring框架

    课程链接: 1 框架与类库的区别: 框架封装了逻辑,高内聚,类库是松散的工具组合 框架专注于某一个领域,类库通用性较强 2 为什么使用框架: a 业务系统日趋复杂 b 重用度高,开发效率和质量提高 c ...

  4. 基于 MUI 构建一个具有 90 +页面的APP应用

    前言 mui是一款接近原生App体验的前端框架,只需要掌握前端技术就可以开发APP应用,官方有提供功能比较全面的demo版本, 但在实战中总会遇到一些不可避免但坑,对于没有接触过mui的开发者,难免会 ...

  5. Oracle笔记4-pl/sql-分支/循环/游标/异常/存储/调用/触发器

    一.pl/sql(Procedure Language/SQL)编程语言 1.概念 PL/SQL是Oracle数据库对SQL语句的扩展.在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把 ...

  6. ArcSDE空间数据库中SDE用户使用探讨(转)

    ArcSDE作为空间数据库解决方案,应用非常广泛,本短文将尝试描述SDE的工作机制,简要说明空间数据 库中SDE用户的使用方法. ArcSDE如何工作 ArcSDE属于中间件技术,其本身并不能够存储空 ...

  7. Java笔记 —— this 关键字

    Java笔记 -- this 关键字 h2{ color: #4ABCDE; } a{ color: blue; text-decoration: none; } a:hover{ color: re ...

  8. Unity3D 调用Android与IOS的剪贴板

    Unity3D剪贴板 最近遇到一个需要调用Android与IOS设备本身剪贴板的需求,就是在Unity中,要将文本复制到设备本身的剪贴板中,然后在其他应用程序中都能粘贴. 最开始在网上查到的方式是使用 ...

  9. 第四章 T-SQL编程

    1.前言->此T-SQL编程是基于sql server开发环境->关键字:T-SQL编程:游标:视图和索引 2.T-SQL编程基础->标识符:常规标识符必须以汉字.字母.下划线_.@ ...

  10. Django Field lookups (字段查找)

    字段查找是指定SQL WHERE子句的核心内容的方式. 它们被指定为QuerySet方法filter().exclude()和get()的关键字参数. 1.exact:精确查找.如果为比较提供的值为N ...