📄 gdiobject.h
字号:
#ifndef _GOS_GIDOBJECT_H_
#define _GOS_GIDOBJECT_H_
#define RGB(r,g,b) (DWORD(r)|(DWORD(g)<<8)|(DWORD(b)<<16))
#define RGBA(r,g,b,a) (RGB(r,g,b)|DWORD(a<<24))
#define CLR_NONE 0xFFFFFFFEL
#define GETBMPWIDTHBYTES(wb,w,bpp) wb=(w)<0?-(w):(w);wb*=bpp;wb=((wb+31)>>5)<<2
#define GETBMPBITSBYTES(wb,w,h,bpp) GETBMPWIDTHBYTES(wb,w,bpp);wb*=(h)<0?-(h):(h)
#define MAKEBMPTYPE(rs,rw,gs,gw,bs,bw) ((rs)|((rw)<<5)|((gs)<<10)|((gw)<<15)|((bs)<<20)|((bw)<<25))
enum _tagGdiObject
{
BMP_OWNBUFFER=0x80000000,
BMP_TYPEMASK=0x7fffffff,
BMP_TYPEVER2=0x40000000,
BMP_TYPE888=MAKEBMPTYPE(16,8,8,8,0,8),
BMP_TYPE565=MAKEBMPTYPE(11,5,5,6,0,5),
BMP_TYPE555=MAKEBMPTYPE(10,5,5,5,0,5),
BMP_TYPE332=MAKEBMPTYPE(5,3,2,3,0,2),
BMP_TYPE32=BMP_TYPEVER2|BMP_TYPE888,
BMP_TYPE24=BMP_TYPE888,
BMP_TYPE8=BMP_TYPE332,
BMP_TYPE4=BMP_TYPEVER2|0x20000000,
BMP_TYPE1=BMP_TYPEVER2|0x10000000,
PS_NULL=0,
PS_SOLID=0xffffffff,
PS_DASH=0x7777777,
PS_DOT=0x55555555,
PS_DASHDOT=0x75757575,
PS_DASHDOTDOT=0x77557755,
HS_NULL=0,
HS_SOLID=-1,
HS_DOT=0xAA55AA55,
HS_BDIAGONAL=0x11224488,
HS_CROSS=0x11FF1111,
HS_FDIAGONAL=0x88442211,
HS_HORIZONTAL=0x00FF0000,
HS_VERTICAL=0x11111111,
HS_VWAVE=0x22442211,
HS_HWAVE=0x66990000,
};
typedef struct _tagBITMAP{
LONG bmType;
LONG bmWidth;
LONG bmHeight;
PRGBQUAD bmClrTable;
SHORT bmClrUsed;
SHORT bmBitsPixel;
LPVOID bmBits;
}BITMAP, *PBITMAP;
typedef struct _tagBITMAPFILEHEADER{
WORD bfType;
WORD bfSizeL;
WORD bfSizeH;
WORD bfReserved1;
WORD bfReserved2;
WORD bfOffBitsL;
WORD bfOffBitsH;
}BITMAPFILEHEADER, *PBITMAPFILEHEADER;
typedef struct _tagBITMAPINFOHEADER{
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
}BITMAPINFOHEADER, *PBITMAPINFOHEADER;
class CDC;
class CROP;
class CPalette;
class CCharSet;
class CFontFace;
class CBitmap
{
public:
BOOL CreateBitmap(PBITMAPFILEHEADER pFile,CDC* pCompatible=NULL);
BOOL CreateBitmap(LPCTSTR pszFileName,CDC* pCompatible=NULL);
BOOL CreateBitmap(int nWidth,int nHeight,CDC* pCompatible);
BOOL CreateBitmap(int nWidth,int nHeight,CBitmap* pCompatible);
BOOL CreateBitmap(int nWidth,int nHeight,int nBitcount);
void CreateBitmap(int nWidth,int nHeight,int nBitcount,LPVOID pBits);
void CopyBitmap(CBitmap* pSrcBitmap);
void DeleteObject();
CPalette* GetPalette()
{
if(m_bmp.bmClrUsed>=0)return NULL;
return (CPalette*)&m_bmp.bmClrTable;
}
CSize GetSize()
{
CSize size;
size.cx=m_bmp.bmWidth<0?-m_bmp.bmWidth:m_bmp.bmWidth;
size.cy=m_bmp.bmHeight<0?-m_bmp.bmHeight:m_bmp.bmHeight;
return size;
}
const BITMAP& GetBitmap(){return m_bmp;}
CBitmap(void){m_bmp.bmBits=NULL;}
~CBitmap(void){DeleteObject();}
private:
BITMAP m_bmp;
};
class CPalette
{
public:
CPalette(){m_pTable=NULL;}
~CPalette(){free(m_pTable);}
BOOL CreatePalette(CDC* pCompatile,CBitmap* pBitmap);
BOOL CreatePalette(CDC* pCompatile,PRGBQUAD pColorTable,int nCount);
BOOL CreatePalette(CDC* pCompatile,PCOLORREF pColorTable,int nCount);
void DeleteObject()
{ free(m_pTable);m_pTable=NULL; }
PDWORD GetTable()
{ return m_pTable; }
int GetSize()
{ return _msize(m_pTable)>>2; }
private:
PDWORD m_pTable;
};
class CPen
{
public:
CPen(){m_nStyle=0;}
CPen(CBitmap* pBitmap)
{ CreatePen(pBitmap); }
CPen(int nStyle,int nWidth,COLORREF crColor)
{ CreatePen(nStyle,nWidth,crColor); }
void CreatePen(CBitmap* pBitmap)
{
m_nStyle=-1;
m_crColor=COLORREF(pBitmap);
}
void CreatePen(int nStyle,int nWidth,COLORREF crColor)
{
m_nStyle=nStyle;
m_nWidth=nWidth;
m_crColor=crColor;
}
public:
int m_nStyle;
int m_nWidth;
COLORREF m_crColor;
};
class CBrush
{
public:
CBrush()
{ m_nStyle=0; m_crColor=0; }
CBrush(CBitmap* pBitmap)
{ CreateBrush(pBitmap); }
CBrush(int nStyle,COLORREF crColor)
{ CreateBrush(nStyle,crColor); }
void CreateBrush(CBitmap* pBitmap)
{
m_nStyle=-1;
m_crColor=COLORREF(pBitmap);
}
void CreateBrush(int nStyle,COLORREF crColor)
{
m_nStyle=nStyle;
m_crColor=crColor;
}
public:
int m_nStyle;
COLORREF m_crColor;
};
class CFont
{
public:
BOOL CreateFont(int nSize)
{ return CreateFont(NULL,NULL,nSize); }
BOOL CreateFont(CFontFace* pFontFace,int nSize)
{ return CreateFont(NULL,pFontFace,nSize); }
BOOL CreateFont(CCharSet* pCharSet,CFontFace* pFontFace,int nSize);
public:
CCharSet* m_pCharSet;
CFontFace* m_pFontFace;
int m_nSize;
};
#endif //_GOS_GIDOBJECT_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -