文档库 最新最全的文档下载
当前位置:文档库 › C++课设:简单画图程序

C++课设:简单画图程序

C++课设:简单画图程序
C++课设:简单画图程序

简单画图程序

1.基本功能描述

本次课程设计的任务是利用计算机和VC开发环境编写一个简单画图程序,该程序的设计指标(即主要功能)有:①用鼠标拖动绘制圆、椭圆、矩形,线等基本图形;②能控制画笔的线宽和颜色;③能对图形进行颜色填充;④在鼠标移动的过程中能实时显示当前绘制的图形。

除了以上几点功能,我有另外添加了工具栏、铅笔、橡皮等功能来使程序更方便地让用户使用,简化了人机交互的过程。

2.设计思路

首先是界面的问题,既然课设的题目是简单画图,那在建立工程的时候就要选择文档结构而不是以前做的基于对话框。可选择单文档结构或多文档结构,但想到画图界面一般只有一个,从简洁的角度考虑,选择单文档结构。而且用户界面在设计的时候要尽可能简单美观,一目了然,对相应功能有图标提示,使用户方便使用。

然后便是画图功能的具体实现。分析课设要求,可以发现功能一要求的的椭圆、矩形、直线可以分别通过Ellipse();、Rectangle();、MoveTo();、LineTo();这四个函数来实现。功能二控制画笔线宽和颜色可以给二者分别关联参数,通过改变线宽参数值来控制线宽,通过调用通用对话框改变颜色参数值来控制颜色。功能三对图形进行颜色填充虽以前未接触过,但查阅资料后发现可以调用ExtFloodFill();并合理设定参数值来实现。功能四的实时显示功能可以通过调用MouseMove();函数来实现。

这些功能需要建立菜单资源来表示各个功能选项,并建立相应的消息响应函数来进行实现。另外,画图程序主要是通过鼠标来进行操作,所以要对鼠标消息的响应及处理函数多下功夫来思考和编写。

至于额外添加的功能,工具栏通过添加工具栏资源和关联相应菜单中画图功能ID实现;铅笔、橡皮的功能则是利用MouseMove();函数,在其中做了一些改动来实现。

图1 程序流程图

MouseMove 函数

鼠标左键弹起响应函数

m_ptOldOrigin=point;

2.1.程序流程图:

开始

变量初始化

(m_nDrawType ,m_clr 等)

铅笔

橡皮

直线

椭圆

线宽线型设置

颜色选择

填充

响应函数 m_Pen(m_Eraser)=

TRUE

并将其他橡皮(铅笔)、填充等所关联变量置为FALSE.

响应函数 m_nDrawType =1/2/3/4;对应点、直线、矩形、椭圆

矩形

响应函数 创建相应对话框

IDOK==1?

更改变量m_clr (m_nLineWidth ,m_nLineStyle)参数值

响应函数 m_Fill=TRUE 并将其他橡皮、铅笔等所关联变量置为FALSE.

鼠标左键按下 响应函数

m_ptNewOrigin=point; 进行填充

铅笔功能

橡皮功能

画点

画直线

画矩形

画椭圆

结束

判断各参数值以确定功能

3.软件设计

3.1.设计步骤

1)打开VS2010,选择新建项目,选中MFC应用程序,标题为CWN_Graphic;

2)选择单文档结构,其他为默认值,点击完成。

3.2 .界面设计

3.2.1.添加菜单

1)选择资源视图,鼠标右键,添加,资源;

2)在资源视图中打开添加的菜单资源,将各个功能的名称添加进去并合理安排,并设

置好相应的ID,如图2:

图2编辑菜单及相应ID

3.2.2 .添加工具栏

1)在资源视图下右键选择添加资源,ToolBar;

2)打开新建的工具栏,在上面添加各个小按钮,按钮图像自行画出;

3)将每个按钮的ID与菜单项一一对应起来,如图3:

图3工具栏样式及ID

3.3.关键功能实现

1)打开类向导;

2)为各个菜单项添加消息函数,如图4:

图4 添加消息函数相关ID、关联变量及响应函数如表1:

表1相关功能ID 及所关联变量

名称ID 关联变量响应函数

点IDM_DOT m_nDrawType=1 OnDot()

直线IDM_LINE m_nDrawType= 2 OnLine()

矩形IDM_RECTANGLE m_nDrawType= 3 OnRectangle()

椭圆IDM_ELLIPSE m_nDrawType= 4 OnEllipse()

画笔IDM_PEN m_Pen = TRUE OnPen()

填充IDM_FILL m_Fill = TRUE OnFill()

橡皮(小)IDM_ERASER1 - OnEraser1()

橡皮(中)IDM_ERASER2 - OnEraser2()

橡皮(大)IDM_ERASER3 - OnEraser3()

线宽+线型IDM_LINE_WIDTH - OnLineWidth()

颜色IDM_Color - OnColor()

3)按照所需在CWN_GraphicView.h中添加变量并在CWN_GraphicView.cpp中对变量初始化:

UINT m_nDrawType = 0;//绘画类型初始为0

CPoint m_ptOldOrigin = 0;//坐标点初始为(0,0)

CPoint m_ptNewOrigin = 0;

UINT m_nLineWidth = 0;//线宽初始为0

UINT m_EraserWidth = 1;//橡皮初始大小为1

INT m_nLineStyle = 0;//线宽初始为0

BOOL m_Pen = FALSE;//画笔功能未被选中

BOOL m_Eraser = FALSE;//橡皮功能未被选中

BOOL m_LButtonDown = FALSE;//鼠标左键未按下

BOOL m_Fill = FALSE;//填充功能未被选中

COLORREF m_clr = RGB(0,0,0);//颜色初始值为黑色

4)在各响应函数中添加相应代码,例如:

/**********左键按下************/

/*该函数实现了再鼠标左键按下时确定按下点的坐标、将左键被按下置为1和判断是否填充选项被选中,若选中则进行填充,未选中则无操作*/

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

{

m_ptNewOrigin=point; //将当前点坐标传给变量

m_ptOldOrigin=point;

m_LButtonDown=TRUE; //左键按下赋值1

if(m_Fill==TRUE) //填充功能

{

CClientDC dc(this);

HBRUSH hBrush=CreateSolidBrush(m_clr); //选择画刷

dc.SelectObject(hBrush);

dc.ExtFloodFill (m_ptNewOrigin.x,m_ptNewOrigin.y,RGB(0,0,0),0);

//该函数将使用当前刷子填充显示表面区域

}

CView::OnLButtonDown(nFlags,point);

}

/***********左键松开************/

/*该函数通过在鼠标左键松开时,将松开点坐标传给PC,并由之前选择的绘画类型来判断要进行的绘画操作*/

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

{

m_LButtonDown=FALSE; //左键松开赋值0

CClientDC dc(this);

CPen pen(m_nLineStyle,m_nLineWidth,m_clr); //创建画笔画刷

dc.SelectObject (&pen); //选择画笔

CBrush*pBrush=CBrush::FromHandle ((HBRUSH)GetStockObject(NULL_BRUSH));

dc.SelectObject (pBrush); //选择画刷

m_ptNewOrigin=point; //左键松开的坐标点送给m_ptNewOrigin

switch(m_nDrawType)

{

case 1:/*******画点*******/

dc.SetPixel(point,m_clr);

break;

case 2:/*******画线*********/

dc.MoveTo (m_ptOldOrigin);

dc.LineTo (m_ptNewOrigin);

break;

case 3:/**********画矩形**********/

dc.Rectangle (CRect(m_ptOldOrigin,m_ptNewOrigin));

break;

case 4:/*********画椭圆**********/

dc.Ellipse (CRect(m_ptOldOrigin,m_ptNewOrigin));

break;

}

CView::OnLButtonUp (nFlags,point);

}

/*************线型+线宽设置*********/

/*该函数在线型线宽功能被选择时,会生成一个线型线宽设置对话框(之前在资源中添加和编辑的对话框资源),并将用户操作后的线型线宽值传给PC*/

void CCWN_GraphicView::OnLineWidth()

{

// TODO: 在此添加命令处理程序代码

CSettingDlg line_dlg;

line_dlg.m_nLineWidth = m_nLineWidth ; //将先前设置的线宽回传给对话框

line_dlg.m_nLineStyle = m_nLineStyle; //将先前设置的线型回传给对话框

if(IDOK==line_dlg.DoModal ())

{

m_nLineWidth=line_dlg.m_nLineWidth ;

m_nLineStyle = line_dlg.m_nLineStyle ;

}

}

/*************动态显示函数******************/

/*该函数单独写出,配合OnMouseMove();函数可实现动态显示的功能*/

void CCWN_GraphicView::Draw()

{

CClientDC dc(this);

CPen pen(m_nLineStyle,m_nLineWidth,m_clr);

CPen *oldPen=dc.SelectObject(&pen);

dc.SelectStockObject(NULL_BRUSH);

int drawmode=dc.SetROP2(R2_NOTXORPEN);

/*R2_NOTXORPEN模式的作用是:先把画笔的颜色取反,再与屏幕颜色进行“或”操作,从而得到像素最终显示的颜色。*/

switch(m_nDrawType)

{

case 2:

dc.MoveTo(m_ptOldOrigin);

dc.LineTo(m_ptNewOrigin);

break;

case 3:

dc.Rectangle(CRect(m_ptOldOrigin,m_ptNewOrigin));

break;

case 4:

dc.Ellipse(CRect(m_ptOldOrigin,m_ptNewOrigin));

break;

}

dc.SetROP2(drawmode);

dc.SelectObject(oldPen);

}

/*************MOUSE MOVE***************/

/*此函数与前面的动态显示函数(Draw();)进行配合便可实现在鼠标移动时的实时显示功能,思路是在绘图时,先用屏幕背景色覆盖掉鼠标移动前的画面,然后用选定的画笔颜色重新绘制下一次鼠标移动的画面*/

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

{

// TODO: 在此添加消息处理程序代码和/或调用默认值

CClientDC dc(this);

CPen pen(m_nLineStyle,m_nLineWidth,m_clr);

CPen *oldPen=dc.SelectObject(&pen);

if(m_LButtonDown!=FALSE)

{

Draw();

m_ptNewOrigin=point;

Draw();

if(m_Pen==TRUE) //铅笔功能

{

m_nDrawType=0; //画图类型改为初始值,以免多重画图

dc.MoveTo (m_ptOldOrigin);

dc.LineTo (m_ptNewOrigin);

//修改线段起点

m_ptOldOrigin=m_ptNewOrigin;

m_ptNewOrigin=point;

}

if(m_Eraser==TRUE) //橡皮功能

{

m_nDrawType=0;

CPen pen(m_nLineStyle,m_EraserWidth,RGB(255,255,255));

dc.SelectObject(&pen);

dc.MoveTo (m_ptOldOrigin);

dc.LineTo (m_ptNewOrigin);

//修改线段起点

m_ptOldOrigin=m_ptNewOrigin;

m_ptNewOrigin=point;

}

}

dc.SelectObject(oldPen);

CView::OnMouseMove(nFlags, point);

}

/************选择铅笔**************/

/*该函数在选择铅笔功能后,将铅笔功能置为真,其他有干扰的功能置为假*/

void CCWN_GraphicView::OnPen()

{

// TODO: 在此添加命令处理程序代码

m_Pen = TRUE; //画笔被选中

m_Fill = FALSE; //取消填充功能

m_Eraser = FALSE; //取消橡皮功能

}

4.结论与心得体会

本次课程设计虽说是“简单”画图程序的设计,但真要是自己做起来,感觉一点也不简单。以前做的课程实验及课后习题等,几乎都是在老师讲解过相关课本知识和示范操作后稍作一定的功能修改,但因为毕竟是学过了,也看过老师的演示,所以就算有不会的地方也能在观看教学PPT或课堂笔记及查看教材资料后自行解决。但这次的简单画图程序的设计,不仅综合了以前对MFC编程的全部所学知识,而且还有未学过的几个函数的详细应用,这就需要在仔细查阅相关书籍、网络资料等来对这几个函数的用法进行了解。虽说起来简单,但实际操作中却漏洞百出,代码设计一改再改才最后实现了预定功能。

另外,在这次的课程设计程序编写过程中,我对MFC编程的过程流程在脑中也愈发清晰,对每个函数应如何声明,实现,使用的过程愈发明了。过程一波三折,有语法问题,函数使用的问题,兼容性问题,头文件或变量无法识别,逻辑错误等等,每一种错误都花

费了许多精力去找寻问题所在。虽然辛苦,但觉得收获良多。

在编写程序的过程中,首先是一头雾水,总是在出错,而自己有不明白为什么会出错;慢慢坚持编写和查资料等找错,就一点点好了起来,对整个流程需要做的事也越来越明白;等到后期,就基本不会再出什么错了,就只是对程序的优化处理。可能程序的编写就是这样,开头最难,等写下去,后面倒是只是代码的添加,却不怎么难了。所以,在编写程序之前,一定要自己把程序流程好好想一想,弄明白每个流程的关键所在,流程搞得越清楚,在后续编写的过程中遇到的错误就会越少,越顺利。

除此之外,遇到搞不明白的问题的时候,要多和同学进行讨论。本次编写过程中,我就经常和选题相同的另一位同学进行相关的讨论,尤其是对MouseMove函数的使用以及填充功能的实现,我们进行了大量的讨论,在讨论后我们再进行实际验证,并不断修改代码,最终才使相关功能得以实现。

5.思考题

1)说明直线、椭圆、矩形绘制使用的函数,及其参数含义?

答:直线、椭圆及矩形的绘制是在CCWN_GraphicView::OnLButtonUp();函数中实现,此函数在左键弹起时,将松开点坐标传给PC,并由之前选择的绘画类型(m_nDrawType的值,为2则直线,3则是矩形,4则是椭圆)来判断要进行的绘画操作。若为直线,则调用dc.MoveTo (m_ptOldOrigin);dc.LineTo (m_ptNewOrigin);这两个函数,前者将窗口坐标移到指定位置,后者执行连线操作;若为矩形,则调用dc.Rectangle (CRect(m_ptOldOrigin,m_ptNewOrigin));函数,通过两点坐标画出矩形;若为椭圆,则调用dc.Ellipse (CRect(m_ptOldOrigin,m_ptNewOrigin));函数,由两点坐标确定一个矩形,再由矩形来内接画出一个椭圆。

2)如何控制菜单项的状态,使用的消息类型?

答:菜单项的状态是通过各个消息响应函数来确定的,我规定了几个变量m_Pen,m_Eraser 等,在选中其中一种功能后,在相应函数将其值置为TRUE,其他值置为FALSE以免产生干扰。而其他的如线型线宽因顾不干扰则只是设置了代表各自实际值的变量而未设置是否被选中的变量。

3)如何设置菜单和工具栏按钮的快捷键操作?

答:快捷键的功能通过在资源视图下设置加速键来实现。

在资源视图下打开加速键列表,在列表末尾空白处点击出现一个新的加速键选项,选

择需要设置加速键的菜单ID值,如IDM_LINE,在修饰符下拉菜单中选择想要进行的快捷操作如Ctrl,在Key下输入想要组合的键值如L,类型选择VIRTKEY后便可完成快捷键的设置。

6.附录

6.1.调试报告

本次课设程序编写及调试过程中,遇到的问题主要由以下几种:

1)语法错误:

例如在写“;”时的中英文格式不对、少写了“}”等导致的语法错误,修改方法即为将错误的语法改为正确的。

2)无法识别预编译头文件:

遇到这样的问题后,在项目中打开属性,C/C++,预编译头,选择不使用预编译头文件即可。

3)无法识别**字符:

这类问题的解决方法是:在项目中打开属性,配置属性,常规,字符集,选择使用多字节字符集即可解决。

4)函数使用方式有错误:

出现这一类错误主要是对函数的使用不熟悉,对其中参数的作用不了解所致;解决方法只能是去多方查阅资料,深入了解其使用方法及参数含义,并在可能的情况下去找一些范例来进行对比,从而掌握其正确使用方法。

5)其他:

本次编写过程中还出现过编译链接都能过去,但运行时却会出现一个对话框的warning 然后程序不能运行的错误。有过两次,第一次未搞明白其具体含义,在上网查询解决方法后,通过项目属性,代码生成,运行库下选择多线程DLL(/MD)后解决;第二次在多方查找资料后明白了是因为在添加工具栏按钮时,按钮位图大小不一(有两种,一种大小17*17,另一种大小15*16)所致,将按钮位图大小改为相同的后,报错消失。

6.2.测试结果

初始界面,图5:

图5程序运行初始界面线型线宽设置对话框,图6:

图6线型线宽设置对话框

操作示例,图7:

图7操作示例

6.3.关键源代码

// GraphicView.cpp : CGraphicView 类的实现

//

#include "stdafx.h"

// SHARED_HANDLERS 可以在实现预览、缩略图和搜索筛选器句柄的// ATL 项目中进行定义,并允许与该项目共享文档代码。

#ifndef SHARED_HANDLERS

#include "Graphic.h"

#endif

#include "GraphicDoc.h"

#include "GraphicView.h"

#include "SettingDlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

// CGraphicView

IMPLEMENT_DYNCREATE(CGraphicView, CView)

BEGIN_MESSAGE_MAP(CGraphicView, CView)

// 标准打印命令

ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CGraphicView::OnFilePrintPreview) ON_WM_CONTEXTMENU()

ON_WM_RBUTTONUP()

ON_WM_LBUTTONUP()

ON_WM_LBUTTONDOWN()

ON_COMMAND(IDM_DOT, &CGraphicView::OnDot)

ON_COMMAND(IDM_LINE, &CGraphicView::OnLine)

ON_COMMAND(IDM_RECTANGLE, &CGraphicView::OnRectangle)

ON_COMMAND(IDM_ELLIPSE, &CGraphicView::OnEllipse)

ON_COMMAND(IDM_LINE_WIDTH, &CGraphicView::OnLineWidth)

ON_COMMAND(IDM_PEN, &CGraphicView::OnPen)

ON_WM_MOUSEMOVE()

ON_COMMAND(IDM_Color, &CGraphicView::OnColor)

ON_COMMAND(IDM_FILL, &CGraphicView::OnFill)

ON_COMMAND(IDM_ERASER1, &CGraphicView::OnEraser1)

ON_COMMAND(IDM_ERASER2, &CGraphicView::OnEraser2)

ON_COMMAND(IDM_ERASER3, &CGraphicView::OnEraser3) END_MESSAGE_MAP()

// CGraphicView 构造/析构

CGraphicView::CGraphicView()

{

// TODO: 在此处添加构造代码

/**************变量初始化*************/

m_nDrawType = 0; //绘画类型初始为0

m_ptOldOrigin = 0; //坐标点初始值为0

m_ptNewOrigin = 0;

m_EraserWidth = 1; //橡皮初始大小为1

m_nLineWidth = 0; //线宽初始值0

m_nLineStyle = 0; //线型初始为0

m_clr = RGB(0,0,0); //颜色初始值为黑

m_Pen = FALSE; //画笔初始未选中

m_Eraser = FALSE; //橡皮初始未选中

m_LButtonDown = FALSE; //鼠标左键初始值为0

m_Fill = FALSE; //填充按钮初始未选中

}

CGraphicView::~CGraphicView()

{

}

BOOL CGraphicView::PreCreateWindow(CREATESTRUCT& cs) {

// TODO: 在此处通过修改

// CREATESTRUCT cs 来修改窗口类或样式

return CView::PreCreateWindow(cs);

}

// CGraphicView 绘制

void CGraphicView::OnDraw(CDC* pDC)

{

CGraphicDoc* pDoc = GetDocument();

ASSERT_V ALID(pDoc);

if (!pDoc)

return;

// TODO: 在此处为本机数据添加绘制代码

}

// CGraphicView 打印

void CGraphicView::OnFilePrintPreview()

{

#ifndef SHARED_HANDLERS

AFXPrintPreview(this);

#endif

}

BOOL CGraphicView::OnPreparePrinting(CPrintInfo* pInfo)

{

// 默认准备

return DoPreparePrinting(pInfo);

}

void CGraphicView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) {

// TODO: 添加额外的打印前进行的初始化过程

}

void CGraphicView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) {

// TODO: 添加打印后进行的清理过程

}

void CGraphicView::OnRButtonUp(UINT /* nFlags */, CPoint point)

{

ClientToScreen(&point);

OnContextMenu(this, point);

}

/**********左键按下************/

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

{

m_ptNewOrigin=point; //将当前点坐标传给变量

m_ptOldOrigin=point;

m_LButtonDown=TRUE; //左键按下赋值1

if(m_Fill==TRUE) //填充功能

{

CClientDC dc(this);

HBRUSH hBrush=CreateSolidBrush(m_clr);

dc.SelectObject(hBrush);

dc.ExtFloodFill (m_ptNewOrigin.x,m_ptNewOrigin.y,RGB(0,0,0),0);

}

CView::OnLButtonDown(nFlags,point);

}

/***********左键松开************/

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

{

m_LButtonDown=FALSE; //左键松开赋值0 CClientDC dc(this);

CPen pen(m_nLineStyle,m_nLineWidth,m_clr); //创建画笔画刷dc.SelectObject (&pen);

CBrush*pBrush=CBrush::FromHandle((HBRUSH)GetStockObject

(NULL_BRUSH));

dc.SelectObject (pBrush);

m_ptNewOrigin=point; //左键松开的坐标点送给m_ptNewOrigin

switch(m_nDrawType)

{

case 1:/*******点*******/

dc.SetPixel(point,m_clr);

break;

case 2:/*******线*********/

dc.MoveTo (m_ptOldOrigin);

dc.LineTo (m_ptNewOrigin);

break;

case 3:/**********矩形**********/

dc.Rectangle (CRect(m_ptOldOrigin,m_ptNewOrigin));

break;

case 4:/*********椭圆**********/

dc.Ellipse (CRect(m_ptOldOrigin,m_ptNewOrigin));

break;

}

CView::OnLButtonUp (nFlags,point);

}

/*************动态显示******************/

void CGraphicView::Draw()

{

CClientDC dc(this);

CPen pen(m_nLineStyle,m_nLineWidth,m_clr);

CPen *oldPen=dc.SelectObject(&pen);

dc.SelectStockObject(NULL_BRUSH);

int drawmode=dc.SetROP2(R2_NOTXORPEN);

/*R2_MERGENOTPEN模式的作用是:先把画笔的颜色取反,再与屏幕颜色进行“或”操作,从而得到像素最终显示的颜色。*/

switch(m_nDrawType)

{

case 2:

dc.MoveTo(m_ptOldOrigin);

dc.LineTo(m_ptNewOrigin);

break;

简单画图程序的设计

面向对象程序设计 课程设计报告 设计题目:简单画图程序的设计 学院:信息工程学院 专业:计算机科学与技术(交通)学号:201224020326 姓名:房战锋 同组同学学号:201224020325 指导教师:张少博 2013 年12 月24 日

目录 第一章:设计目的及内容 (2) 1.1【设计目的】 (2) 1.2【设计内容】 (2) 第二章:基本功能概述 (3) 2.1【工程的新建】 (3) 2.2【单文档简介】 (4) 2.3【添加消息响应函数】 (5) 2.4【资源】 (5) 2.5【设备环境】 (6) 第三章:设计思路 (6) 第四章:软件设计 (7) 4.1【设计步骤及关键代码】 (7) 4.1.1【点、直线、矩形、椭圆的绘制】 (9) 4.1.2【连续线及扇形的绘制】 (11) 4.1.3【画刷】 (12) 4.2【设置对话框】 (14) 4.3【颜色】 (14) 4.4【打开与保存】 (15) 第五章:结论与心得体会 (16) 参考文献: (17) 附录: (18) 【调试报告】 (18) 【测试结果】 (18) 【关键代码】 (18)

第1章:设计目的及内容 1.1【设计目的】 1 学习Visual C++的MFC开发程序的步骤。 2 综合运用所学的类、继承和多态的知识。 3 进一步掌握程序的调试方法。 1.2【设计内容】 1利用MFC的向导,创建基于单文档的应用程序; 2 编程实现,绘制线、圆、矩形的功能; 3 能够设定当前要画的图形样式(最少为以上3种)和图形颜色(最少能够设为以下 4 种颜色:黑、红、绿、蓝)。 4 当窗口重绘后,还能保持原来的图形。 5 选做1:能够选中某些已绘制的图形,并删除之。 6 选做2:能够保存已绘制的图形,下次打开时恢复原状。

C++课设:简单画图程序

简单画图程序 1.基本功能描述 本次课程设计的任务是利用计算机和VC开发环境编写一个简单画图程序,该程序的设计指标(即主要功能)有:①用鼠标拖动绘制圆、椭圆、矩形,线等基本图形;②能控制画笔的线宽和颜色;③能对图形进行颜色填充;④在鼠标移动的过程中能实时显示当前绘制的图形。 除了以上几点功能,我有另外添加了工具栏、铅笔、橡皮等功能来使程序更方便地让用户使用,简化了人机交互的过程。 2.设计思路 首先是界面的问题,既然课设的题目是简单画图,那在建立工程的时候就要选择文档结构而不是以前做的基于对话框。可选择单文档结构或多文档结构,但想到画图界面一般只有一个,从简洁的角度考虑,选择单文档结构。而且用户界面在设计的时候要尽可能简单美观,一目了然,对相应功能有图标提示,使用户方便使用。 然后便是画图功能的具体实现。分析课设要求,可以发现功能一要求的的椭圆、矩形、直线可以分别通过Ellipse();、Rectangle();、MoveTo();、LineTo();这四个函数来实现。功能二控制画笔线宽和颜色可以给二者分别关联参数,通过改变线宽参数值来控制线宽,通过调用通用对话框改变颜色参数值来控制颜色。功能三对图形进行颜色填充虽以前未接触过,但查阅资料后发现可以调用ExtFloodFill();并合理设定参数值来实现。功能四的实时显示功能可以通过调用MouseMove();函数来实现。 这些功能需要建立菜单资源来表示各个功能选项,并建立相应的消息响应函数来进行实现。另外,画图程序主要是通过鼠标来进行操作,所以要对鼠标消息的响应及处理函数多下功夫来思考和编写。 至于额外添加的功能,工具栏通过添加工具栏资源和关联相应菜单中画图功能ID实现;铅笔、橡皮的功能则是利用MouseMove();函数,在其中做了一些改动来实现。

十款公认最实用的绘图软件评测

十款公认最实用的绘图软件评测 导读: 很多人以为只有专业从事艺术设计类或者画画工作的人才会用到绘图软件,其实不然。在我们的日常生活中,也有许多需要用到绘图软件的职业,工程师、建筑师、原画师、网页设计师、电工师傅等等,在他们的日常工作中都会用到不同类型的绘图软件。 如今市面上有很多种类的绘图软件,但是他们的侧重点都不一样,有的侧重画工业图,有的偏向于艺术设计,还有的偏向于3D画图等,虽然都属于画图软件,但是涉及的方向大不一样。想要正确选择出适合自己的绘图软件,一个个去了解有些不太现实,下面就让小编为大家盘点一下目前公认最好用的10款绘图软件吧! 一、亿图图示专家:亿图图示Edraw Max是一款跨平台使用的全类型图形图表设计软件,用户可以通过它绘制260多种类型的图表,其中包含常用的:流程图、思维导图、信息图、组织结构图、甘特图、地图、线框图、数据模型图、UML以及网络拓扑图等等。 它拥有丰富的精美模板及矢量符号库,操作简单易上手,能让难以理解的文本和

表格转化为简单清晰的图表。除了具备多种绘图功能,亿图还能与其他办公软件相兼容,可以轻松通过软件将文件导出为Office word、excel、ppt、图片、pdf、html、svg、ps,甚至连Visio格式也不在话下! 二、Visio:是微软公司出品的一款的软件,它有助于 IT 和商务专业人员轻松地可视化、分析和交流复杂信息。丰富的组件库,各种各样的图表支持,和word 的无缝对接是visio的强项,但是由于其价格过于昂贵,并且无法在linux和osx下运行,可以选择的模板也比较少,加上设计风格过于扁平化,所以目前成为一款很容易被国产新秀软件替代的产品。

程序设计课程设计实验报告

《程序设计》课程设计姓名: 学号: 班级:软件工程14班 指导教师: 成绩:

1.消除类游戏 【问题描述】 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。 【基本要求】 现在给你一个n行m列的棋盘(1≤n,m≤30),棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。 请注意:一个棋子可能在某一行和某一列同时被消除。 输入数据格式: 输入的第一行包含两个整数n,m,用空格分隔,分别表示棋盘的行数和列数。接下来n行,每行m 个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。 输出数据格式: 输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。 【测试数据】 为方便调试程序,可将输入数据先写入一个文本文件,然后从文件读取数据处理,这样可避免每次运行程序时都要从键盘输入数据。 测试数据一 输出说明: 棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。 测试数据二 输出说明: 棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。 【功能实现】 #include #include<> usingnamespacestd;

{ intm,n,i,j; inttemp; cin>>n>>m; temp=m; m=n; n=temp; int*map=newint[m*n]; int*mark=newint[m*n]; int*tmap=map; int*tmark=mark; intdif=0; ount=0; } p rintf("请输入要输入数的个数\n"); s canf("%d",&n);/*输入要输入数的个数*/ f or(i=0;idata1[j+1].number)

初识画图程序教案

初识“画图”程序 一、课堂导入 小朋友们,你们喜欢画画吗?平常你们画画都画在哪里呢?(纸上)那你们想不想知道计算机(电脑)画出来的画是什么样的呢?(想)让我们一起来欣赏一下。 出示一些以前学生的优秀作品。 你觉着这几幅画画的怎么样? 你们想不想也变成电脑小画家创作自己的作品呢? 二、认识“画图”程序界面 好,那么我们需要电脑里的一位帮手来帮助我们,大家知道它是谁吗?今天老师就带着大家一起来认识一下“画图”程序。 在认识“画图”程序之前,老师有个问题要考考大家,大家还记得怎么打开计算器吗?接下来,请大家用同样的方法打开画图。 师生演示:开始→所有程序→附件→画图,最大化。 打开以后,呈现在我们面前的就是画图窗口,接下来,就请大家对照课本15页认一认“画图”窗口的4个部分,已经完成的小朋友同桌之家互相说一说。 现在老师就来考考大家,看看大家都认识吗? ①认一认“画图”这位好帮手的4个部分(参考教材15页)。 (它主要由四大部分组成:快速访问工具栏,“画图”按钮,功能区以及绘图区域组成。看绘图区域,就是我们美术上用的画纸。) 三、认识“画图”工具 师:接下来,我找一位小朋友来说一下在美术课上,要想画出一幅作品需要用到哪些工具? 生:颜料、铅笔、橡皮、绘画纸、调色板等 师:我们的“画图”程序里也有这些工具,接下来给大家3分钟的时间请大家尝试用这些工具来简单地画一幅各自擅长的作品。(老师给大家一些小提示:想一想我们在美术课中的画图步骤,要想画出一幅作品,首先用铅笔画出轮廓,然后再填充颜色。大家可以按照这个思路来画。)找同学让他说一说画的是什么?怎么画的?

(小窍门:当鼠标指针在工具图标上停留时,指针下方就会显示这个工具的名称,同时还会显示介绍这种工具作用的文字)真是一位善于观察善于探索的小朋友。总结:她刚刚画图用到了铅笔和刷子这两个工具,接下来就请大家再用这两个工具画一幅我们校园里的树,看看大家能不能探索到这两个工具其他的功能。 四、运用“画图”工具创作作品 现在我们已经认识了这些工具,接下来,请大家选择合适的工具绘制“成长的小树”,各种形状的树都可以画,也可以参照教材16页。 【1、交流说说,用什么工具画树枝、茂盛的大树等】 铅笔和刷子。 【2、谁能说说“铅笔”、“刷子”这两个工具画出来的有什么不同?】(铅笔:表现细节、勾画轮廓;刷子:多种笔头、纹理丰富。) 因此,大家在画图程序上画画时,可以跟我们在纸上画画一样,先用铅笔把轮廓画出来,再填充颜料;也可以直接用刷子把树画出来。 【3、在刚刚画画的过程中,老师发现有的小朋友画的粗,有的画的细,这是怎么回事呢?】 是的,在画图程序里,我们可以选择不同粗细,当然也可以选择不同笔头、不同颜色的刷子等来美化我们的作品。 【4、刚刚在画小树的过程中,我发现有的同学在画的时候,一不小心画错了,该怎么办呢?】 使用橡皮擦。(撤销或图像—删除图像) 接下来,大家进一步美化自己的作品,已经完成的同学可以帮小树添加些新朋友。如:太阳,小鸟、花等。(教师巡回指导) 五、作品评价 师总结:小朋友们在使用工具时,一定要谨慎、小心,因为鼠标非常灵活,不像我们平常用的画笔容易掌控,还有一定要选择合适的工具进行绘画。 退出“画图”程序 作品完成后,我们要退出“画图”程序,当我们单击“关闭”按钮时,屏幕上会出现一个问我们“要不要保存图画”的对话框,单击“不保存”,就不保存

简单画图程序-课程设计

简单画图程序-课程设计 目录 1. 基本功能描 述 ............................................................. 1 2. 设计思路 ................................................................. 1 3. 软件设 计 (3) 3.1 设计步 骤 (3) 3.2 界面设 计 (6) 3.3 关键功能的实 现 ...................................................... 7 4. 结论与心 得体会 ........................................................... 8 5. 参考文 献 ................................................................. 9 6. 思考 题 (9) 7. 附 录 ..................................................................... 9 7.1 调试报 告 (9)

7.2 测试结 果 (10) 7.3 关键源代 码 (1) 武汉理工大学《专业课程设计2(面向对象程序设计)》课程设计说明书 简单画图程序 1. 基本功能描述 1) 在菜单处的有相应的菜单项,可以选择绘制的图形形状,如直线、矩形及椭圆,可 -5可供选择,还可以选择线色以及填充色,通过弹出的颜色对话框选择以选择线宽,有1 需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔以及画刷来绘制选择的图形。 2) 选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决定图形的大小,鼠标弹起,此图形则绘制完毕。 3) 增添了工具栏,有相应的选择项,可以更方便地实现相应的功能。 2. 设计思路 1) 对需要用到的变量进行初始化。 2) 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。选择不同的线宽,线色与填充色,则改变画笔和画刷的属性。 3) 鼠标的按下响应LButtonDown(),定义起点的坐标,鼠标的拖动响应MouseMove()改变终点的坐标,鼠标的弹起响应LButtonUp(),刷新,得到绘制图形。

C语言程序简单例子讲解学习

实验二参考答案 1.输入两个整型数字,输出他们的和。 #include main() { int a, b, sum; scanf(“%d%d ”, &a, &b); sum=a+b; printf(“a+b=%d ”, sum); } 2.输入两个实型数,输出他们的和与乘积。 #include main() { float a, b, sum, product; scanf(“%f%f ”, &a, &b); sum=a+b; product=a*b; printf(“a+b=%5.2f, a*b =%5.2f ”, sum, product); } 3.求方程02=++c bx ax 的根(设042≥-ac b )(其中a ,b ,c 的值由键盘输入)。 #include #include main() { float a, b, c, dt, x1, x2; scanf(“%f%f%f ”, &a, &b, &c); dt=sqrt(b*b-4*a*c); x1=(-b+dt)/(2*a); x2=(-b-dt)/(2*a); printf(“x1=%5.2f, x2 =%5.2f ”, x1, x2); }

4.鸡兔同笼,已知鸡兔总头数为h,总脚数为f,求鸡兔各多少只?(h和f的值由键盘输入,输出鸡和兔的头数) #include main() { int h, f, x,y; scanf(“%d%d”, &h, &f); x=2*h-f/2; y=f/2-h; printf(“x=%d, y =%d”, x, y); }

小学信息技术《初识画图》教案

《初识画图》教学设计及反思 【课题】初识画图 【课时】 1课时 【教学目标】 知识与技能: 1、学会启动和退出“画图”软件; 2、了解选择“画图工具”的方法; 3、掌握直线、矩形、橡皮等工具的使用方法; 4、学会保存“画图”作品; 过程与方法: 通过对旧知识复习进行知识迁移,从而掌握新知识;在欣赏画图软件功能和初步认识工具箱中工具的过程中,感受“画图”程序的强大功能。同时通过作品“房子”的认知、绘制、创作过程,自主探索基本工具直线、矩形以及橡皮擦的使用。在这个过程中,引导学生在小组学习氛围中,互相交流,资源共享,培养学生的合作意识。通过绘制作品活动,培养学生对计算机学习的兴趣。 情感态度与价值观: 通过绘画,培养学生对信息技术课程的兴趣,对自然和生活的热爱,激发学生的创新精神,培养学生的审美能力。 行为与创新

学习保存作品的方法,进一步增强学生的文件保存意识。 【教学重点】 认识“画图”软件的窗口,了解各部分组成的名称。 【教学难点】 掌握直线、矩形、橡皮等工具的使用方法,根据需要调整“画图区”的大小。 【教学准备】 教学课件、计算机网络教学环境 【教学过程】 一、导入课题 孩子们,你们喜欢画画吗?画画的时候用到哪些工具呢? 老师在这里给大家准备了一个游戏:看图猜成语,你们敢于挑战吗?第一幅:第二幅:第三幅:,看来同学们都很聪明,你们猜一猜老师这些画都是用什么作出来的? 对就是电脑,我们今天就来学习用电脑画图,也就是第八课《初识画图》。(板书课题:初识画图) 通过谈话拉近与学生的关系,使得课堂气氛和谐。用学生熟悉的图片激发学生对“画图”软件的学习兴趣,为本节的学习打下基础。 二、讲授新课 老师在这里给大家设置了几个任务,我们以小组为单位,比一比,看一看,哪一组同学完成的最好,老师奖励小奖品哟! 任务一:启动“画图”软件

简易画图板设计报告

设计报告:Graphic简易画 图板 -----韩伟谢程焜肖越周峰 电科二班

1设计目的 设计一个单文档类型的MFC AppWizard (exe)工程,工程取名为:Graphic。此程序将实现简单的绘图功能,包括点、直线、矩形、椭圆、扇形和连续线的绘制。并且能实现绘图的控制,包括线宽、线型和颜色的设置,图形的保存和打开以及笔刷的使用。 2 总体设计 设计图如图6

图6 3详细设计 首先,新建一个单文档类型的MFC AppWizard (exe)工程,工程取名为:Graphic。为此程序添加一个子菜单,菜单名称为“绘图”,并为其添加六个菜单项,分别用来控制不同图形的绘制。当用户选择其中的一个菜单项后,程序将按照当前的选择进行相应图形的绘制。添加的六个菜单项的ID及名称如表1所示。然后分别为这六个菜单项添加命令响应,本程序让视类(CGraphicView)对这些菜单命令进行响应,这六个响应函数的名称分别如表1所示。

在程序运行以后,当用户单击某个菜单项时,应该把用户的选择保存起来,以便随后的绘图操作使用。因此在CGraphicView类中添加一个私有变量m_nDrawType;用来保存用户的选择,该变量的定义如下所述: private: UINT m_nDrawType; 接着,在视类的构造函数中将此变量初始化为0,程序代码如下: CGraphicView::CGraphicView() { // TODO: add construction code here m_nDrawType=0; } 利用switch/case语句,来分别完成相应图形的绘制。当用户选择【绘图】菜单下的不同子菜单项时,将变量m_nDrawType设置为不同的值。程序代码如下:void CGraphicView::OnDot() { // TODO: Add your command handler code here m_nDrawType=1; } void CGraphicView::OnLine() { // TODO: Add your command handler code here m_nDrawType=2; } void CGraphicView::OnRectangle() { // TODO: Add your command handler code here m_nDrawType=3; } void CGraphicView::OnEllipse() { // TODO: Add your command handler code here m_nDrawType=4;

JAVA课程设计画图软件

package hh; import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import java.awt.geom.*; class Point { int x,y; Color col; int tool; int boarder; Point(int x, int y, Color col, int tool, int boarder) { this.x = x; this.y = y; this.col = col; this.tool = tool; this.boarder = boarder; } } /* *BasicStroke *Choice *validate(); **/ class paintboard extends Frame implements ActionListener, MouseMotionListener, MouseListener, ItemListener { int xx0=0,yy0=0; int xx1=0,yy1=0; int type=6; int x = -1, y = -1; int con = 1; //画笔大小 int Econ = 5; //橡皮大小 int toolFlag = 0; //toolFlag:工具标记 //toolFlag工具对应表: //(0--画笔);(1--橡皮);(2--清除);

//(3--直线);(4--圆);(5--矩形); Color c = new Color(0,0,0); //画笔颜色 BasicStroke size = new BasicStroke (con,BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL);//画笔粗细 Point cutflag = new Point(-1, -1, c, 6, con);//截断标志 Vector paintInfo = null;//点信息向量组 int n = 1; // *工具面板--画笔,直线,圆,矩形,多边形,橡皮,清除*/ Panel toolPanel; Button eraser, drLine,drCircle,drRect; Button clear ,pen; Choice ColChoice,SizeChoice,EraserChoice; Button colchooser; Label 颜色,大小B,大小E; paintboard(String s)//构造函数 { super(s); addMouseMotionListener(this); addMouseListener(this); paintInfo = new Vector(); /*各工具按钮及选择项*/ //颜色选择 ColChoice = new Choice(); ColChoice.add("黑色"); ColChoice.add("红色"); ColChoice.add("蓝色"); ColChoice.add("绿色"); ColChoice.addItemListener(this); //画笔大小选择 SizeChoice = new Choice(); SizeChoice.add("1"); SizeChoice.add("3"); SizeChoice.add("5"); SizeChoice.add("7"); SizeChoice.add("9"); SizeChoice.addItemListener(this); //橡皮大小选择 EraserChoice = new Choice();

《认识画图软件》教学设计

《认识画图软件》教学设计 知识与技能: 1、认识Windows XP系统中自带的画图软件。 2、掌握画图软件的启动与退出的方法,并熟悉画图软件窗口的组成。 3、熟练掌握工具箱中个别工具的使用及操作方法。 过程与方法:通过运用画图软件绘画,进一步熟练掌握画图软件的操作及使用方法。 情感态度与价值观:通过画图软件的学习,使学生进一步熟练掌握画图软件各部分的操作方法,同时激发学生对学习电脑的兴趣,感受成功,体验学习计算机,用计算机画画的快乐! 教学目标: 1、知道并掌握画图软件的打开、退出方法; 2、认识并掌握画图窗口的各个组成部分; 尝试使用画图软件工具箱中的椭圆、铅笔、直线、橡皮工具。 教学重点:认识并掌握画图窗口的各个组成部分。 教学难点:画图软件工具的认识及操作方法。 教学过程: 一、导入 我们在上美术课的时候,我们都用一些什么工具画画? 接下来我们来欣赏几张图画,你喜欢它们吗?看它们美吗?你们知道这些画是怎么画出来的吗?这些画都是用电脑画出来的。你们想不想也用电脑试一试,跟他们比一比,看你们能不能超过他们? 如果想用电脑画画,首先我们就应该先认识一些图像处理软件。目前,有许多图像处理软件可以用来画画,今天,我们就来学习这个大家庭中的一个最简单,最容易学会的成员,利用它我们可以画出很多漂亮的图画,比如我们刚才看到的。今天我们就来一起来学习并认识画图软件。(播放PPT并板书课题) 二、新课讲解 “画图“软件是Windows系统中的一名成员。我们想用它来画出漂亮的图画,我们就应该先去了解它,想了解它就需要启动或是关闭它。 第一部分认识画图软件(理论部分) (一)启动画图软件的方法:(边说边在教师机上演示,并把最后结果用PPT 的形式展示在教师机上) 1、鼠标单击开始——程序——附件——画图。 2、双击桌面上的“画图”软件图标。 (二)关闭画图软件的方法:(边说边在教师机上演示,并把最后结果用PPT

课程设计常用数学软件

《常用数学软件介绍》课程设计用Matlab求解下列各题,要求:抄题,写出程序、运行结果,根据要求贴上运行图。 1、求矩阵 211 020 413 A - ?? ? = ? ? - ?? 的逆矩阵1 A-及特征值和特征向量。 解: >> clear; A=[-2 1 1;0 2 0;-4 1 3]; inv(A) [V,D]=eig(A) ans = Columns 1 through 2 Column 3 -1.5000e+000 5.0000e-001 5.0000e-001 0 5.0000e-001 0 -2.0000e+000 5.0000e-001 1.0000e+000 V = Columns 1 through 2 Column 3 -7.0711e-001 -2.4254e-001 3.0151e-001 0 0 9.0453e-001 -7.0711e-001 -9.7014e-001 3.0151e-001 D = -1 0 0 0 2 0 0 0 2 2、化方阵 222 254 245 A - ?? ? =- ? ? -- ?? 为对角阵。 解:A=[2 2 -2;2 5 -4;-2 -4 5]; >> diag(diag(A)) ans = 2 0 0 0 5 0 0 0 5 3、已知 422134 305,203 153211 A B - ???? ? ? =-=-- ? ? ? ? - ???? ,在MA TLAB命令窗口中建立A、B矩阵并对

其进行以下操作: (1) 计算矩阵A 的行列式的值det()A (2) 分别计算下列各式:1122,*,.*,,,,T A B A B A B AB A B A A --- 解: (1)、 A=[4 -2 2;-3 0 5;1 5 3]; >> det(A) ans = -158 (2)、 ans = 7 -7 0 -4 0 13 0 11 5 ans = 12 10 24 7 -14 -7 -3 0 -8 ans = 4 -6 8 6 0 -15 2 -5 3 ans = -2.2204e-016 -6.6613e-016 2.0000e+000 -2.7143e+000 -8.0000e+000 -8.1429e+000 2.4286e+000 3.0000e+000 2.2857e+000 ans = 4.8734e-001 4.1139e-001 1.0000e+000 3.6709e-001 - 4.3038e-001 2.7756e-017 -1.0759e-001 2.4684e-001 1.3878e-017 ans = 24 2 4 -7 31 9 -8 13 36 ans = 4 -3 1 -2 0 5 2 5 3 4、在MA TLAB 中分别利用函数rank 、函数inv 求下列矩阵的秩: (1) 16323540,11124A -?? ?=- ? ?--?? 求 rank(A)=?

Java画图软件设计报告

佛山科学技术学院 《可视化编程技术》课程设计报告 画图软件设计 学生姓名:周敏婷 学号: 2011914123 年级专业:11级教育技术学2班指导老师:容汝佳 学院:教育科学学院 广东★佛山 提交日期:2013年6月

目录 1. 前言 (2) 2.概要设计 (3) 2.1 开发环境 (3) 2.2 画图软件功能 (3) 2.3 界面设计 (3) 2.4 类的框架结构图 (4) 3. 详细设计 (4) 3.1 使用的JAVA类的说明 (4) 3.2 类的主要方法 (5) 3.2.1 颜色选择

器 (5) 3.2.2 控制画笔样式 (5) 3.2.3 选取颜色按钮的监听件类 (6) 3.2.4 设计总体认识 (6) 3.2.5 程序流程图 (7) 4. 运行结果 (7) 5. 测试分析 (8) 5.1 程序运行情况 (8) 6. 源程序 (8) 参考文献 (14) 设计总

结 (14)

摘要:该程序是一个图形界面的简单的java画图软件,具有良好的界面,使用人员能快捷简单地进行操作。该画图软件操作较为简单,只需要一直按着左键就能根据你鼠标移动的方面,画出你想要的图案。你也可以选择你自己想到的颜色和画笔的粗细。而且可以显示你当前的画笔的状态。界面为灰白对称。是一个非常简单的作图工具,让人能轻松上手。 关键字:java,画图类,方法,事件 1 前言 随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的画图工具,可以实现简单的画图作图功能,满足日常基本的工作学习和娱乐需要。 Java是由Sun公司开发的新一代纯面向对象的网络编程语言。其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。 Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。Java基本版本叫Java 2标准版(Java 2 Standard Edition,J2SE),它包含建立Java应用程序或者是Applet 所需的应用程序编程接口(API)。Java 2移动版(The Java 2 Mobile Edition,J2ME)包含创建无线Java应用程序的API。还有Java 2 企业版(The Java 2 Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。 Java语言是由C++语言发展起而来的,是一种彻底的面向对象的程序设计语言。作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。Java语言去掉了C++语言的一些容易引起错误的特性。Java语言的特点有:面向对象、跨平台、安全性、多线程和图

简单C语言程序的例子

例子: #include main () { tips(); /*caller*/ printf(“\n Success is about banging on after others have let go”); } tips() /*caller*/ { printf (“\n When you reach the end of the rope tie a knot & hang on”,)0; } [上述程序的输出结果如下: When you reach the end of the ropt tie a knot & hang on. Success is about hanging on after others have let go.] #include main() { int a,fact; printf(“\nEnter any number”); scanf(“%d”,&a); fact=rec(a); printf(“Factorial value is%d”,fact); } rec(x); int x; { int f; if(x==1) return(1); else f=x*rec(x-1); return(f); } [其显示的结果为:Factorial value is 2.] 比较两个数较大的那个: #include main()

{ int a,b,max; scanf (“%d%d”,&a,&b); if (a>b) max=a; else max=b; printf (“%d”,max); } 输出a+b的值: #include void main() { int a,b,x; scanf (“%d%d”,&a,&b); x=a+b; printf (“%d”,x); } 输出a,b中最大的一位数: #include int max(int x,int y) { int z; if (x>y) z=x; else z=y; return(z); } void main() { int a,b,c; scanf (“%d%d”,&a,&b); c=max(a,b); printf (“%d\n”,c); } 输出Hello: #include int main() { printf (“Hello!”);

《初识画图》教学反思

《初识画图》教学反思 《初识画图》包括:“画图”程序的正确启动与退出、“画图”窗口的组成三个方面内容,也是学生第一次学习如何利用电脑进行绘画,是相当重要的一课,在上完这一课后,我仔细地反思了下,发现这节课的成功之处和不足之处有以下几点。 成功之处: 1、充分挖掘教材,合理补充教材内容 这节课教材内容较简单,主要有启动“画图”软件、认识“画图”窗口和关闭“画图”软件。如果光是讲解这三个内容,肯定不能满足学生的需要。按照学生的心理和认知特点,单单讲解这三方面内容,肯定也比较枯燥,以理论知识为主,所以在新授时我设计一个电脑小博士闯关的游戏,三关就是本课要学的三个知识点,使学生在愉快的情境中学习,轻松化解了本节课的教学重点与难点。在原有教材内容的基础上,增加了让学生用工具箱里的工具画一画,变一变画笔和画布颜色的操作,让学生更进一步地了解了“画图”软件的功能和作用。同学们对工具和颜色是非常感兴趣的,通过他们动手实践,达到了很好的教学效果。除此,我还增加了创作一幅画的操作,让学生利用各种不同的工具画出自己的姓名。因为这节课上要叫学生画一个图画出来比较难,但如果不让他们完成一个作品,似乎有一点缺憾,于是我想到让同学们利用工具箱的工具写名字,这样创作起来难度不大,而且满足了他们创作作品的欲望。事实证明,效果非常显著,每个同学都给自己写了很多个不同工具的名字,大大激发了他们学习“画图”的兴趣和创作图画的欲望。 2、创设游戏,使学生牢记工具箱里的工具 工具箱的工具比较多,共有16种,要让学生一下子记住他们难度较大,靠死记硬背肯定不行,于是我设计了两个游戏,一个找家游戏(连线题),结果大多同学都很顺利的完成了游戏,帮他们找到了正确的位置。另一个开火车游戏,出示一个工具箱的图标,学生说出名字,以小组为单位进行比赛,结果每组都取得了不错的成绩。通过这样两个游戏,使学生在玩的过程中很快记住了工具箱里的各种工具的名称和位置。 3、合理运用教学方法和手段,降低学习难度

c++课程设计(简易绘图程序)

目录 1、需求与功能分析 (1) 2、系统总体框架 (2) 3、模块设计与分析 (3) 3.1画图模块 (3) 3.2贴图模块 (3) 3.3窗口模块 (4) 3.4菜单模块 (4) 3.5工具栏与状态栏模块 (4) 4、类的设计与分析 (4) 4.1、CAboutDlg类 (4) 4.2、CChildFrame类 (4) 4.3、CDib类 (4) 4.4、CDrawingDoc类 (5) 4.5、CDrawingView类 (6) 4.6、CMainFrame类 (7) 4.7、CSettingDlg类 (7) 5、特色算法分析 (8) 5.1 CDib类中的显示bmp位图 (8) 5.2 CDrawingView类中的画图部分 (10) 6、功能测试 (13) 7、存在的不足与对策 (16) 8、程序源代码 (17) 9、使用手册 (17) 10、参考文献 (20)

1、需求与功能分析 为了检验一个学期以来自己学习c++这门课程能够学到多少知识,加上原来就对图像处理就比较感兴趣,曾经更有想过要做一个可以合成红蓝3D图片的一款软件,就是那种需要带上红蓝眼镜才可以看到3D效果的那种图片,自己也有用photoshop做过这样的图片,但是photoshop需要调很多东西才能合成这样的图片,而且还要用相机送两个不同的角度拍两张照片作为源图片去合成红蓝3D图片,虽然我知道原理并不难,但是当我选择了”简易绘图程序”这个课程设计的题目之后,才发现每实现一个功能都需要花很多的精力,而且实现那些功能之后还会发现各种各校的bug,需要细心去寻找解决的办法。如今课程设计也要上交,一样还有很多我想实现的功能都还没实现,最终也没有实现我想要实现的功能---合成红蓝3D图片。只做了一些简单的绘图功能。 功能分析,目前这个软件的主要功能有如下: 1、画直线:通过OnLine()函数实现。 2、画矩形:通过OnRectangle()函数实现。 3、画椭圆:通过OnEllipse()函数实现。 4、铅笔工具:可以画任意线条。通过OnPencil()函数实现。 5、橡皮擦:可以擦除所画的线条。该功能还没实现。 6、右键弹出菜单:可以在客户中点击鼠标右键,快速选择常用菜单。通过 OnContextMenu函数实现。 7、状态栏显示鼠标移动的坐标:在程序的右下角显示,通过OnUpdateX(CCmdUI *pCmdUI)和OnUpdateY(CCmdUI *pCmdUI)这两个函数实现。 8、画图颜色选择:可以画任何颜色的线条,通过OnEditColor()函数实现。 9、读取bmp位图:可以在电脑中选择一个bmp位图,在程序中显示出来,通过 新建一个Cdib类来读取bmp文件信息再view类和Doc类调用来显示该位图。 10、保存为bmp位图:可以将在程序所画的图形保存为一幅bmp图片,通过view 中的SaveAsBmp(CString filename)实现。 11、线条类型及线宽的设置:可以将画出的线条设置成实线、虚线、点线,还可

第三章 最简单的c程序设计

第三章最简单的c程序设计 实践教学: 属性:实训 时间:学时。 实践教学内容: 实验目的:熟悉运算符、表达式,掌握标准输入输出函数的适用方法和顺序结构程序设计的一般方法。 实验内容和步骤: 1.编程,要求从键盘按规定的格式输入时间(时:分:秒), 并将输入的时间在屏幕上显示出来,存入ex3_1.c文件, 并编译、调试、运行。 #include main() { int a ,b,c; scanf("%d%d%d",&a,&b,&c); if (a>24) printf("请重新输入"); if (b>60) printf("请重新输入"); if (c>60) printf("请重新输入"); printf("%d:%d:%d\n",a,b,c); return 0; }

2.编程,要求从键盘输入数据,使整型变量a=10,b=8;字符 型c1=’A’,c2=’a’;实型变量x=3.1,y=64.54。并按规定格式输出变量的值。格式如下。存入ex3-2.c文件,并编译、调试、运行。 __int___a=__10___b=____8 char_c1=__A,___c2=____a float___x=_3.1,___y=64.54 #include main() { int a=10,b=8; char c1='A',c2='a'; float x=3.1,y=64.54; return 0; } 3.c语言编程求ax2+bx+c=0并分析其结果。存入ex3_2.c文 件,并编译、调试、运行。 #include

初识画图教案

《初识画图》教案 亭湖区南洋小学王娟 【教学目标】 1、认识“画图”窗口的结构 2、学会用“画图”软件中的基本绘图工具 3、学会爱护小动物,注意自己的健康卫生。 【教学重难点】 重点:工具箱中工具的认识和颜料盒颜色的选取 难点:工具箱中工具的选择和使用 【教学过程】 一、导入(2分钟) 师:今天老师带来一位软件朋友,本领很厉害, 他还让老师给大家带来了一些礼物,大家想不想认识?它说了:只要和它交上朋友,就可以和大家分享自己的快乐, 诉说自己的烦恼,还可以描绘自己心中的梦想. 出示一些学生的画图作品,激发学生学习的兴趣) 二、新授: (一)、启动“画图”软件(3分钟) 师:他是谁呢?大家猜到了吗?它长得什么模样呢?他又躲在哪了呢?你们能不能快速的才能找到它? “画图”软件在“程序”的“附件”里面,同学们能不能自己打开画图软件呢?比一比,谁的动作最快。 (请一名学生上台演示:开始——程序——附件——画图)

(二)、认识“画图”窗口(28分钟) 认识画图窗口各组成部分(课件) 3分钟 师:这么快就找到他了,让我们再走进他的内心,对他作更深一步的了解,好吗? 师(出示“我的电脑”窗口的结构示意图):与“我的电脑”窗口比较,“画图”软件窗口有哪些组成部分? (引导学生认识“画图”窗口的标题栏、菜单栏、工具箱、类型框、工作区、颜料盒、状态栏) 调整画图区(出示预设的窗口)2分钟 师:都记住他的组成部分吗?它想和大家玩个捉迷藏的游戏? 它把自己哪些部分藏起来了?(隐藏画图工具栏等),演示如何调出正常的窗口 还有什么需要调整的吗?(纸张的调整) (学生自主探究,教师让举手的学生回答,并总结三个控制画布大小的控制点的操作技巧) (三)、了解工具箱 1、初识工具箱(5分钟) 师问:工具箱中有多少的按钮? 练习:《工具找家》 师演示练习方法:双击打开桌面上的“练习《工具找家》”图标。

相关文档