#include <graphics.h> /* 绘图库头文件,绘图语句需要*/
#include <conio.h> /* 控制台输入输出头文件,getch()语句需要*/
void main() { initgraph(640, 480) /* 初始化640x480的绘图屏幕*/
line(200, 240, 440, 240)/* 画线(200,240) - (440,240) */
line(320, 120, 320, 360)/* 画线(320,120) - (320,360) */
getch() /* 按任意键*/
closegraph() /* 关闭绘图屏幕*/
说明:
1. 创建的绘图屏幕640x480,表示横向有640个点,纵向有480个点。注意:左上角是原点(0,0),也就是说,y轴和数学的y轴是相反的。
2. getch实现按任意键功能,按任意键后,程序继续执行。否则,程序会立刻执行closegraph以至于看不到绘制的内容。
我是用MFC的首先在VIEW,H里面定义变量
CPoint startpoint
然后初始化为o
在鼠标单击事后记录点
void CimagepaintView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
startpoint=point
CView::OnLButtonDown(nFlags, point)
}
在松开鼠标时
void CimagepaintView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//topoint=point
CClientDC dc(this)
CPen pen
dc.SelectObject(&pen)
dc.SelectObject(&brush)
dc.MoveTo(startpoint)
dc.LineTo(point)
CView::OnLButtonUp(nFlags, point)
}
这样就可以了。画什么都可以。
或者卸载ONDRAW里面也行
这是我写的部分代码。。
给你做个例子(点击菜单,d出对话框,在对话框中输入坐标,确定后在视图中显示在坐标平面上)看符不符合你的要求1.新建项目名为Coordinate的文档应用程序
2.插入新的对话框模板。Insert|Resource插入一个新的对话框模板。
3.在对话框板上添加控件。主要有编辑框控件两个,用来接收输入的坐标数据。
4.打开ClassWizard,利用该对话框资源创建一个对话框类CCoor。
5.添加与编辑控件关联的成员变量。两个编辑框对应的分别为m_x,m_y,校验规则均为-100~100。
6.在CCoordinateView中添加int成员变量m_vx,m_vy,用来在视图中接受并存储对话框类的成员变量m_x,m_y的值。并在构造函数中初始化为0。
7.使用菜单编辑器增加“坐标”主菜单,并在其中添加“输入坐标”菜单项,ID为ID_COORDINATE。
8.为ID_COORDINATE菜单项添加COMMAND消息的处理函数:
void CCoordinateView::OnCoordinate()
{
CCoor dlg
if(dlg.DoModal()==IDOK)
{
m_vx=dlg.m_x
m_vy=dlg.m_y
Invalidate()
}
}
9.为CCoordinate添加三个成员函数:
//绘制直线
void CCoordinateView::drawline(CDC *pDC, int x1, int y1, int x2, int y2)
{
pDC->MoveTo(x1,y1)
pDC->LineTo(x2,y2)
}
//绘制坐标
void CCoordinateView::drawaxis(CDC *pDC)
{
CString str
CFont myfont,*oldfont
myfont.CreatePointFont(80,"Arial",pDC)
oldfont=pDC->SelectObject(&myfont)
drawline(pDC,310,10,310,610)
drawline(pDC,10,310,610,310)
for(int i=0i<21i++)
{
drawline(pDC,10+30*i,308,10+30*i,310)
str.Format("%d",-100+10*i)
if(i!=10)pDC->TextOut(10+30*i,315,str)
else pDC->TextOut(12+30*i,315,"0")
}
for(i=0i<21i++)
{
drawline(pDC,308,10+30*i,310,10+30*i)
str.Format("%d",100-10*i)
if(i!=10)pDC->TextOut(315,10+30*i,str)
}
pDC->SelectObject(oldfont)
myfont.DeleteObject()
}
//在坐标平面上标出坐标
void CCoordinateView::drawcoordinate(CDC *pDC)
{
drawaxis(pDC)
pDC->SetPixel(CPoint(310+m_vx*3,310-m_vy*3),RGB(255,0,0))
}
10.在成员函数CCoordinateView::OnDraw()中添加:
drawcoordinate(pDC)
11.在CCoordinateView.cpp的所有include语名之后,加入:
#include "Coor.h"
12.编译、链接并运行即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)