在这里我假定读者已经利用MFC的类向导生成了一个SDI界面的程序代码。接下来的你只需要在CView派生类的OnDraw成员函数中加入绘图代码就可以了。在这里我需要解释一下MFC应用程序中OnDraw函数的作用,OnDraw函数会在窗口需要重绘时自动被调用,传入的参数CDC*
pDC对应的就是DC环境。使用OnDraw的优点就在于在你使用打印功能的时候传入OnDraw的DC环境将会是打印机绘图环境,使用打印预览时传入的是一个称为CPreviewDC的绘图环境,所以你只需要一份代码就可以完成窗口/打印预览/打印机绘图三重功能。
MFC输出文字一般使用CDC::BOOL TextOut( int x, int y, const
CString& str )和CDC::int DrawText( const
CString& str, LPRECT lpRect, UINT nFormat
)两个函数,对TextOut来讲只能输出单行的文字,而DrawText可以指定在一个矩形中输出单行或多行文字,并且可以规定对齐方式和使用何种风格。nFormat可以是多种以下标记的组合(利用位或操作)以达到选择输出风格的目的。
MFC在输出文字时如果希望改变文字的颜色,你可以利用CDC::SetTextColor( COLORREF crColor
)进行设置,如果你希望改变背景色就利用CDC::SetBkColor( COLORREF crColor
),很多时候你可能需要透明的背景色你可以利用CDC::SetBkMode( int nBkMode )设置。
接下来讲讲如何创建字体,你可以创建的字体有两种:库存字体CDC::CreateStockObject(
int nIndex )和自定义字体。
在创建非库存字体时需要填充一个LOGFONT结构并使用CFont::CreateFontIndirect(const LOGFONT*
lpLogFont ),或使用CFont::CreateFont( int nHeight, int nWidth, int
nEscapement, int nOrientation, int nWeight, BYTE bItalic, BYTE
bUnderline, BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecision,
BYTE nClipPrecision, BYTE nQuality, BYTE nPitchAndFamily, LPCTSTR
lpszFacename )其中的参数和LOGFONT中的分量有一定的对应关系。
加载中,请稍候......