BOOL CTestView :: PaintDIB(HDC hDC,RECT des,RECT src, MYBITMAP myb){
BITMAPINFOHEADER* lpDIBHdr; // BITMAPINFOHEADER指针
BOOL bSuccess=FALSE; // 成功标志
HPALETTE hPal=NULL; // DIB调色板
HPALETTE hOldPal=NULL; // 以前的调色板
lpDIBHdr = myb.lpbmp;
// 找到DIB图像象素起始位置
int lw=WIDTHBYTES(myb.lpbmp->biWidth*8);
// 获取DIB调色板,并选中它
if (m_palDIB != NULL)
{
hPal = (HPALETTE) m_palDIB->m_hObject;
// 选中调色板
hOldPal = ::SelectPalette(hDC, hPal, TRUE);
}
// 设置显示模式
::SetStretchBltMode(hDC, COLORONCOLOR);
int bw =myb.lpbmp->biWidth;
int bh = myb.lpbmp->biHeight;
// 判断是调用StretchDIBits()还是SetDIBitsToDevice()来绘制DIB对象
if(des.right-des.left>=(src.right-src.left)&&
(des.bottom-des.top)>=(src.bottom-src.top)
)
{
// 原始大小,不用拉伸。
bSuccess = ::SetDIBitsToDevice(hDC, // hDC
0 , // DestX
0 , // DestY
bw , // nDestWidth
bh, // nDestHeight
0, // SrcX
0, // SrcY
0, // nStartScan
bh, // nNumScans
myb.data, // lpBits
(LPBITMAPINFO)lpDIBHdr, // lpBitsInfo
DIB_RGB_COLORS
); // wUsage
}
else
{
// 非原始大小,拉伸。
bSuccess = StretchDIBits(hDC, // hDC
des.left , // DestX
des.top , // DestY
des.right , // nDestWidth
des.bottom, // nDestHeight
src.left, // SrcX
src.top, // SrcY
src.right, // nStartScan
src.bottom, // nNumScans
myb.data, // lpBits
(LPBITMAPINFO)lpDIBHdr, // lpBitsInfo
DIB_RGB_COLORS,
SRCCOPY
); // wUsage
}
// 解除锁定
// 恢复以前的调色板
if (hOldPal != NULL)
{
::SelectPalette(hDC, hOldPal, TRUE);
}
// 返回
return bSuccess;
注意它们的第8个参数一个是uStartScan,为0,一个是nSrcWidth,不为0
分享到:
相关推荐
位图数据离文件头的偏移量。接下去的是位图信息头,它包括了位图的许多信息,比如位图 的宽度,高度和位图使用的颜色数。再后面是颜色表,它可能包含了2 个或更多的RGBQUAD 结构。最后面是位图图象的数据。
构建VC++6.0MFC基本对话框图片显示程序,调试通过VC++6.0显示多种位数BMP格式位图。
在列表框加载位图,动态更新位图大小,根据列表框数据的多少,加入滚动条
这份代码只是演示了如何加载位图文件(不是位图资源)并显示出来——这,只是针对网上对位图文件加载含糊地解说而已! <br>我的资源下载不需要积分,但如果你觉得对你有用,那就帮顶一下吧!@^-^@
VC6.0下bmp位图的读取与显示 一、 实验目的: 1、 掌握windows BMP格式位图文件的基本格式。 2、 会使用VC++读取图像数据并显示。 二、实验内容: 1、 在VC6.0环境下,生成MFC应用程序框架。 2、 在已生成的应用程序...
VISUAL C++ 6.0 数字图像编码 图像数据的读取与显示 可直接运行 并附源代码
运行环境:VC60 例程只支持512×512的位图(里面的数据数组为512*512),但程序可显示位图的完整信息,读者可根据位图信息中的水平、垂直像素数动态设定位图数组,就可以读出任意大小的位图了。
资源中是一个vs2008sp1 IDE中VC++ MFC 图片控件(Picture Control)显示资源位图(BMP)、文件位图(BMP)、其它格式文件图片(JPG\PNG\BMP)的实例,可供参考。
vc下读取txt文件中的多个脚底压力数据,并分别创建出bmp位图,还将总的压力求出,显示出总的压力分布图
基于VC_实现的实时数据监控和显示方法.pdf 基于VC_实现的数字与字母识别.pdf 基于VC_开发虚拟数字键盘ActiveX控件.pdf 基于VC_的1553B总线接口仿真软件设计.pdf 基于VC_的3G无线上网卡主功能设计与实现.pdf 基于VC_...
VC MAPX 经典教程 chm 版 01vcgis控件显示 02vcmapx工具条 03全图工具 04图层控制控件实现 05经纬度显示 06测距工具 ...15在地图上显示位图文字 index 以上内容为本人开发 wince下 GIS 项目的总结.
2.引入了有关图形处理的数据结构:HBITMAP (设备相关位图)、HDC(设备场景).介绍了位图拷贝命令BitBlt()。 3.学习C 的功能函数的定义和使用方法。 4.学习调用图形的MFC方法LoadImage()和显示图形的方法 5.学习在...
基于VC_实现的实时数据监控和显示方法.pdf 基于VC_实现的数字与字母识别.pdf 基于VC_开发虚拟数字键盘ActiveX控件.pdf 基于VC_的1553B总线接口仿真软件设计.pdf 基于VC_的3G无线上网卡主功能设计与实现.pdf 基于VC_...
为了对工业控制类软件中采集的大量数据进行图形化显示,采用Visual C++设计并实现了一个可用于多 个波形显示的ActiveX 控件。该控件采用位图双缓冲机制,避免了图像闪烁。显示图数量、前景色、背景色及线型均 可设;...
基于VC_实现的实时数据监控和显示方法.pdf 基于VC_实现的数字与字母识别.pdf 基于VC_开发虚拟数字键盘ActiveX控件.pdf 基于VC_的1553B总线接口仿真软件设计.pdf 基于VC_的3G无线上网卡主功能设计与实现.pdf 基于VC_...
引入了有关图形处理的数据结构:HBITMAP (设备相关位图)、HDC(设备场景).介绍了位图拷贝命令BitBlt()。 3.学习C++的功能函数的定义和使用方法。 4.学习调用图形的MFC方法LoadImage()和显示图形的方法 5....
实例8 多视图窗口数据显示 第3章 实现microsoft风格 实例9 visual studio风格的窗口 实例10 internetexplorer4. 0风格的窗口 实例11 outlook风格的窗口 实例12 状态栏中的任务栏 第4章 超文本界面 实例13 ...
...................\Visual C++中实现对图像数据的读取显示.doc ...................\Visual C++中的图形特技.doc ...................\Visual C++模态对话框消息处理机制的分析.doc ...................\...
实例081 多级数据库树状结构数据显示 129 实例082 节点拖动功能的树控件 131 实例083 带复选功能的树状结构 134 实例084 三态效果树控件 135 实例085 修改树控件节点连线颜色 137 实例086 位图背景树控件 138 实例...