📄 dib.h
字号:
// Dib.h: interface for the CDib class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_DIB_H__5A1A5E6C_8284_4F5A_90B1_744C788281AB__INCLUDED_)
#define AFX_DIB_H__5A1A5E6C_8284_4F5A_90B1_744C788281AB__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifndef _INC_DIBAPI
#define _INC_DIBAPI
// DIB句柄
DECLARE_HANDLE(HDIB);
// DIB常量
#define PALVERSION 0x300
/* DIB宏 */
// 判断是否是Win 3.0的DIB
#define IS_WIN30_DIB(lpbi) ((*(LPDWORD)(lpbi)) == sizeof(BITMAPINFOHEADER))
// 计算矩形区域的宽度
#define RECTWIDTH(lpRect) ((lpRect)->right - (lpRect)->left)
// 计算矩形区域的高度
#define RECTHEIGHT(lpRect) ((lpRect)->bottom - (lpRect)->top)
// 在计算图像大小时,采用公式:biSizeImage = biWidth' × biHeight。
// 是biWidth',而不是biWidth,这里的biWidth'必须是4的整倍数,表示
// 大于或等于biWidth的,离4最近的整倍数。WIDTHBYTES就是用来计算
// biWidth'
#define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4)
#endif //!_INC_DIBAPI
class CDib
{
public:
CDib();
virtual ~CDib();
protected:
HDIB m_hDib; //位图句柄
CPalette m_Pal; //调色板对象
public:
BOOL m_bIsImageMap; //是否设置地图范围
float m_dScale; //原始图的比例尺
float m_x1, m_y1, m_x2, m_y2;//地图范围
public:
// 函数原型
BOOL PaintDIB (HDC, LPRECT, LPRECT);//显示位图
HGLOBAL CopyHandle (HGLOBAL h); //复制位图
long GetWidth(); //获得位图宽度
long GetHeight(); //获得位图高度
BOOL SaveDIB (LPCTSTR lpszDibName);//保存位图
BOOL ReadDIBFile(LPCTSTR lpszDibName);//读取位图
protected:
BOOL CreateDIBPalette(HDIB hDIB);//
LPTSTR FindDIBBits (LPTSTR lpbi);
LONG DIBWidth (LPTSTR lpDIB);
LONG DIBHeight (LPTSTR lpDIB);
WORD PaletteSize (LPTSTR lpbi);
WORD DIBNumColors (LPTSTR lpbi);
WORD DIBBitCount(LPTSTR lpbi);
};
#endif // !defined(AFX_DIB_H__5A1A5E6C_8284_4F5A_90B1_744C788281AB__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -