用MFC画椭圆

编写一个单文档界面程序,该程序在用户区能以在两个矩形的相交区域为外接矩形画一个椭圆。效果如下:

1)用MFC AppWizard[exe],创建一个名称为RecRec的单文档应用程序。

2)在视图类CRecRecView的声明中,添加两个成员变量:

public:
	CRect m_rRect2;
	CRect m_rRect1;

3)在视图类CRecRecView的构造函数CRecRecView()中,初始化数据成员:

CRecRecView::CRecRecView():m_rRect1(50,50,250,200),m_rRect2(100,120,300,350)
{
	// TODO: add construction code here

}

4)在视图类的OnDraw函数中,写入如下代码:

void CRecRecView::OnDraw(CDC* pDC)
{
	CRecRecDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	CClientDC dc(this);
	//创建一个空画刷
	CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
	//将画刷选入设备描述表
	CBrush *pOldBrush = dc.SelectObject(pBrush);

	int x1,y1;
	int x2,y2;
	dc.Rectangle(m_rRect1);
	dc.Rectangle(m_rRect2);
	//选出交叉区域的左上角
	if(m_rRect1.left<m_rRect2.left)
		x1=m_rRect2.left;
	else
		x1=m_rRect1.left;
	if(m_rRect1.top<m_rRect2.top)
		y1=m_rRect2.top;
	else
		y1=m_rRect1.top;

	//选出交叉区域的右下角
	if(m_rRect1.right<m_rRect2.right)
		x2=m_rRect1.right;
	else
		x2=m_rRect2.right;
	if(m_rRect1.bottom<m_rRect2.bottom)
		y2=m_rRect1.bottom;
	else
		y2=m_rRect2.bottom;

	//以交叉区域为椭圆的外接矩形
	pDC->Ellipse(x1,y1,x2,y2);
}

用MFC画椭圆

时间: 2024-07-30 21:53:44

用MFC画椭圆的相关文章

MFC画线功能总结

MFC画线功能要点有二:其一,鼠标按下时记录初始位置为线的起始端点,其二,利用不同的方法实现画线.下面着重学习总结画线功能实现方法. 在OnLButtonDown函数中记录起始端点,CPoint m_ptOrigin = point; 在OnLButtonUp函数中实现画线.方法如下: 画线方法一:利用SDK全局函数实现视图窗口画线功能 //获取设备描述表 HDC hdc; //调用全局函数获得当前窗口的设备描述表,CWnd::m_hWnd根据继承原理,CDrawView继承了CWnd类的数据成

[游戏学习23] MFC 画尺子

>_<:这是个简单的MFC程序,有利于了解MFC的框架结构 >_<:Ruler.h 1 #include<afxwin.h> 2 class CMyApp:public CWinApp 3 { 4 public: 5 virtual BOOL InitInstance(); 6 }; 7 class CMainWindow:public CFrameWnd 8 { 9 public: 10 CMainWindow(); 11 protected: 12 afx_msg

《图形学》实验七:中点Bresenham算法画椭圆

开发环境: VC++6.0,OpenGL 实验内容: 使用中点Bresenham算法画椭圆. 实验结果: 代码: 1 #include <gl/glut.h> 2 3 #define WIDTH 500 4 #define HEIGHT 500 5 #define OFFSET 15 //偏移量,偏移到原点 6 #define A 6 7 #define B 5 8 9 void Init() //其它初始化 10 { 11 glClearColor(1.0f,1.0f,1.0f,1.0f);

MFC 画字体DrawText()或TextOut(),CFont字体样式类

新建单个文档的MFC应用程序,类视图——View项的属性——消息,WM_PAINT,创建OnPaint()函数 void CMFCApplication27View::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 CRect rect; this->GetClientRect(&rect);//获取客户区大小 CFont font;//用来设置大小.样式,颜色用dc.S

MFC画带箭头的直线

构造一个函数,是在startPoint,endPoint间画一条带箭头的线段: void CTry1View::DrawLine(POINT startPoint, POINT endPoint) { CClientDC dc(this); dc.MoveTo(startPoint); dc.LineTo(endPoint); double PI = 3.1415926; double t=PI/4; //箭头与直线夹角 double l=0.2; //箭头边长度占直线长度的百分比 POINT

MFC画标尺

void CJjjView::OnPaint() { CPaintDC dc(this); //屏幕初始化 dc.SetMapMode(MM_LOENGLISH);//0.01in ;1英寸映射 dc.SetTextAlign(TA_CENTER|TA_BOTTOM); dc.SetBkMode(TRANSPARENT); //画尺子主题 CBrush brush(RGB(255,255,0)); CBrush* pOldBrush=dc.SelectObject(&brush); dc.Rec

中点Bresenham算法光栅化画椭圆(四分法)

void Bresenham_Ellipse(CDC *pDC, int ox, int oy, int a, int b)//圆心x,圆心y,横长,纵长 { float d = b*b + a*a*(-b + 0.25); int x = 0, y = b, fx = a*a / sqrt((float)a*a + b*b); while (x != fx) { if (d < 0) d += b*b*(2 * x + 3); else { --y; d += b*b*(2 * x + 3)

c++ 珊格画椭圆

#ifndef _TEST_H #define _TEST_H #include <iostream> #include <math.h> using namespace std; int main() { const double pi=3.14159,p=16.0; //圆周率和圆的半径 double angle; //角度 int x,y; //计算存储数组的坐标 char rose[25][80]; //模拟屏幕为25*80个像素构成 for (x=0;x<80;x+

IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)(转)

Graphics Context是图形上下文,可以将其理解为一块画布,我们可以在上面进行绘画操作,绘制完成后,将画布放到我们的view中显示即可,view看作是一个画框. 自己学习时实现的demo,希望对大家有帮助,具体的实现看代码,并有完美的注释解释,还有一些对我帮助的博文供大家参考.都在代码里面. 看一下demo效果图先: 自定义CustomView类,CustomView.h: [cpp]  view plain copy #import <UIKit/UIKit.h> #import