发布网友 发布时间:2022-04-22 01:09
共4个回答
热心网友 时间:2024-02-03 10:45
给你做个例子(点击菜单,弹出对话框,在对话框中输入坐标,确定后在视图中显示在坐标平面上)看符不符合你的要求
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=0;i<21;i++)
{
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=0;i<21;i++)
{
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.编译、链接并运行即可。
热心网友 时间:2024-02-03 10:45
可以使用SetPixel函数来画点。但前提是,你要知道一些绘图的基本知识,如坐标系统等。
热心网友 时间:2024-02-03 10:46
恩 先创建一个 模块组 然后 进行操作!!
热心网友 时间:2024-02-03 10:46
DrawPixel()这个函数?