⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chapter5_2view.cpp

📁 EVC下的画图实例
💻 CPP
字号:
// chapter5_2View.cpp : implementation of the CChapter5_2View class
//

#include "stdafx.h"
#include "chapter5_2.h"

#include "chapter5_2Doc.h"
#include "chapter5_2View.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CChapter5_2View

IMPLEMENT_DYNCREATE(CChapter5_2View, CView)

BEGIN_MESSAGE_MAP(CChapter5_2View, CView)
	//{{AFX_MSG_MAP(CChapter5_2View)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//    DO NOT EDIT what you see in these blocks of generated code!
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CChapter5_2View construction/destruction

CChapter5_2View::CChapter5_2View()
{
	// TODO: add construction code here

}

CChapter5_2View::~CChapter5_2View()
{
}

BOOL CChapter5_2View::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CChapter5_2View drawing

void CChapter5_2View::OnDraw(CDC* pDC)
{
	CChapter5_2Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

/**********************************************************/
/*           SetPixel、MoveTo、LineTo等函数范例           */
/*         看本例效果请将注释删除并编译后执行即可		  */
/**********************************************************/
/*
	pDC->SetPixel(80,80,RGB(0,0,255));
	pDC->MoveTo(10,250);
	pDC->LineTo(250,250);
	CRect rect1(30,30,200,200);
	POINT point1,point2;
	point1.x=30;
	point1.y=30;
	point2.x=50;
	point2.y=50;
	//pDC->Arc(rect1,point1,point2);
	pDC->Rectangle(200,80,250,200);
	pDC->Ellipse(60,10,200,210);

	CRect rect2(50,50,210,210);
	CRect rect3(10,10,70,70);
	CRect rect4(30,30,90,40);



	CBrush brush(RGB(0,0,255));
	pDC->DrawFocusRect(rect2);
	pDC->FillRect(rect3,&brush);
	pDC->FrameRect(rect4,&brush);
	pDC->InvertRect(rect4);
	
*/
/**********************************************************/
/*           SelectStockObject()函数范例             */
/*         看本例效果请将注释删除并编译后执行即可		  */
/**********************************************************/
/*
	//定义椭圆的边界
	CRect rect(50,50,210,210);

	//声明CPen类对象指针
	CPen *pOldPen;

	//调用CDC类成员函数SelectStockObject()选用黑色画笔,并将当前画笔存人指针pOldPen
	pOldPen=(CPen*)pDC->SelectStockObject(BLACK_PEN);

	//凋用CDC类成员函数Ellipse()绘制椭圆.
	pDC->Ellipse(rect);

	//调用CDC类成员函数SelectObject()恢复以前的画笔。
	pDC->SelectObject(pOldPen);
*/	
/**********************************************************/
/*           创建自定义画笔一范例						  */
/*         看本例效果请将注释删除并编译后执行即可		  */
/**********************************************************/
/*
	//建立红色画笔
	CPen hRedPen(PS_SOLID,1,RGB(255,0,0));
	
	CPen* pBulePen;
	CPen hGreenPen;
	CPen* pPrePen;
	//建立蓝色画笔(用new操作符)
	pBulePen=new CPen(PS_SOLID,1,RGB(0,0,255));
	//调用CPen成员函数CreatePen()生成绿色画笔
	hGreenPen.CreatePen(PS_SOLID,1,RGB(0,255,0));
	
	//调用CDC成员函数SelectObject()选用绿色画笔,同时返回当前画笔指针,并将该指针保存在pPrePen.
	if (pPrePen=pDC->SelectObject(&hRedPen))
	{
		//用红色笔画椭圆
		pDC->Ellipse(40,70,230,160);
		//选用绿色笔画椭圆
		pDC->SelectObject(&hGreenPen);
		pDC->Ellipse(60,70,210,160);

		//选用蓝色笔画椭圆
		pDC->SelectObject(pBulePen);
		pDC->Ellipse(80,70,190,160);

		//恢复最初的画笔
		pDC->SelectObject(pPrePen);
	}
	//删除蓝色笔指针
	delete pBulePen;
*/
/**********************************************************/
/*           创建自定义画笔二范例						  */
/*         看本例效果请将注释删除并编译后执行即可		  */
/**********************************************************/
/*
	CPen hPen;
	CPen *pPen;

	//声明LOGPEN类型的变量logPen
	LOGPEN logPen;

	//声明并初始化POINT类型的变量With
	POINT With={20,0};

	//初始化LOGPEN类型变量建立新画笔
	logPen.lopnStyle=PS_DASH;
	logPen.lopnWidth=With;
	logPen.lopnColor=RGB(0,255,0);
	
	//调用CPen成员函数CreatePenIndirect生成新画笔
	hPen.CreatePenIndirect(&logPen);

	//调用CDC成员函数SelectObject()选用新画笔,同时返回当前画笔指针,并将该指针保存在pPen.
	pPen=pDC->SelectObject(&hPen);

	//用新画笔画椭圆
	pDC->Ellipse(20,30,210,220);

	//恢复最初的画笔
	pDC->SelectObject(pPen);
*/
/**********************************************************/
/*                   画刷使用范例                       */
/*         看本例效果请将注释删除并编译后执行即可		  */
/**********************************************************/
/*
	//红色画刷
	CBrush SolidBrush(RGB(255,0,0));
	//调用CBrush成员函数SelectObject()选用红色画刷,同时返回当前画刷的指针,并将该指针保存在
	CBrush * pBrush=pDC->SelectObject(&SolidBrush);
	//用红色画刷画实心矩形。
	pDC->Rectangle(20,20,100,100);
	//调用CDC类成员函数SelectObject()回复原画刷
	pDC->SelectObject(&pBrush);
*/
/**********************************************************/
/*                   位图画刷使用范例                       */
/*         看本例效果请将注释删除并编译后执行即可		  */
/**********************************************************/
/*
CBitmap Pattern;
CBrush  PatternBrush;
CBrush *pPerBrush;

Pattern.LoadBitmap(IDB_BITMAP1);
PatternBrush.CreatePatternBrush(&Pattern);
pPerBrush=pDC->SelectObject(&PatternBrush);
pDC->Ellipse(30,10,200,200);
pDC->SelectObject(pPerBrush);
*/
/**********************************************************/
/*               方便的画笔和刷子类使用范例               */
/*         看本例效果请将注释删除并编译后执行即可		  */
/**********************************************************/
/*
CColorPen	_penRed(pDC->m_hDC,RGB(255,0,0));	 //创建红色画笔
pDC->LineTo(210,210);							 //画线
CColorBrush	_brushGreen(pDC->m_hDC,RGB(0,255,34));//创建绿色刷子
pDC->Ellipse(CRect(0,0,200,100));				 //画椭圆

*/
/**********************************************************/
/*               绘图模式使用范例		                  */
/*         看本例效果请将注释删除并编译后执行即可		  */
/**********************************************************/\
	CPen newPen;
	CPen *oldPen;
	
	//调用CPen成员函数CreatePen()创建风格为PS_SOLID、线宽为5、颜色为绿色的画笔
	newPen.CreatePen(PS_SOLID,5,RGB(0,255,0));
	//调用CDC成员函数SelectObject()选用新创建的画笔,并将当前画笔指针传递给对象oldPen
	oldPen=pDC->SelectObject(&newPen);

	//调用CDC成员函数SetROP2()将绘图模式设置为R2_NOT
	pDC->SetROP2(R2_NOT);

	//调用CDC类成员函数画矩形,画线
	pDC->Rectangle(50,30,120,120);
	pDC->MoveTo(200,30);
	pDC->LineTo(200,200);
	
	//调用CDC类成员函数SelectObject()恢复原画笔。
	pDC->SelectObject(&oldPen);

}
SRCCOPY   
/////////////////////////////////////////////////////////////////////////////
// CChapter5_2View diagnostics

#ifdef _DEBUG
void CChapter5_2View::AssertValid() const
{
	CView::AssertValid();
}

void CChapter5_2View::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CChapter5_2Doc* CChapter5_2View::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CChapter5_2Doc)));
	return (CChapter5_2Doc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CChapter5_2View message handlers

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -