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

📄 brushdemoview.cpp

📁 画刷-展示了如何在MFC下画图 MFC下编成比API下编成更简单 因为MFC自带一些代码
💻 CPP
字号:
// BrushDemoView.cpp : implementation of the CBrushDemoView class
//

#include "stdafx.h"
#include "BrushDemo.h"

#include "BrushDemoDoc.h"
#include "BrushDemoView.h"



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

/////////////////////////////////////////////////////////////////////////////
// CBrushDemoView

IMPLEMENT_DYNCREATE(CBrushDemoView, CView)

BEGIN_MESSAGE_MAP(CBrushDemoView, CView)
	//{{AFX_MSG_MAP(CBrushDemoView)
		// 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
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBrushDemoView construction/destruction

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

}

CBrushDemoView::~CBrushDemoView()
{
}

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

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CBrushDemoView drawing

void CBrushDemoView::OnDraw(CDC* pDC)
{
	CBrushDemoDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
CRect rect;
	CBrush *pOldBrush;							// 保存系统原有画刷
	rect.SetRect(100,20,180,100);				// 设置矩形输出位置
	CBrush brush1(RGB(255,0,0));				// 创建红色画刷
	// 将红色画刷选入设备环境,并将系统原有画刷保存在pOldBrush中
	pOldBrush=pDC->SelectObject(&brush1);
	pDC->TextOut(15,20,"红色画刷");				// 输出说明性文字
	pDC->Rectangle(rect);						// 画矩形
	rect.SetRect(100,120,180,200);				// 重新设置矩形输出位置
	CBrush brush2(RGB(0,255,0));				// 创建绿色画刷
	pDC->SelectObject(&brush2);					// 选入设备环境
	pDC->TextOut(15,120,"绿色画刷");
	pDC->Rectangle(rect);
	rect.SetRect(100,220,180,300);				// 重新设置矩形输出位置
	CBrush brush3(RGB(0,0,255));				// 创建兰色画刷
	pDC->SelectObject(&brush3);					// 选入设备环境
	pDC->TextOut(15,220,"兰色画刷");
	pDC->Rectangle(rect);
	rect.SetRect(300,20,380,100);				// 重新设置矩形输出位置
	CBrush brush4(HS_BDIAGONAL,RGB(255,0,0));	// 创建画刷,45度向下影线
	pDC->SelectObject(&brush4);					// 选入设备环境
	pDC->TextOut(215,20,"剖   面   线");
	pDC->TextOut(215,50,"(从左到右)");
	pDC->Rectangle(rect);
	rect.SetRect(300,120,380,200);				// 重新设置矩形输出位置
	CBrush brush5(HS_CROSS,RGB(255,0,0));		
// 创建画刷,水平和垂直方向以网格线作出阴影
	pDC->SelectObject(&brush5);					// 选入设备环境
	pDC->TextOut(215,120,"网   格   线");
	pDC->Rectangle(rect);
	rect.SetRect(300,220,380,300);				// 重新设置矩形输出位置
	CBrush brush6(HS_DIAGCROSS,RGB(255,0,0));// 创建画刷,45度的网格线阴影
	pDC->SelectObject(&brush6);					// 选入设备环境
	pDC->TextOut(215,220,"45度网格线");
	pDC->Rectangle(rect);
	rect.SetRect(500,20,580,100);				// 重新设置矩形输出位置
	CBrush brush7(HS_FDIAGONAL,RGB(255,0,0));// 创建画刷,45度的向上阴影线
	pDC->SelectObject(&brush7);					// 选入设备环境
	pDC->TextOut(415,20,"剖   面   线");
	pDC->TextOut(415,50,"(从右到左)");
	pDC->Rectangle(rect);
	rect.SetRect(500,120,580,200);				// 重新设置矩形输出位置
	CBrush brush8(HS_HORIZONTAL,RGB(255,0,0));	// 创建画刷,水平的阴影线
	pDC->SelectObject(&brush8);					// 选入设备环境
	pDC->TextOut(415,120,"水平阴影线");
	pDC->Rectangle(rect);
	rect.SetRect(500,220,580,300);				// 重新设置矩形输出位置
	CBrush brush9(HS_VERTICAL,RGB(255,0,0));	// 创建画刷,垂直的阴影线
	pDC->SelectObject(&brush9);					// 选入设备环境
	pDC->TextOut(415,220,"垂直阴影线");
	pDC->Rectangle(rect);
	// 恢复系统原有的画刷
	pDC->SelectObject(pOldBrush);
}

/////////////////////////////////////////////////////////////////////////////
// CBrushDemoView printing

BOOL CBrushDemoView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CBrushDemoView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CBrushDemoView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CBrushDemoView diagnostics

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CBrushDemoView message handlers

⌨️ 快捷键说明

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