C语言课程设计
专 业: 自动控制
班 级:
姓 名:
学 号:
指导教师: 董昱
兰州交通大学自动化与电气工程学院
2012 年 7月 6日
1 基本题目
1.1题目:计算字符串中子串出现的次数。
程序说明:利用输入函数输入任意两个字符串,请你编写程序求出第二个字符串在第一个字符串中出现的次数,即在第一个字符串中有几个第二个字符串。
1.2 程序分析
在主函数中定义两个字符串str,substr,再定义int型的count实现统计第二个字符串在第一个中出现的次数,定义指针*p,*q,*m通过while循环对相同字符串进行查找,最后用if语句:如果*p指向’\0’,则实现循环,输出统计个数count。
流程图见附录1。
1.3程序
#include <stdio.h>
main()
{
char str[100],substr[10]; //定义两个字符串
int count;
char *p,*q,*m; //定义三个指针
printf("enter string:");
gets(str);
printf("enter substr:");
gets(substr); //输入两个字符串
count=0; //给count赋初值
while(*p)
{
q=substr;
m=p; //当q指向子串时, m=p;
while(*q==*m&&*q!='\0') //执行while循环
{
m++;
q++;
}
if(*q=='\0') //如果q指向\0 统计出count
count++;
p++;
}
printf("count=%d\n",count);
}
1.4程序的运行结果
上述程序的运行结果如图1所示:
图1 基本题目运行结果
从图1可以看出,输入两个字符串:mhbmhbhgugyumhbmhbmhbmhb。
按回车键:count=2 即子串在第一个字符串中出现了两次。
2 改错题目
2.1题目
#include <stdio.h>
main()
{
int a;
char ch;
ch="A";
scanf("%d",a);
printf("%c+%d=%c\n",ch,ch+a);
}
2.2 改正后程序
#include <stdio.h>
main()
{
int a;
char ch;
ch='A';
scanf("%d",&a);
printf("%c+%d=%c\n",ch,a,ch+a);
}
纠错:”A” ‘A’ 字符用””界定;再输入a时要给其取地址,前面必须加&;输出时应同时输出a,所以后面必须有a。
2.3 程序运行结果
上述程序的运行结果如图2所示:
图2 改错题运行结果
从图2可以看出,输入int的a=32,其结果为 A+32=a,即将大写字母A转换成小写字母a。
3 综合题目
3.1题目
综合题题目为:简单图形设计
3.11 问题描述:
根据本专业特点,设计并绘制与专业相关的图形。
3.12 功能要求:
根据1024*768的分辨率,图形位置基本居中;
根据给定的数据,程序可自动生成图形的初始状态。
3.13 算法提示:
数据结:结构体类型数组;
创建MFC应用程序工程,利用可视化程序设计。
3.14 其它:
对该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。
3.2 程序分析
实现简单图形绘制,如:绘制直线、圆、填充颜色、添加文字等等。最终绘制出一个完整的车站站场图(分别使用了MoveTo,LineTo,Ellipse,pNewBrush,TextOut,OnDraw等函数)。
基本创建过程流程图见附录2。
其中我负责的内容如下:
一.绘制信号灯及给其填充颜色;
二.查找相关绘制图形的基本函数,并了解其用法;
三.经过老师最后纠正我对整体图形做了修改和完善。
3.3程序中各函数的功能
(1)MoveTo
该函数用于将当前绘图位置移到指定的坐标点处,函数声明如下:
CPoint MoveTo(int x, int y);
CPoint MoveTo(POINT point);
参数x和y,及参数point指定了新的当前绘图位置坐标。返回值是CPoint对象实例,它包含了新的当前绘图位置坐标。CPoint类是MFC中定义的一个点对象的类,它有两个成员变量x和y,用于存放点的坐标位置,类型为int。在绘图函数参数中所有使用POINT结构的地方都可以使用CPoint类。MoveTo函数通常与LineTo函数同时使用,来绘制一条指定了端点的直线段。
(2)LineTo
该函数用于绘制一条从当前绘图位置到指定坐标点的直线段,其函数声明如下:
BOOL LineTo(int x, int y);
BOOL LineTo(POINT point);
参数x和y,及参数point指定了坐标点。这里我们注意到,一条直线段应该有两个端点,可是这里只指定了一个点。这是因为在使用设备环境对象进行绘图的时候有一个当前绘图位置的概念,该位置是逻辑坐标系下的一个坐标点。LineTo函数是在当前绘图位置和指定的点之间绘制一条直线段。初始的当前绘图位置是视图区逻辑坐标系的原点,该原点在默认的映射模式下是在视图区的左上角。所以在我们的第一个例子中,绘制了一条从视图区左上角到(200, 200)点的直线段(如图1.17所示)。LineTo函数在绘制完直线段后,将当前绘图位置移到参数所指定的新的坐标点处。如果画直线段成功,函数返回TRUE,否则返回FALSE。
(3)Ellipse
该函数用于绘制椭圆或者圆,其函数声明如下:
BOOL Ellipse(int x1, int y1, int x2, int y2);
BOOL Ellipse(LPCRECT lpRect);
其中,第一个函数的参数x1和y1指定了要绘制的椭圆或者圆的外接矩形的左上角点坐标,参数x2和y2指定了要绘制的椭圆或者圆的外接矩形的右下角点坐标。第二个函数的参数使用了矩形区域结构来存放外接矩形的左上角和右下角坐标。如果绘图成功,函数返回TRUE,否则返回FALSE。
(4)pNewBrush
创建一个画刷,给绘制的图形填充颜色。
(5)TextOut
该函数用当前选择的字体、背景颜色和正文颜色将一个字符串写到指定位置。
(6)OnDraw
该函数是在视图内绘图最常用的函数。该函数是CView类中的一个虚函数,每次当视图需要重新绘制时,应用程序框架都会自动调用该函数。
3.4源程序 见附录3
上述程序的运行结果如图3所示:
图3 综合题目运行结果
4.结论
本设计在刚开始时完全没有头绪,经过多次找老师答疑,还有翻阅各种相关资料,慢慢的初步掌握了创建MFC工程的基本方法,但是怎样去绘制图形又是一个难点问题,通过网上资料还是没有掌握,最终还是去向老师答疑,才学会了建立画笔画线,画圆,填充颜色,加文字等,初步设计由于只考虑了怎样去绘制图形,没有做到将本专业的知识运用到其中,导致站场图出现很多问题,需重新修改,但问题是第一次输代码时没有标记清楚,修改时坐标不好找,给进度带来了不少麻烦,于是,我们几个分工完成了代码的修改,最终完成了图形的绘制。通过此次课程设计,是我明白了想要完成设计不但要学好基础知识而且要多动脑,多提问,多答疑。此外,我还得到了一些教训,凡事必须细心,谨慎,否则,会给自己带来很多麻烦。
附录1基本题目流程图
附录 2综合题目流程图
附录 3 综合题源代码
#include "stdafx.h"
#include "车站站场图.h"
#include "车站站场图Doc.h"
#include "车站站场图View.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
IMPLEMENT_DYNCREATE(CMyView, CView)
BEGIN_MESSAGE_MAP(CMyView, CView)
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
CMyView::CMyView()
{
}
CMyView::~CMyView()
{
}
BOOL CMyView::PreCreateWindow(CREATESTRUCT& cs)
{
return CView::PreCreateWindow(cs);
}
void CMyView::OnDraw(CDC* pDC)
{
CMyDoc* pDoc = GetDocument();
C=Pen pen(PS_SOLID,2,RGB(9,17,128));
CPen *pOldPen = pDC->SelectObject(&pen);
/////////////////////////////////////////////////
//绘制车站站场行车线路
ASSERT_VALID(pDoc);
pDC->MoveTo(250,190);
pDC->LineTo(300,150);
pDC->LineTo(700,150);
pDC->LineTo(750,190);
ASSERT_VALID(pDoc);
pDC->MoveTo(240,190);
pDC->LineTo(250,190);
ASSERT_VALID(pDoc);
pDC->MoveTo(750,190);
pDC->LineTo(760,190);
ASSERT_VALID(pDoc);
pDC->MoveTo(150,300);
pDC->LineTo(950,300);
ASSERT_VALID(pDoc);
pDC->MoveTo(145,295);
pDC->LineTo(150,295);
pDC->LineTo(150,305);
pDC->LineTo(145,305);
ASSERT_VALID(pDoc);
pDC->MoveTo(955,295);
pDC->LineTo(950,295);
pDC->LineTo(950,305);
pDC->LineTo(955,305);
ASSERT_VALID(pDoc);
pDC->MoveTo(0,200);
pDC->LineTo(1000,200);
ASSERT_VALID(pDoc);
pDC->MoveTo(0,250);
pDC->LineTo(1000,250);
ASSERT_VALID(pDoc);
pDC->MoveTo(50,240);
pDC->LineTo(100,210);
ASSERT_VALID(pDoc);
pDC->MoveTo(40,240);
pDC->LineTo(50,240);
ASSERT_VALID(pDoc);
pDC->MoveTo(100,210);
pDC->LineTo(110,210);
ASSERT_VALID(pDoc);
pDC->MoveTo(140,210);
pDC->LineTo(190,240);
ASSERT_VALID(pDoc);
pDC->MoveTo(130,210);
pDC->LineTo(140,210);
ASSERT_VALID(pDoc);
pDC->MoveTo(190,240);
pDC->LineTo(200,240);
ASSERT_VALID(pDoc);
pDC->MoveTo(810,210);
pDC->LineTo(860,240);
ASSERT_VALID(pDoc);
pDC->MoveTo(800,210);
pDC->LineTo(810,210);
ASSERT_VALID(pDoc);
pDC->MoveTo(860,240);
pDC->LineTo(870,240);
ASSERT_VALID(pDoc);
pDC->MoveTo(900,240);
pDC->LineTo(950,210);
ASSERT_VALID(pDoc);
pDC->MoveTo(890,240);
pDC->LineTo(900,240);
ASSERT_VALID(pDoc);
pDC->MoveTo(950,210);
pDC->LineTo(960,210);
ASSERT_VALID(pDoc);
pDC->MoveTo(880,260);
pDC->LineTo(930,290);
ASSERT_VALID(pDoc);
pDC->MoveTo(870,260);
pDC->LineTo(880,260);
ASSERT_VALID(pDoc);
pDC->MoveTo(930,290);
pDC->LineTo(940,290);
ASSERT_VALID(pDoc);
pDC->MoveTo(250,260);
pDC->LineTo(300,290);
ASSERT_VALID(pDoc);
pDC->MoveTo(240,260);
pDC->LineTo(250,260);
ASSERT_VALID(pDoc);
pDC->MoveTo(300,290);
pDC->LineTo(310,290);
ASSERT_VALID(pDoc);
pDC->MoveTo(700,290);
pDC->LineTo(750,260);
ASSERT_VALID(pDoc);
pDC->MoveTo(690,290);
pDC->LineTo(700,290);
ASSERT_VALID(pDoc);
pDC->MoveTo(750,260);
pDC->LineTo(760,260);
ASSERT_VALID(pDoc);
pDC->MoveTo(140,210);
pDC->LineTo(190,240);
ASSERT_VALID(pDoc);
pDC->MoveTo(800,300);
pDC->LineTo(740,360);
pDC->LineTo(680,360);
ASSERT_VALID(pDoc);
pDC->MoveTo(675,355);
pDC->LineTo(680,355);
pDC->LineTo(680,365);
pDC->LineTo(675,365);
//绘制车站
ASSERT_VALID(pDoc);
pDC->MoveTo(480,100);
pDC >LineTo(530,100);
pDC->LineTo(530,130);
pDC->LineTo(480,130);
pDC->LineTo(480,100);
ASSERT_VALID(pDoc);
pDC->MoveTo(480,100);
pDC->LineTo(500,115);
pDC->LineTo(480,130);
ASSERT_VALID(pDoc);
pDC->MoveTo(530,100);
pDC->LineTo(510,115);
pDC->LineTo(530,130);
ASSERT_VALID(pDoc);
pDC->MoveTo(500,115);
pDC->LineTo(510,115);
ASSERT_VALID(pDoc);
pDC->MoveTo(495,125);
pDC->LineTo(515,125);
//绘制信号机
CBrush brush1(RGB(255,0,0));
ASSERT_VALID(pDoc); //绘制D1信号机
pDC->MoveTo(130,195);
pDC->LineTo(130,205);
ASSERT_VALID(pDoc);
pDC->MoveTo(130,190);
pDC->LineTo(130,170);
ASSERT_VALID(pDoc);
pDC->MoveTo(130,180);
pDC->LineTo(140,180);
pDC->Ellipse(140,170,160,190);
ASSERT_VALID(pDoc);
pDC->MoveTo(160,180);
pDC->LineTo(165,180);
pDC->Ellipse(165,170,185,190);
pDC->Ellipse(185,170,205,190);
ASSERT_VALID(pDoc); //绘制X信号机
pDC->MoveTo(10,205);
pDC->LineTo(10,195);
ASSERT_VALID(pDoc);
pDC->MoveTo(10,190);
pDC->LineTo(10,150);
pDC->Ellipse(10,150,30,170);
ASSERT_VALID(pDoc);
pDC->MoveTo(30,160);
pDC->LineTo(35,160);
pDC->Ellipse(35,150,55,170);
pDC->Ellipse(55,150,75,170);
pDC->Ellipse(75,150,95,170);
pDC->Ellipse(95,150,115,170);
ASSERT_VALID(pDoc); //绘制XF信号机
pDC->MoveTo(10,245);
pDC->LineTo(10,255);
ASSERT_VALID(pDoc);
pDC->MoveTo(10,260);
pDC->LineTo(10,300);
ASSERT_VALID(pDoc);
pDC->MoveTo(10,290);
pDC->LineTo(20,290);
pDC->Ellipse(20,280,40,300);
ASSERT_VALID(pDoc);
pDC->MoveTo(40,290);
pDC->LineTo(45,290);
pDC->Ellipse(45,280,65,300);
pDC->Ellipse(65,280,85,300);
pDC->Ellipse(85,280,105,300);
pDC->Ellipse(105,280,125,300);
ASSERT_VALID(pDoc); //绘制XI信号机
pDC->MoveTo(600,170);
pDC->LineTo(600,190);
ASSERT_VALID(pDoc);
pDC->MoveTo(600,195);
pDC->LineTo(600,205);
ASSERT_VALID(pDoc);
pDC->MoveTo(600,180);
pDC->LineTo(610,180);
pDC->Ellipse(610,170,630,190);
pDC->Ellipse(630,170,650,190);
pDC->Ellipse(650,170,670,190);
pDC->Ellipse(670,170,690,190);
ASSERT_VALID(pDoc); //绘制D6,D8信号机
pDC->MoveTo(800,245);
pDC->LineTo(800,255);
ASSERT_VALID(pDoc);
pDC->MoveTo(800,240);
pDC->LineTo(800,220);
ASSERT_VALID(pDoc);
pDC->MoveTo(800,260);
pDC->LineTo(800,280);
pDC->Ellipse(800,220,820,240);
pDC->Ellipse(820,220,840,240);
pDC->Ellipse(780,260,800,280);
pDC->Ellipse(760,260,780,280);
ASSERT_VALID(pDoc); //绘制D2,D4信号机
pDC->MoveTo(880,195);
pDC->LineTo(880,205);
ASSERT_VALID(pDoc);
pDC->MoveTo(880,295);
pDC->LineTo(880,305);
ASSERT_VALID(pDoc);
pDC->MoveTo(880,190);
pDC->LineTo(880,170);
ASSERT_VALID(pDoc);
pDC->MoveTo(880,310);
pDC->LineTo(880,330);
pDC->Ellipse(860,310,880,330);
pDC->Ellipse(840,310,860,330);
pDC->Ellipse(880,170,900,190);
pDC->Ellipse(900,170,920,190);
ASSERT_VALID(pDoc); //绘制D3信号机
pDC->MoveTo(220,255);
pDC->LineTo(220,245);
ASSERT_VALID(pDoc);
pDC->MoveTo(220,240);
pDC->LineTo(220,220);
pDC->Ellipse(220,220,240,240);
pDC->Ellipse(240,220,260,240);
ASSERT_VALID(pDoc); //绘制D10信号机
pDC->MoveTo(700,355);
pDC->LineTo(700,365);
ASSERT_VALID(pDoc);
pDC->MoveTo(700,350);
pDC->LineTo(700,330);
pDC->Ellipse(700,330,720,350);
pDC->Ellipse(720,330,740,350);
ASSERT_VALID(pDoc); //绘制SI信号机
pDC->MoveTo(400,245);
pDC->LineTo(400,255);
ASSERT_VALID(pDoc);
pDC->MoveTo(400,240);
pDC->LineTo(400,200);
pDC->Ellipse(400,220,380,240);
pDC->Ellipse(400,220,380,200);
pDC->Ellipse(380,220,360,200);
pDC->Ellipse(380,220,360,240);
pDC->Ellipse(360,220,340,240);
ASSERT_VALID(pDoc); //绘制S3信号机
pDC->MoveTo(400,195);
pDC->LineTo(400,215);
ASSERT_VALID(pDoc);
pDC->MoveTo(400,190);
pDC->LineTo(400,150);
pDC->Ellipse(400,170,380,190);
pDC->Ellipse(400,170,380,150);
pDC->Ellipse(380,170,360,190);
pDC->Ellipse(380,170,360,150);
pDC->Ellipse(360,170,340,190);
ASSERT_VALID(pDoc); //绘制SII信号机
pDC->MoveTo(400,305);
pDC->LineTo(400,295);
ASSERT_VALID(pDoc);
pDC->MoveTo(400,290);
pDC->LineTo(400,270);
ASSERT_VALID(pDoc);
pDC->MoveTo(400,280);
pDC->LineTo(390,280);
pDC->Ellipse(390,270,370,290);
pDC->Ellipse(370,270,350,290);
pDC->Ellipse(350,270,330,290);
pDC->Ellipse(330,270,310,290);
ASSERT_VALID(pDoc); //绘制S4信号机
pDC->MoveTo(400,295);
pDC->LineTo(400,305);
ASSERT_VALID(pDoc);
pDC->MoveTo(400,310);
pDC->LineTo(400,350);
pDC->Ellipse(400,350,380,330);
pDC->Ellipse(400,330,380,310);
pDC->Ellipse(380,350,360,330);
pDC->Ellipse(380,330,360,310);
pDC->Ellipse(360,350,340,330);pDC->Ellipse(360,350,340,330);
ASSERT_VALID(pDoc); //绘制X3信号机
pDC->MoveTo(600,145);
pDC->LineTo(600,155);
ASSERT_VALID(pDoc);
pDC->MoveTo(600,140);
pDC->LineTo(600,100);
pDC->Ellipse(600,100,620,120);
pDC->Ellipse(620,100,640,120);
pDC->Ellipse(600,120,620,140);
pDC->Ellipse(620,120,640,140);
pDC->Ellipse(502,105,507,110);
ASSERT_VALID(pDoc); //绘制XII信号机
pDC->MoveTo(600,245);
pDC->LineTo(600,255);
ASSERT_VALID(pDoc);
pDC->MoveTo(600,240);
pDC->LineTo(600,200);
pDC->Ellipse(600,200,620,220);
pDC->Ellipse(620,200,640,220);
pDC->Ellipse(600,220,620,240);
pDC->Ellipse(620,220,640,240);
pDC->Ellipse(640,200,660,220);
ASSERT_VALID(pDoc); //绘制X4信号机
pDC->MoveTo(600,305);
pDC->LineTo(600,295);
ASSERT_VALID(pDoc);
pDC->MoveTo(600,290);
pDC->LineTo(600,250);
pDC->Ellipse(600,250,620,270);
pDC->Ellipse(620,250,640,270);
pDC->Ellipse(600,270,620,290);
pDC->Ellipse(620,270,640,290);
pDC->Ellipse(640,250,660,270);
////////////////////////////////////////////////
//绘制信号灯颜色
//绘制红色信号灯
CBrush* pNewBrush2;
CBrush* pOldBrush2;
pNewBrush2=new CBrush;
pNewBrush2->CreateSolidBrush(RGB(255,0,0));
pOldBrush2=pDC->SelectObject(pNewBrush2);
pDC->Ellipse(185,170,205,190);
pDC->Ellipse(55,150,75,170);
pDC->Ellipse(185,170,205,190);
pDC->Ellipse(65,280,85,300);
pDC->Ellipse(400,170,380,150);
pDC->Ellipse(400,220,380,200);
pDC->Ellipse(350,270,330,290);
pDC->Ellipse(400,330,380,310);
pDC->Ellipse(600,120,620,140);
pDC->Ellipse(600,220,620,240);
pDC->Ellipse(600,270,620,290);
pDC->Ellipse(650,170,670,190);
delete pNewBrush2;
//绘制黄色信号灯
CBrush* pNewBrush3;
CBrush* pOldBrush3;
pNewBrush3=new CBrush;
pNewBrush3->CreateSolidBrush(RGB(255,255,0));
pOldBrush3=pDC->SelectObject(pNewBrush3);
pDC->Ellipse(45,280,65,300);
pDC->Ellipse(105,280,125,300);
pDC->Ellipse(400,170,380,190);
pDC->Ellipse(400,220,380,240);
pDC->Ellipse(370,270,350,290);
pDC->Ellipse(400,350,380,330);
pDC->Ellipse(600,100,620,120);
pDC->Ellipse(630,170,650,190);
pDC->Ellipse(600,200,620,220);
pDC->Ellipse(600,250,620,270);
pDC->Ellipse(35,150,55,170);
pDC->Ellipse(95,150,115,170);
delete pNewBrush3;
//绘制绿色信号灯
CBrush* pNewBrush4;
CBrush* pOldBrush4;
pNewBrush4=new CBrush;
pNewBrush4->CreateSolidBrush(RGB(0,255,0));
pOldBrush4=pDC->SelectObject(pNewBrush4);
pDC->Ellipse(165,170,185,190);
pDC->Ellipse(85,280,105,300);
pDC->Ellipse(360,170,340,190);
pDC->Ellipse(360,220,340,240);
pDC->Ellipse(330,270,310,290);
pDC->Ellipse(360,350,340,330);
pDC->Ellipse(640,100,660,120);
pDC->Ellipse(670,170,690,190);
pDC->Ellipse(640,200,660,220);
pDC->Ellipse(640,250,660,270);
pDC->Ellipse(75,150,95,170);
delete pNewBrush4;
//绘制白色信号灯
CBrush* pNewBrush5;
CBrush* pOldBrush5;
pNewBrush5=new CBrush;
pNewBrush5->CreateSolidBrush(RGB(255,255,255));
pOldBrush5=pDC->SelectObject(pNewBrush5);
pDC->Ellipse(10,150,30,170);
pDC->Ellipse(140,170,160,190);
pDC->Ellipse(20,280,40,300);
pDC->Ellipse(610,170,630,190);
pDC->Ellipse(820,220,840,240);
pDC->Ellipse(760,260,780,280);
pDC->Ellipse(900,170,920,190);
pDC->Ellipse(840,310,860,330);
pDC->Ellipse(380,170,360,150);
pDC->Ellipse(380,220,360,200);
pDC->Ellipse(390,270,370,290);
pDC->Ellipse(380,330,360,310);
pDC->Ellipse(620,120,640,140);
pDC->Ellipse(620,220,640,240);
pDC->Ellipse(620,270,640,290);
pDC->Ellipse(720,330,740,350);
pDC->Ellipse(240,220,260,240);
delete pNewBrush5;
//绘制蓝色信号灯
CBrush* pNewBrush6;
CBrush* pOldBrush6;
pNewBrush6=new CBrush;
pNewBrush6->CreateSolidBrush(RGB(0,0,255));
pOldBrush6=pDC->SelectObject(pNewBrush6);
pDC->Ellipse(800,220,820,240);
pDC->Ellipse(780,260,800,280);
pDC->Ellipse(880,170,900,190);
pDC->Ellipse(860,310,880,330);
pDC->Ellipse(700,330,720,350);
pDC->Ellipse(220,220,240,240);
delete pNewBrush6;
//绘制空位信号灯(用黑色表示)
CBrush* pNewBrush7;
CBrush* pOldBrush7;
pNewBrush7=new CBrush;
pNewBrush7->CreateSolidBrush(RGB(0,0,0));
pOldBrush7=pDC->SelectObject(pNewBrush7);
pDC->Ellipse(380,170,360,190);
pDC->Ellipse(380,220,360,200);
pDC->Ellipse(380,350,360,330);
pDC->Ellipse(620,100,640,120);
pDC->Ellipse(620,200,640,220);
pDC->Ellipse(620,250,640,270);
pDC->Ellipse(502,105,507,110);
delete pNewBrush7;
//标注各类名称及输出文本
ASSERT_VALID(pDoc);
CFont Font; //定义一个字体对象
//创建字体
CFont *pOldFont = NULL; //定义一个字体指针
pOldFont = pDC->SelectObject(&Font); //选中创建的字体
pDC->SetTextColor(RGB(0,0,0));
//标注线路名称及信号机编号
pDC->TextOut(498,135,"3G");
pDC->TextOut(498,180,"IG");
pDC->TextOut(498,230,"IIG");
pDC->TextOut(498,300,"4G");
pDC->TextOut(110,170,"D1");
pDC->TextOut(10,120,"X");
pDC->TextOut(0,310,"XF");
pDC->TextOut(580,180,"XI");
pDC->TextOut(870,150,"D4");
pDC->TextOut(885,310,"D2");
pDC->TextOut(780,220,"D8");
pDC->TextOut(805,260,"D6");
pDC->TextOut(405,220,"SI");
pDC->TextOut(405,270,"SII");
pDC->TextOut(405,170,"S3");
pDC->TextOut(405,320,"S4");
pDC->TextOut(580,220,"XII");
pDC->TextOut(580,120,"X3");
pDC->TextOut(580,270,"X4");
pDC->TextOut(670,330,"D10");
pDC->TextOut(200,230,"D3");
pDC->TextOut(155,315,"安全线");
pDC->TextOut(955,315,"牵出线");
pDC->TextOut(680,375,"货物线");
//运行方向箭头标示
pDC->TextOut(450,140,">");
pDC->TextOut(550,140,"<");
pDC->TextOut(450,190,">");
pDC->TextOut(550,190,"<");
pDC->TextOut(450,240,">");
pDC->TextOut(550,240,"<");
pDC->TextOut(450,290,">");
pDC->TextOut(550,290,"<");
//标注道岔号
pDC->TextOut(50,220,"1");
pDC->TextOut(100,190,"3");
pDC->TextOut(140,190,"5");
pDC->TextOut(190,220,"7");
pDC->TextOut(250,240,"9");
pDC->TextOut(300,300,"11");
pDC->TextOut(240,170,"13");
pDC->TextOut(950,190,"2");
pDC->TextOut(890,220,"4");
pDC->TextOut(860,220,"6");
pDC->TextOut(810,190,"8");
pDC->TextOut(930,270,"10");
pDC->TextOut(870,265,"12");
pDC->TextOut(750,240,"14");
pDC->TextOut(695,270,"16");
pDC->TextOut(750,170,"18");
//标注车站名
Font.CreatePointFont(300,"黑体",pDC);
pOldFont = pDC->SelectObject(&Font);
pDC->TextOut(440,40,"兰州站"); //输入文本信息
pDC->SelectObject(pOldFont); //恢复之前选中的字体
Font.DeleteObject();
}
BOOL CMyView::OnPreparePrinting(CPrintInfo* pInfo)
{
return DoPreparePrinting(pInfo);
}
void CMyView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
}
void CMyView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
}
/////////////////////////////////////////////////////////////////////////////
// CMyView diagnostics
#ifdef _DEBUG
void CMyView::AssertValid() const
{
CView::AssertValid();
}
void CMyView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CMyDoc* CMyView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDoc)));
return (CMyDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMyView message handlers