如何用c++编一个简单画图程序

如何用c++编一个简单画图程序,第1张

============================================================

//在构造函数里添加以下两句:

//加载十字光标

m_hCrossCur = AfxGetApp()->LoadStandardCursor(IDC_CROSS)

//加载箭头光标

m_hArrowCur = AfxGetApp()->LoadStandardCursor(IDC_ARROW)

============================================================

============================================================

//以下是画直线的代码:

void CMyProject4View::OnLButtonDown(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

m_bLButtonDown = TRUE//鼠标左键按下

m_ptStart = point //直线的起点

m_ptEnd = point //直线的临时端点

SetCapture()

SetCursor(m_hCrossCur)//设置鼠标捕捉

CView::OnLButtonDown(nFlags, point)

}

void CMyProject4View::OnLButtonUp(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

if(m_bLButtonDown)

{

m_bLButtonDown = FALSE//鼠标左键释放

ReleaseCapture() //释放鼠标捕捉

CClientDC dc(this)//创建客户区设备环境

dc.MoveTo(m_ptStart)

dc.LineTo(point)

SetCursor(m_hArrowCur)

CView::OnLButtonUp(nFlags, point)

}

}

void CMyProject4View::OnMouseMove(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

if(m_bLButtonDown)

{

CClientDC dc(this)

dc.SetROP2(R2_NOT)

dc.MoveTo(m_ptStart)//擦除从起点到上个鼠标移动点间的直线

dc.LineTo(m_ptEnd)

dc.MoveTo(m_ptStart)//绘制从起点到当前点间的直线

dc.LineTo(point)

m_ptEnd = point //保存当前鼠标位置

}

CView::OnMouseMove(nFlags, point)

}

============================================================

============================================================

以下是画圆的代码:

void CMyProject4View::OnPaint()

{

CPaintDC dc(this)// device context for painting

// TODO: Add your message handler code here

CRect rcClient

GetClientRect (&rcClient)

int cx=rcClient.Width() /2

int cy=rcClient.Height() /2

CRect rc(cx-45,cy-45,cx+45,cy+45)

CBrush brush(RGB(0,250,250))

CBrush *poldbrush=dc.SelectObject(&brush)

dc.Ellipse(rc)

}

// Do not call CView::OnPaint() for painting messages

}

============================================================

===========================================================

1、JKGRAPH。一款电脑函数绘图软件,适用于二维,但是可以进行极值、积分计算等复杂的分析方法。

2、Mathematica。结合了数值和符号计算引擎、图形系统、编程语言、文本系统、和与其他应用程序的高级连接。很多功能在相应领域内处于世界领先地位,它也是使用最广泛的数学软件之一。

3、Mathcad。它有五个扩展库,分别是求解与优化、数据分析、信号处理、图像处理和小波分析。

4、MicrosoftMathematics。设计给MicrosoftWindows,使用户能够解决的数学和科学问题。由微软开发和维护,它主要作为学生的学习工具。

5、GeoGebra是自由且跨平台的动态数学软件,提供各级教育使用,包含了几何、代数、表格、图形、统计和微积分。

参考资料来源:百度百科-数学软件

matlab可以生成小世界网络的图,首先你要生成N个点,并让其在plot中排列成环状,然后用线段将有连边的两个点连起来。这个绘图过程比较繁琐。真要绘图的话,还是建议使用matlab生成小世界网络,然后用pajek、netdraw等软件完成绘图工作。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7721617.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-09
下一篇2023-04-09

发表评论

登录后才能评论

评论列表(0条)

    保存