绘图程序代码

合集下载

vb绘图代码

vb绘图代码

Option Base 1Dim bgn_line As BooleanDim bgn_circle As BooleanDim x1 As SingleDim y1 As SinglePrivate Type info_linex1 As Singley1 As Singlex2 As Singley2 As Singlewid As IntegerEnd TypePrivate Type info_circlex1 As Singley1 As Singler As Singlewid As IntegerEnd TypePrivate Type info_dotx1 As Singley1 As Singlewid As IntegerEnd TypeDim stack_cir() As info_circleDim stack_line() As info_lineDim stack_dot() As info_dotDim top_cir As LongDim top_line As LongDim top_dot As LongPrivate Sub redraw()Dim i As IntegerIf top_cir ThenFor i = 1 To top_cirpic.DrawWidth = stack_cir(i).widpic.Circle (stack_cir(i).x1, stack_cir(i).y1), stack_cir(i).rNext ipic.DrawWidth = com_width.TextEnd IfIf top_line ThenFor i = 1 To top_linepic.DrawWidth = stack_line(i).widpic.Line (stack_line(i).x1, stack_line(i).y1)-(stack_line(i).x2, stack_line(i).y2) Next ipic.DrawWidth = com_width.TextEnd IfIf top_dot ThenFor i = 1 To top_dotpic.DrawWidth = stack_dot(i).widpic.PSet (stack_dot(i).x1, stack_dot(i).y1)Next ipic.DrawWidth = com_width.TextEnd IfEnd SubPrivate Function s(x1 As Single, y1 As Single, x2 As Single, y2 As Single)s = Sqr((x1 - x2) ^ 2 + (y1 - y2) ^ 2)End FunctionPrivate Sub Combo2_Change()Picture1.DrawWidth = Int(Combo2.Text)End SubPrivate Sub Command1_Click()pic.Clstop_line = 0top_circle = 0top_dot = 0End SubPrivate Sub Command2_Click()EndEnd SubPrivate Sub pic_MouseDown(button As Integer, shift As Integer, x As Single, y As Single) If button = 1 ThenSelect Case com_style.TextCase "直线":If bgn_line Thenpic.Line (x1, y1)-(x, y)ReDim Preserve stack_line(top_line + 1)top_line = top_line + 1stack_line(top_line).x1 = x1stack_line(top_line).y1 = y1stack_line(top_line).x2 = x2stack_line(top_line).y2 = y2stack_line(top_line).wid = pic.DrawWidthElsex1 = xy1 = yEnd Ifbgn_line = Not bgn_lineCase "圆":If bgn_circle Thenpic.Circle (x1, y1), s(x1, y1, x, y)ReDim Preserve stack_cir(top_cir + 1)top_cir = top_cir + 1stack_cir(top_cir).r = s(x1, y1, x, y)stack_cir(top_cir).wid = pic.DrawWidthstack_cir(top_cir).x1 = x1stack_cir(top_cir).y1 = y1Elsex1 = xy1 = yEnd Ifbgn_circle = Not bgn_circleCase "点":pic.PSet (x, y)ReDim Preserve stack_dot(top_dot + 1)top_dot = top_dot + 1stack_line(top_dot).x1 = xstack_line(top_dot).y1 = ystack_dot(top_dot).wid = pic.DrawWidthCase ElseEnd SelectEnd IfEnd SubPrivate Sub pic_mousemove(button As Integer, shift As Integer, x As Single, y As Single) Select Case com_style.TextCase "直线":If bgn_line Thenpic.Clspic.Line (x1, y1)-(x, y)redrawEnd IfCase "圆":If bgn_circle Thenpic.Clspic.Circle (x1, y1), s(x1, y1, x, y)redrawEnd IfCase "点":End SelectEnd SubPrivate Sub Form_Load()Combo1.AddItem "直线"Combo1.AddItem "圆"Combo1.AddItem "点"Combo1.Text = "直线"Combo2.AddItem "1"Combo2.AddItem "3"Combo2.AddItem "5"Combo2.AddItem "10"Combo2.Text = "1"bgn_line = Falsebgn_circle = Falsetop_line = 0top_cir = 0top_dot = 0End SubPrivate Sub Picture1_Paint()Picture1.ClsPicture1.ScaleHeight = 7200Picture1.ScaleWidth = 8200Picture1.ScaleTop = -3600Picture1.ScaleLeft = -4100Picture1.Line (-4100, 0)-(4100, 0)Picture1.Line (0, -3600)-(0, 3600)Picture1.CurrentX = 100: Picture1.CurrentY = 0: Picture1.Print "0" Picture1.CurrentX = 3900: Picture1.CurrentY = 30: Picture1.Print "x" Picture1.CurrentX = 100: Picture1.CurrentY = -3500: Picture1.Print "y" End Sub。

CAD制图代码

CAD制图代码

L=直线;PL=多段线;U回车=Ctrl+z=后退;D=修改,调整;REC=矩形;C=圆;TR=修剪;O=偏移;XL=放射线;X=分解;CO=复制;M=移动;MI=镜像;EL=椭圆;BR=打断;POL=多边形;LEN=拉长;S=拉伸;ME=等分;E=删除;E回车ALL回车=全部删除;AR=阵列;RO=旋转;SC=比例缩放;END=端点;MID=中点;PER=垂足;INT=交足;CEN=圆心;QUA=象限点;TAN=切点;SPL=曲线;DIV=块等分;PE=编辑多边线;NOD=节点;F=圆角;CHA=倒角;ST=文字样式;DT=单行文字;T=多行文字;ED=编辑文字;A=弧;H =填充;HE=编辑填充;B=创建临时图块;W=创建永久图块;I=插入图块;LA=图层;MA=吸管加喷枪;() PAR=平行线;FRO=正交偏移捕捉;PO=创建点;SKETCH=徒手画线;DO=圆环;RAY=射线;AL=对齐;REG=面域;AA=求面积周长;SU=减集;UNI=加集;IN=交集;BO=提取轮廓;REV=二维旋转成三维;EXT=拉伸;UCS=三维坐标;ROTATE3D=三维旋转;MIRROR3D=三维镜像;3A=三维阵列;SURFTAB=曲面网格;TXTEXP=分解文字;CTRL+P=打印;(一)字母类 1、对象特性 ADC, *ADCENTER(设计中心“Ctrl+2”)CH, MO *PROPERTIES(修改特性“Ctrl+1”)MA, *MATCHPROP(属性匹配)ST, *STYLE(文字样式)COL, *COLOR(设置颜色)LA, *LAYER(图层操作)LT, *LINETYPE(线形)LTS, *LTSCALE(线形比例)LW, *LWEIGHT (线宽)UN, *UNITS(图形单位)ATT, *ATTDEF(属性定义)ATE, *ATTEDIT(编辑属性)BO, *BOUNDARY(边界创建,包括创建闭合多段线和面域)AL, *ALIGN(对齐)EXIT, *QUIT(退出)EXP, *EXPORT(输出其它格式文件)IMP, *IMPORT(输入文件)OP,PR *OPTIONS(自定义CAD设置)PRINT, *PLOT(打印)PU, *PURGE(清除垃圾)R, *REDRAW(重新生成)REN, *RENAME(重命名)SN, *SNAP(捕捉栅格)DS, *DSETTINGS(设置极轴追踪)OS, *OSNAP(设置捕捉模式)PRE, *PREVIEW(打印预览)TO, *TOOLBAR(工具栏)V, *VIEW(命名视图)AA, *AREA(面积)DI, *DIST(距离)LI, *LIST(显示图形数据信息)2、绘图命令: PO, *POINT(点)L, *LINE(直线)XL, *XLINE(射线)PL, *PLINE(多段线)ML, *MLINE(多线)SPL, *SPLINE(样条曲线)POL, *POLYGON(正多边形)REC, *RECTANGLE(矩形)C, *CIRCLE(圆)A, *ARC(圆弧)DO, *DONUT(圆环)EL, *ELLIPSE(椭圆)REG, *REGION(面域)MT, *MTEXT(多行文本)T, *MTEXT(多行文本)B, *BLOCK(块定义)I, *INSERT(插入块)W, *WBLOCK(定义块文件)DIV, *DIVIDE(等分)H, *BHATCH(填充)3、修改命令: CO, *COPY(复制)MI, *MIRROR(镜像)AR, *ARRAY(阵列)O, *OFFSET(偏移)RO, *ROTATE(旋转)M, *MOVE(移动)E, DEL键 *ERASE(删除)X, *EXPLODE(分解)TR, *TRIM(修剪)EX, *EXTEND(延伸)S, *STRETCH(拉伸)LEN, *LENGTHEN(直线拉长)SC, *SCALE(比例缩放)BR, *BREAK(打断)CHA, *CHAMFER(倒角)F, *FILLET(倒圆角)PE, *PEDIT(多段线编辑)ED, *DDEDIT(修改文本)4、视窗缩放: P, *PAN(平移)5、尺寸标注: DLI, *DIMLINEAR(直线标注)DAL, *DIMALIGNED(对齐标注)DRA, *DIMRADIUS(半径标注)DDI, *DIMDIAMETER(直径标注)DAN, *DIMANGULAR(角度标注)DCE, *DIMCENTER(中心标注)DOR, *DIMORDINATE(点标注)TOL, *TOLERANCE(标注形位公差)LE, *QLEADER(快速引出标注)DBA, *DIMBASELINE(基线标注)DCO, *DIMCONTINUE(连续标注)D, *DIMSTYLE(标注样式)DED, *DIMEDIT(编辑标注)DOV, *DIMOVERRIDE(替换标注系统变量)二)常用CTRL快捷键【CTRL】+1 *PROPERTIES(修改特性) 【CTRL】+2 *ADCENTER(设计中心)【CTRL】+O *OPEN(打开文件)【CTRL】+N、M *NEW(新建文件)【CTRL】+P *PRINT(打印文件)【CTRL】+S *SAVE(保存文件)【CTRL】+Z *UNDO(放弃)【CTRL】+X *CUTCLIP(剪切)【CTRL】+C *COPYCLIP(复制)【CTRL】+V *PASTECLIP(粘贴)【CTRL】+B *SNAP(栅格捕捉)【CTRL】+F *OSNAP(对象捕捉)【CTRL】+G *GRID(栅格)【CTRL】+L *ORTHO(正交)【CTRL】+W *(对象追踪)【CTRL】+U *(极轴)。

使用Python Turtle模块绘制爱心图案的代码

使用Python Turtle模块绘制爱心图案的代码

使用Python Turtle模块绘制爱心图案的代码运行下述代码后,你将看到一个粉红色的爱心图案,以及在爱心中心处的“Love You”字样。

该程序使用turtle模块提供的函数来实现绘图。

我们首先设置画笔的颜色、宽度和速度,然后使用begin_fill() 和end_fill() 函数来填充图案。

我们还使用circle() 和forward() 函数来绘制两个弧形和一个线段,以形成爱心图案。

最后,我们使用penup() 和goto() 函数将画笔移动到爱心中心位置,并使用write() 函数在中心位置写入“Love You”字样。

最后,我们隐藏画笔,并使用done() 函数来结束绘图。

import turtle# 设置画笔属性turtle.color('red', 'pink')turtle.pensize(3)turtle.speed(10)# 绘制爱心turtle.begin_fill()turtle.left(140)turtle.forward(180)turtle.circle(-90, 200)turtle.setheading(60)turtle.circle(-90, 200)turtle.forward(180)turtle.end_fill()# 写字turtle.penup()turtle.goto(0, 0)turtle.pendown()turtle.color('purple')turtle.write("Love You", align="center", font=("Courier", 24, "bold"))# 隐藏画笔turtle.hideturtle()# 完成绘制turtle.done()。

vb3D绘图示范代码

vb3D绘图示范代码

Visual Basic 3D 绘图示例
以下是 Visual Basic 中绘制 3D 线的示例代码:
在这段代码中,定义了一个 Form1 类,该类重写了 Paint 事件处理程序。

在事件处理程序中,它创建了一个 3D 矩阵,并使用它将两个 Imports Public Class
Private Sub As Object As Handles Me
Dim As New
305040100200300
Dim As New 000
Dim As New 100100100
Dim As Dim As
Dim As
End Sub
Private Function As As Dim As Integer CInt Me Dim As Integer CInt Me Return New
End Function End Class
Public Class
3D 点转换并投影到 2D 平面上。

然后,它使用Graphics对象的DrawLine方法连接这两个点。

请注意,这只是一个简单的示例,旨在演示 Visual Basic 中 3D 绘图的基本概念。

通常,一个完整的 3D 图形系统会包括额外的类和函数,用于更高级的 3D 操作,例如照明、阴影和透视投影。

(打印)实验四 MATLAB 高级图形绘制

(打印)实验四 MATLAB 高级图形绘制

实验四MATLAB 高级图形绘制一、实验目的及要求:1.熟悉各种绘图函数的使用;2.掌握图形的修饰方法和标注方法;3.了解MATLAB 中图形窗口的操作。

二、实验内容:1.用图形表示连续调制波形Y=sin(t)sin(9t)及其包络线。

程序代码如下:包络线:2.x=[-2π,2π],y1=sinx、y2=cosx、y3=sin2x、y4=cos 2x①用MATLAB语言分四个区域分别绘制的曲线,并且对图形标题及横纵坐标轴进行标注。

程序:结果:②另建一个窗口,不分区,用不同颜色、线型绘出四条曲线,并标注图例注解。

程序:结果:③绘制三维曲线:⎪⎩⎪⎨⎧=≤≤==)cos()sin()200()cos()sin(t t t z t t y t x π程序:结果:3.绘制极坐标曲线ρ=asin(b+nθ),并分析参数a、b、n对曲线形状的影响。

(1)a=1;b=1;n=1(2)a=10;b=1;n=1(3)a=10;b=10;n=1 (4)a=10;b=10;n=10参数a、b、n对曲线形状的影响:由上面绘制的图形可知:a决定图形的大小,当a为整数时,图形半径大小就是a;b决定图形的旋转角度,图形的形状及大小不变;n决定图形的扇叶数,当n 为奇数时,扇叶数为n,当n为偶数时,扇叶数为2n。

三、结论本次实验用到了曲线绘图、三位曲线绘图的知识,与老师上课的内容一致,让我学的matlab绘图的知识得到了巩固,我还学会了如何使用title、subplot、plot、axis等函数。

在做实验的过程复习了hold on指令是覆盖函数继续绘图的意思。

用VB制作绘图程序

用VB制作绘图程序

用VB制作绘图程序第一步,先构思要制作的程序的界面;第二步,运行Visual Studio,选择Visual Basic,制作Windows 程序,把名字改为huitu;第三步,在Form1中设计用户界面,把Botton、Panel拖放到Form1中;第四步,设置对象的属性,把Form1的text属性设置为绘图程序,把Botton1的text属性设置为圆形,把Botton2的text属性设置为长方形;第五步,编写代码,代码如下:Public Class Form1Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim g As Graphics = Panel1.CreateGraphicsDim pen1 As Pen = Pens.Blackg.DrawEllipse(pen1, 20, 20, 30, 30)End SubPrivate Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.ClickDim g As Graphics = Panel1.CreateGraphicsDim pen1 As Pen = Pens.Blackg.DrawRectangle(pen1, 20, 20, 30, 30)End SubPrivate Sub Form1_Load(ByVal sender AsSystem.Object, ByVal e As System.EventArgs) Handles MyBase.LoadEnd SubPrivate Sub Panel1_Paint(ByVal sender As System.Object, ByVal e AsSystem.Windows.Forms.PaintEventArgs) HandlesPanel1.PaintEnd SubEnd Class第六步,编译、运行、调试程序;第七步,制作安装程序,点击生成按钮,点击生成下的菜单生成,再点击发布,即可完成发布!生成程序两个文件:。

MFC画图程序步骤

MFC画图程序步骤MFC(Microsoft Foundation Class)是一种用于开辟Windows应用程序的C++类库。

在MFC中,我们可以使用GDI(Graphics Device Interface)来创建和操作图形。

下面是使用MFC创建一个简单的画图程序的步骤。

步骤1:创建一个新的MFC项目首先,打开Visual Studio并选择创建一个新的项目。

在项目类型中,选择Visual C++ -> MFC,然后选择MFC应用程序类型。

输入项目名称并选择保存的位置。

在应用程序类型中,选择“单文档”或者“多文档”视图,具体根据你的需求而定。

点击“确定”按钮创建项目。

步骤2:设计用户界面在MFC应用程序中,用户界面是通过对话框资源来设计的。

在资源视图中,双击IDD_DIALOG(或者其他对话框资源)以打开对话框编辑器。

在对话框编辑器中,你可以添加按钮、文本框、菜单等控件来设计你的用户界面。

在画图程序中,你可以添加一个画布控件来显示绘制的图形。

步骤3:添加绘图功能在MFC中,你可以使用GDI来进行绘图操作。

打开你的对话框类的头文件(例如,CMyDialog.h),添加以下头文件引用:#include <afxwin.h>#include <afxext.h>#include <afxdisp.h>在对话框类的源文件(例如,CMyDialog.cpp)中,添加以下代码来处理绘图操作:```void CMyDialog::OnPaint(){CPaintDC dc(this); // 用于绘制的设备上下文// 在这里进行绘图操作dc.Rectangle(100, 100, 200, 200); // 绘制一个矩形dc.Ellipse(300, 100, 400, 200); // 绘制一个椭圆}```步骤4:处理绘图事件在对话框类的消息映射中添加对绘图事件的处理。

用Matlab调用已经创建好的数据进行绘图

用Matlab调用已经创建好的数据进行绘图1 用Matlab画二维点1.1产生二维点的坐标【例】用C语言编程产生二维点的坐标,存储到C盘根目录下。

1.1.1源程序代码如下:#include "math.h"#include "stdio.h"#define PI 3.1415926main(){double x,y;FILE *fp;fp=fopen("c:\\lwx.dat","w");for(x=0.0;x<=2.0*PI;x=x+0.01){y=sin(x);fprintf(fp,"%-16.8f%-16.8f\n",x,y);printf("%-16.8f%-16.8f\n",x,y);}fclose(fp);}1.1.2产生的数据如下:0.00000000 0.000000000.01000000 0.009999830.02000000 0.019998670.03000000 0.029995500.04000000 0.039989330.05000000 0.04997917……6.23000000 -0.053160246.24000000 -0.043171896.25000000 -0.033179226.26000000 -0.023183236.27000000 -0.013184936.28000000 -0.003185301.2 用Matlab 调用数据,进行绘图的步骤如下:第一步:将路径(Current Directory)设为:“c:\”第二步:创建命令文件并执行:load lwx.datplot(lwx(:,1),lwx(:,2),'k')结果如下:可以改变属性对图的环境进行必要的处理。

如:2 用Matlab画三维点:(1)Current Directory:“c:\”(2)>>load lwx.dat(3)>>plot3(lwx(:,1),lwx(:,2),lwx(:,3),'k')3 详细过程1.改变当前路径单击上图中的红色标记出的按钮,如下图:单击确定即可。

python turtle tracer用法

标题:Python Turtle Tracer的使用方法Python Turtle Tracer是Python编程语言中的一个绘图模块,它可以实现简单的绘图功能,非常适合初学者学习编程和图形绘制。

本文将介绍Python Turtle Tracer的基本用法,帮助读者快速上手并掌握其使用方法。

一、Python Turtle Tracer简介Python Turtle Tracer是Python语言中一个用于绘图的模块,它提供了一些简单的绘图命令,可以让用户通过编写Python程序来实现绘制图形的功能。

Python Turtle Tracer还可以帮助用户理解计算机图形学的一些基本概念,是学习编程和图形绘制的理想工具之一。

二、Python Turtle Tracer的基本命令在Python中,使用Turtle Tracer绘制图形非常简单,只需几行代码即可完成。

以下是Python Turtle Tracer的一些基本命令:1. 导入Turtle Tracer模块在Python中,要使用Turtle Tracer模块,首先需要导入该模块,可以使用以下命令实现:```import turtle```2. 创建一个绘图窗口在使用Turtle Tracer绘制图形前,需要创建一个绘图窗口,可以使用以下命令创建一个名为"draw"的绘图窗口:```win = turtle.Screen()win.title("Draw")```3. 创建一个绘图画布接下来,需要在绘图窗口上创建一个绘图画布,可以使用以下命令创建一个名为"canvas"的绘图画布:```canvas = turtle.Turtle()```4. 绘制图形使用Turtle Tracer绘制图形非常简单,只需调用相应的命令即可实现。

可以使用以下命令绘制一个正方形:```canvas.forward(100)canvas.right(90)canvas.forward(100)canvas.right(90)canvas.forward(100)canvas.right(90)canvas.forward(100)```5. 控制画笔Turtle Tracer还提供了一些控制画笔的命令,可以设置画笔的颜色、粗细等属性。

vb 开发绘图程序


9-4-2 图片框 图片框PictureBox控件 控件
PictureBox可以作为容器控件 可以作为容器控件 跟窗体类似 Print方法 输出文字 方法 cls方法:清空内容 方法: 方法 PSet方法:画点 方法: 方法 Line方法:画线、矩形 方法: 方法 画线、 Circle方法:画圆 方法: 方法 ScaleHeight,ScaleWidth:重定坐标系 , :
9-2-3 画圆方法 画圆方法(Circle)
Circle(1200,800), 600 圆心, 圆心,半径 Circle(1200,800), 600,vbRed , 圆心,半径, 圆心,半径,颜色
9-2-3 画圆方法 画圆方法(Circle)
xp1,yp1
x,y
9-1坐标系统 坐标系统
9-2-1 画点方法(PSet) 画点方法( )
Private Sub Form_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then ‘左键按下,则绘图 左键按下, 左键按下 PSet (X, Y) End If End Sub
9-1坐标系统 坐标系统
9-1坐标系统 坐标系统
重新定义坐标系统Form,Picturebox 重新定义坐标系统 ScaleWidth = 4 将当前窗体宽分为 份 将当前窗体宽分为4份 ScaleHeight = 4 将当前窗体高分为 份 将当前窗体高分为4份 Form1.ScaleHeight = 4 Form1.ScaleWidth = 4 lblShow.Left = 3 lblShow.Top = 3
第9章 开发绘图程序 章
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

绘图程序代码文档类:(1). class CDrawDoc : public CDocument{┆public: //定义数据成员COLORREF m_color; //颜色CRect m_rectGraph; //矩形CPoint m_OldPoint,m_NewPoint,m_LastPoint; //直线int m_nType; //选择的画法类型CPoint m_Curve[1000]; //随手画int m_nCurveCount;};(2).BOOL CDrawDoc::OnNewDocument() //文档类中初始化变量{if (!CDocument::OnNewDocument())return FALSE;// TODO: add reinitialization code here// (SDI documents will reuse this document)m_color=RGB(0,0,0);m_rectGraph=CRect(0,0,0,0);m_nType=1;m_nCurveCount=0;return TRUE;}(3).void CDrawDoc::Serialize(CArchive& ar) //文档类的序列化函数为保存和读出代码{if (ar.IsStoring()){// TODO: add storing code herear<<m_color;ar<<m_LastPoint;ar<<m_NewPoint;ar<<m_nType;ar<<m_OldPoint;ar<<m_nCurveCount;ar<<m_rectGraph;for(int i=0;i<m_nCurveCount;i++)ar<<m_Curve[i];}else{// TODO: add loading code herear>>m_color;ar>>m_LastPoint;ar>>m_NewPoint;ar>>m_nType;ar>>m_OldPoint;ar>>m_nCurveCount;ar>>m_rectGraph;for(int i=0;i<m_nCurveCount;i++)ar>>m_Curve[i];}}视图类:(4).class CDrawView : public CView{┆private:BOOL m_bCaptured; //捕捉标志//自定义的刷新函数,用于调整矩形的坐标,确保矩形的第二对坐标参数大于第一对 void MyInvalidateRect(CRect rect,BOOL bErase=TRUE);};(5).CDrawView::CDrawView() //视图类构造函数初始化变量{// TODO: add construction code herem_bCaptured=FALSE;}(6).void CDrawView::OnDraw(CDC* pDC) //绘图{CDrawDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereCPen newPen,*oldPen;newPen.CreatePen(PS_SOLID,1,pDoc->m_color); //创建选定颜色的绘图笔oldPen=pDC->SelectObject(&newPen);switch(pDoc->m_nType){case 1: //画直线pDC->MoveTo(pDoc->m_OldPoint);pDC->LineTo(pDoc->m_NewPoint);break;case 2: //绘制矩形pDC->Rectangle(pDoc->m_rectGraph);break;case 3: //绘制圆pDC->Ellipse(pDoc->m_rectGraph);break;case 4: //绘制随手画if(pDoc->m_nCurveCount>0){pDC->MoveTo(pDoc->m_Curve[0]);for(int j=1;j<pDoc->m_nCurveCount;j++)pDC->LineTo(pDoc->m_Curve[j]);}break;}pDC->SelectObject(oldPen);}菜单消息处理函数:(7).void CDrawView::OnSelectEllipse() //与画圆子菜单对应的消息处理函数{// TODO: Add your command handler code hereCDrawDoc* pDoc=GetDocument();ASSERT_VALID(pDoc);pDoc->m_nType=3;}void CDrawView::OnUpdateSelectEllipse(CCmdUI* pCmdUI) //修改画圆子菜单对应的消息处理函数{// TODO: Add your command update UI handler code hereCDrawDoc* pDoc=GetDocument();ASSERT_VALID(pDoc);pCmdUI->SetCheck(pDoc->m_nType==3);}void CDrawView::OnSelectFree() //与随手画子菜单对应的消息处理函数{// TODO: Add your command handler code hereCDrawDoc* pDoc=GetDocument();ASSERT_VALID(pDoc);pDoc->m_nType=4;}void CDrawView::OnUpdateSelectFree(CCmdUI* pCmdUI)//修改随手画子菜单对应的消息处理函数{// TODO: Add your command update UI handler code hereCDrawDoc* pDoc=GetDocument();ASSERT_VALID(pDoc);pCmdUI->SetCheck(pDoc->m_nType==4);}void CDrawView::OnSelectLine()//与画线子菜单对应的消息处理函数{// TODO: Add your command handler code hereCDrawDoc* pDoc=GetDocument();ASSERT_VALID(pDoc);pDoc->m_nType=1;}void CDrawView::OnUpdateSelectLine(CCmdUI* pCmdUI)//修改画线子菜单对应的消息处理函数{// TODO: Add your command update UI handler code hereCDrawDoc* pDoc=GetDocument();ASSERT_VALID(pDoc);pCmdUI->SetCheck(pDoc->m_nType==1);}void CDrawView::OnSelectRect()//与画矩形子菜单对应的消息处理函数{// TODO: Add your command handler code hereCDrawDoc* pDoc=GetDocument();ASSERT_VALID(pDoc);pDoc->m_nType=2;}void CDrawView::OnUpdateSelectRect(CCmdUI* pCmdUI)//修改画矩形子菜单对应的消息处理函数{// TODO: Add your command update UI handler code hereCDrawDoc* pDoc=GetDocument();ASSERT_VALID(pDoc);pCmdUI->SetCheck(pDoc->m_nType==2);}void CDrawView::OnColor() //显示颜色对话框处理函数{// TODO: Add your command handler code hereCDrawDoc* pDoc=GetDocument();ASSERT_VALID(pDoc);CColorDialog dlg;if(dlg.DoModal()==IDOK)pDoc->m_color=dlg.GetColor(); //取颜色对话框颜色}鼠标消息处理函数:(8).void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) //鼠标按下消息处理函数{// TODO: Add your message handler code here and/or call defaultCDrawDoc* pDoc=GetDocument();ASSERT_VALID(pDoc);if(pDoc->m_nType>=1&&pDoc->m_nType<=4){m_bCaptured=TRUE;SetCapture(); //设置鼠标捕获pDoc->m_OldPoint=point; //取画线起始点、续点、区域pDoc->m_NewPoint=point;pDoc->m_rectGraph=CRect(point,point);if(pDoc->m_nType==4){pDoc->m_Curve[0]=point; //随手画的第一个点pDoc->m_nCurveCount=1; //随手画的所有点计数}Invalidate();}CView::OnLButtonDown(nFlags, point);}void CDrawView::OnMouseMove(UINT nFlags, CPoint point)//鼠标移动消息处理函数{// TODO: Add your message handler code here and/or call defaultCDrawDoc* pDoc=GetDocument();ASSERT_VALID(pDoc);if(m_bCaptured){if(pDoc->m_nType>=1&&pDoc->m_nType<=3)//鼠标移动获取起点、续点、区域{InvalidateRect(pDoc->m_rectGraph);pDoc->m_rectGraph=CRect(pDoc->m_OldPoint,point);pDoc->m_NewPoint=point;InvalidateRect(pDoc->m_rectGraph);}else{if(pDoc->m_nCurveCount<1000)//随手画则计算弯曲点{pDoc->m_OldPoint=pDoc->m_NewPoint;pDoc->m_NewPoint=point;pDoc->m_rectGraph=CRect(pDoc->m_OldPoint,pDoc->m_NewPoint);pDoc->m_Curve[pDoc->m_nCurveCount]=point;pDoc->m_nCurveCount++;InvalidateRect(pDoc->m_rectGraph);}}}CView::OnMouseMove(nFlags, point);}void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)//{// TODO: Add your message handler code here and/or call defaultm_bCaptured=FALSE;ReleaseCapture(); //释放捕获Invalidate();CView::OnLButtonUp(nFlags, point);}。

相关文档
最新文档