这次介绍图形编程接口(GDI)的移植方案。
图形接口
前置声明
class BPen;
class BBrush;
class BBitmap;
class BDC;
句柄
typedef BHANDLE BHGDIOBJ;
typedef BHGDIOBJ BHPEN;
typedef BHGDIOBJ BHBRUSH;
typedef BHANDLE BHDC;
typedef BHANDLE BHWND;
typedef BHANDLE BHBITMAP;
typedef BULONG BCOLORREF;
struct BColor {
BColor(){ red=0;green=0;blue=0;alpha=0;}
BBYTE red;
BBYTE green;
BBYTE blue;
BBYTE alpha;
};
BINLINE BCOLORREF BRGB( BBYTE r, BBYTE g, BBYTE b ){
return (((BULONG)r) << 16) + (((BULONG)g)<<8) + ((BULONG)b);
}
BINLINE BCOLORREF BRGB( BBYTE a, BBYTE r, BBYTE g, BBYTE b ){
return (((BULONG)a)<<24) + (((BULONG)r) << 16) + (((BULONG)g)<<8) + ((BULONG)b);
}
BINLINE BColor BCOLOR( BCOLORREF cr ) {
BColor color;
color.alpha = (BBYTE) (cr >> 24);
color.red = (BBYTE) (( cr >> 16 ) & 0xff );
color.green = (BBYTE) (( cr >> 8 ) & 0xff );
color.blue = (BBYTE) ( cr & 0x00ff );
return color;
}
struct BPOINT {
BPOINT() { x=0; y=0; }
BLONG x;
BLONG y;
};
typedef BPOINT * LPBPOINT;
struct BRECT {
BRECT(){ left = 0; top=0;right=0;bottom=0; }
BLONG left;
BLONG top;
BLONG right;
BLONG bottom;
};
GDI对象
class BAPI BGDIObj : public BObject
{
public:
BGDIObj();
BGDIObj( BHGDIOBJ hobj);
virtual ~BGDIObj();
BBOOL Attach( BHGDIOBJ hobj);
BHGDIOBJ Detach();
BHGDIOBJ Handle();
BHGDIOBJ operator()();
BBOOL operator()( BHGDIOBJ hobj);
BBOOL operator=( BHGDIOBJ hobj);
protected:
virtual BVOID Destroy();
BHGDIOBJ m_hGDIObj;
};
画笔
class BAPI BPen : public BGDIObj
{
public:
BPen();
BPen( HPEN hpen);
virtual ~BPen();
BULONG CreatePen(
BINT fnPenStyle, // pen style
BINT nWidth, // pen width
BCOLORREF crColor // pen color
);
BHPEN operator()();
BBOOL operator()( BHPEN hobj);
BBOOL operator=( BHPEN hobj);
};
画刷
class BAPI BBrush : public BGDIObj
{
public:
BBrush();
BBrush(BHBRUSH hbrush);
virtual ~BBrush();
BULONG CreateSolidBrush(
BCOLORREF crColor // brush color value
);
BULONG CreatePatternBrush( BHBITMAP hbmp );
};
位图
class BAPI BBitmap : public BGDIObj
{
public:
BBitmap();
BBitmap(BHBITMAP hbmp);
virtual ~BBitmap();
BBOOL LoadBitmap( LPCWSTR lpszResourceName );
BBOOL CreateCompatibleBitmap( BHDC hdc, BINT nWidth, BINT nHeight );
};
图形设备
class BAPI BDC : public BObject {
public:
BDC();
BDC( BHDC hdc);
BDC( const BDC & dc );
virtual ~BDC();
BBOOL Attach( BHDC hdc);
BHDC Detach( );
BHDC Handle() const;
BBOOL CreateCompatibleDC( BHDC hdc);
BBOOL CreateCompatibleDC( BDC & dc);
BHDC operator()()const ;
BBOOL operator()( BHDC hdc);
BBOOL operator=( BHDC hdc);
BHDC operator=( const BDC & dc );
BHGDIOBJ SelectObject(
BHGDIOBJ hgdiobj // handle to object
);
BHPEN SelectObject( BPen & pen );
BHBRUSH SelectObject( BBrush & brush);
BCOLORREF SetPixel(
BINT X, // x-coordinate of pixel
BINT Y, // y-coordinate of pixel
BCOLORREF crColor // pixel color
);
BBOOL Polyline(
BCONST BPOINT *lppt, // array of endpoints
BINT cPoints // number of points in array
);
BBOOL Polygon(
BCONST BPOINT *lppt, // array of endpoints
BINT cPoints // number of points in array
);
BBOOL TextOut(
BINT nXStart, // x-coordinate of starting position
BINT nYStart, // y-coordinate of starting position
LPCWSTR lpString, // character string
BINT cbString // number of characters
);
BBOOL Rectangle( const BRECT & rc );
BBOOL FillRect( const BRECT & rc );
BBOOL Bitblt( BHDC hdcsrc, const BRECT &rcsrc, const BRECT &rcdst , BINT op );
protected:
BHDC m_hdc;
};
发表于 @ 2007年03月31日 10:26:00|评论(loading...)|编辑