友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

C语言实例教程(PDF格式)-第115章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






成员函数CreateHatchBrush创建一个阴影刷子,其原型如下:  



BOOL CreateHatchBrush( int nIndex; COLORREF crColor );  


…………………………………………………………Page 543……………………………………………………………

参数nIndex指定了刷子的样式,它可以为以下常量之一:  



 HS_BDIAGONAL:  由左向右下斜45 

               度的阴影线  



 HS_CROSS :    水平和垂直的交 

               叉线  



 HS_DIAGCROSS:  45度的斜交叉线  



 HS_FDIAGONAL:  由左向右上斜45 

               度的阴影线  



 HS_VERTICAL :  垂直阴影线  



参数crColor指定和阴影线所使用的前景色。  



成员函数CreatePatternBrush以一个指向CBitmap对象的指针为参 

数,它使用该CBitmap所代表的位图的左上角8像素'   8像素的区域来 

创建一个图案刷子。  



  l 注意:  



    一个刷子所使用的 图案的大小总是8像素  8像素大小。即使提供 

  l                                 ' 

    给成员函数CreatePatternBrush的位图大于这个大小,也仅有左 

    上角的8像素' 8像素被使用。  



示例程序BrushDemo演示了各种刷子的使用,在工程包括了两个位图 

资源IDB_BRUSH1和IDB_BRUSH2,分别如图9。5所示。  



                             

                                     

                     IDB_BRUSH1  IDB_BRUSH2  



               图9。 5 在工程BrushDemo中使用的位图资源  



程序BrushDemo的代码清单如下:  



#include   



#include   



#include   


…………………………………………………………Page 544……………………………………………………………

#define IDB_BRUSH1 101  



#define IDB_BRUSH2 102  



// 派生应用程序类  



class CMyApp : public CWinApp  



{  



public:  



virtual BOOL InitInstance();  



};  



// 派生窗口类  



class CMyWnd : public CFrameWnd  



{  



protected:  



// 声明消息处理函数  



afx_msg void OnPaint();  



DECLARE_MESSAGE_MAP();  



};  



// 初始化应用程序实例  



BOOL CMyApp::InitInstance()  



{  



// 创建应用程序的主窗口  



CMyWnd *pWnd=new CMyWnd;  



pWnd…》Create(NULL; 〃刷子示例〃);  



// 显示应用程序主窗口并刷新其客户区  



pWnd…》ShowWindow(SW_SHOW);  



pWnd…》UpdateWindow();  



// 在主窗口关闭时终止应用程序的执行线程  


…………………………………………………………Page 545……………………………………………………………

m_pMainWnd=pWnd;  



return TRUE;  



}  



// 声明唯一的应用程序对象  



CMyApp MyApp;  



// 应用程序主窗口的消息映射  



BEGIN_MESSAGE_MAP(CMyWnd; CWnd)  



ON_WM_PAINT()  



END_MESSAGE_MAP()  



// 应用程序主窗口的重绘函数  



void CMyWnd::OnPaint()  



{  



// 获得窗口的客户区设备上下文句柄  



CPaintDC dc(this);  



// 更改设备上下文所使用的当前字体,使之更适合于文本输出  



LOGFONT lf;  



dc。GetCurrentFont()…》GetLogFont(&lf);  



lf。lfHeight=…12;  



lf。lfWidth=0;  



strcpy(lf。lfFaceName; 〃宋体〃);  



CFont font; *pOldFont;  



font。CreateFontIndirect(&lf);  



pOldFont=dc。SelectObject(&font);  



// 创建一个原色刷子  



{  



CBrush br; *pOldBrush;  


…………………………………………………………Page 546……………………………………………………………

br。CreateSolidBrush(RGB(128; 0; 128));  



pOldBrush=dc。SelectObject(&br);  



dc。Rectangle(10; 10; 160; 110);  



dc。SelectObject(pOldBrush);  



br。DeleteObject();  



dc。TextOut(10; 115; 〃原色刷子〃);  



}  



// 创建一个具有样式 HS_BDIAGONAL 的刷子  



{  



CBrush br; *pOldBrush;  



br。CreateHatchBrush(HS_BDIAGONAL; RGB(128; 0; 128));  



pOldBrush=dc。SelectObject(&br);  



dc。Rectangle(180; 10; 330; 110);  



dc。SelectObject(pOldBrush);  



br。DeleteObject();  



dc。TextOut(180; 115; 〃HS_BDIAGONAL〃);  



}  



// 创建一个具有样式 HS_CROSS 的刷子  



{  



CBrush br; *pOldBrush;  



br。CreateHatchBrush(HS_CROSS; RGB(128; 0; 128));  



pOldBrush=dc。SelectObject(&br);  



dc。Rectangle(350; 10; 500; 110);  



dc。SelectObject(pOldBrush);  



br。DeleteObject();  



dc。TextOut(350; 115; 〃HS_CROSS〃);  


…………………………………………………………Page 547……………………………………………………………

}  



// 创建一个具有样式 HS_DIAGCROSS 的刷子  



{  



CBrush br; *pOldBrush;  



br。CreateHatchBrush(HS_DIAGCROSS; RGB(128; 0; 128));  



pOldBrush=dc。SelectObject(&br);  



dc。Rectangle(520; 10; 670; 110);  



dc。SelectObject(pOldBrush);  



br。DeleteObject();  



dc。TextOut(520; 115; 〃HS_DIAGCROSS〃);  



}  



// 创建一个具有样式 HS_FDIAGONAL 的刷子  



{  



CBrush br; *pOldBrush;  



br。CreateHatchBrush(HS_FDIAGONAL; RGB(128; 0; 128));  



pOldBrush=dc。SelectObject(&br);  



dc。Rectangle(10; 140; 160; 240);  



dc。SelectObject(pOldBrush);  



br。DeleteObject();  



dc。TextOut(10; 245; 〃HS_FDIAGONAL〃);  



}  



// 创建一个具有样式 HS_VERTICAL 的刷子  



{  



CBrush br; *pOldBrush;  



br。CreateHatchBrush(HS_VERTICAL; RGB(128; 0; 128));  



pOldBrush=dc。SelectObject(&br);  


…………………………………………………………Page 548……………………………………………………………

dc。Rectangle(180; 140; 330; 240);  



dc。SelectObject(pOldBrush);  



br。DeleteObject();  



dc。TextOut(180; 245; 〃HS_VERTICAL〃);  



}  



// 创建一个使用位图图案的刷子  



{  



CBitmap bitmap;  



bitmap。LoadBitmap(IDB_BRUSH1);  



CBrush br; *pOldBrush;  



br。CreatePatternBrush(&bitmap);  



pOldBrush=dc。SelectObject(&br);  



dc。Rectangle(350; 140; 500; 240);  



dc。SelectObject(pOldBrush);  



br。DeleteObject();  



dc。TextOut(350; 245; 〃使用位图图案创建的刷子之一〃);  



}  



{  



CBitmap bitmap;  



bitmap。LoadBitmap(IDB_BRUSH2);  



CBrush br; *pOldBrush;  



br。CreatePatternBrush(&bitmap);  



pOldBrush=dc。SelectObject(&br);  



dc。Rectangle(520; 140; 670; 240);  



dc。SelectObject(pOldBrush);  



br。DeleteObject();  


…………………………………………………………Page 549……………………………………………………………

dc。TextOut(520; 245; 〃使用位图图案创建的刷子之二〃);  



}  



// 恢复设备上下文原有的 GDI 绘图对象  



dc。SelectObject(pOldFont);  



}  



                                             
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!