绘图基础--画弧,扇形,弓形

绘图基础--画弧,扇形,弓形


// arc.cpp

#include <afxwin.h>
#include <math.h>

// Define the application class
class CApp : public CWinApp
{
public:
	virtual BOOL InitInstance();
};

CApp App;  

// define the window class
class CWindow : public CFrameWnd
{ 
public:
	CWindow(); 
	void OnPaint();
	DECLARE_MESSAGE_MAP()
};

// The window's constructor
CWindow::CWindow()
{ 
	Create(NULL, "Drawing Tests",
		WS_OVERLAPPEDWINDOW,
		CRect(0,0,500,400)); 
}

// The message map
BEGIN_MESSAGE_MAP( CWindow, CFrameWnd )
	ON_WM_PAINT()	
END_MESSAGE_MAP()

// converts angle a to a point on rect r
CPoint Angle(CRect r, double a)
{
	const double pi=3.1415926535;
	//convert from degrees to radians
	a = a * pi / 180.0; 
	// find the center of the ellipse
	CPoint c = r.TopLeft(); 
	c.Offset(r.Width()/2, r.Height()/2);
	// find the point
	c.Offset((int)(cos(a)*r.Width()/2), 
		(int)(-sin(a)*r.Height())/2);
	return c;
}

// Handle exposure
void CWindow::OnPaint()
{
	CRect rect;

	GetClientRect( rect );
	CPaintDC dc(this);
	
	// Modify the pen and brush
	CPen pen(PS_SOLID, 2, RGB(0,0,255)), *oldPen;
	CBrush brush(RGB(255,0,0)), *oldBrush;
	oldPen = dc.SelectObject(&pen);
	oldBrush = dc.SelectObject(&brush);
	rect.InflateRect(-20, -20);		
	
	// Drawn an arc, pie-wedge, and chor
	dc.Arc(rect, Angle(rect, 0.0), 
		Angle(rect, 90.0));
	dc.Pie(rect, Angle(rect, 90.0), 
		Angle(rect, 180.0));
	dc.Chord(rect, Angle(rect, 180.0), 
		Angle(rect, 270.0));

	dc.SelectObject(oldPen);
	dc.SelectObject(oldBrush);
}  

// Init the application
BOOL CApp::InitInstance()
{
	m_pMainWnd = new CWindow();
	m_pMainWnd->ShowWindow(m_nCmdShow);
	m_pMainWnd->UpdateWindow();
	return TRUE;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值