文档库 最新最全的文档下载
当前位置:文档库 › 计算机图形学简单画图代码

计算机图形学简单画图代码

计算机图形学简单画图代码
计算机图形学简单画图代码

软件:NetBeans 图形效果:

代码:

package newpackage;

import java.awt.*;

import javax.swing.*;

import java.awt.geom.*;

import java.awt.image.*;

import https://www.wendangku.net/doc/3b14519937.html,.URL;

import java.io.*;

import javax.imageio.*;

import java.awt.event.*;

import java.util.Calendar;

import javax.swing.*;

public class Hello2D extends JApplet {

public static void main(String s[]) {

JFrame frame = new JFrame();

frame.setTitle("计算机图形学");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JApplet applet = new Hello2D();

applet.init();

frame.getContentPane().add(applet);

frame.pack();

frame.setVisible(true);

}

public void init() {

JPanel panel = new Hello2DPanel();

getContentPane().add(panel);

}

}

class Hello2DPanel extends JPanel implements ActionListener{ private BufferedImage image;

AffineTransform rotH = new AffineTransform();

AffineTransform rotM = new AffineTransform();

AffineTransform rotS = new AffineTransform();

// AffineTransform zuq=new AffineTransform ();

public Hello2DPanel() {

setPreferredSize(new Dimension(1400,1000));

setBackground(Color.white);

Timer timer=new Timer(500,this);

timer.start();

URL url=getClass().getClassLoader().getResource("images/zuqiu.jpg");

try{

image=ImageIO.read(url);

}catch(IOException ex)

{

ex.printStackTrace();

}

}

@Override

public void paintComponent(Graphics g) {

super.paintComponent(g);

Graphics2D g2= (Graphics2D)g;

g2.translate(100,100);

g2.scale(0.5, 0.5);

for (int i = 0; i < 12; i++) {

g2.rotate(2*Math.PI/12);

g2.fill3DRect(-3, -180, 6, 30, true);

}

Shape hour = new Line2D.Double(0, 0, 0, -80);

hour = rotH.createTransformedShape(hour);

Shape minute = new Line2D.Double(0, 0, 0, -120);

minute = rotM.createTransformedShape(minute);

Shape second = new Line2D.Double(0, 0, 0, -120);

second = rotS.createTransformedShape(second);

g2.setColor(Color.black);

g2.setStroke(new BasicStroke(5, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); g2.draw(hour);

g2.draw(minute);

g2.setStroke(new BasicStroke(2));

g2.draw(second);

g2.scale(2,2);

g2.translate(50,-150);

g2.setColor(Color.DARK_GRAY);

GeneralPath path=new GeneralPath();

path.moveTo(200, 170);

path.lineTo(800, 170);

path.quadTo(950, 350, 800,530 );

path.lineTo(200, 530);

path.quadTo(50, 350, 200,170);

Stroke stroke=new BasicStroke(4,BasicStroke.CAP_BUTT,BasicStroke.CAP_ROUND);

//设置笔画

g2.setStroke(stroke);

g2.translate(-100, -100);//平移

g2.scale(1.4,1.4 );//放大

path.closePath();

g2.draw(path);

g2.setColor(Color.LIGHT_GRAY);

g2.fill(path);

Shape s1=new Rectangle2D.Double(300,250, 400, 200);

Shape s2=new Ellipse2D.Double(200,250, 200, 200);

Shape s3=new Ellipse2D.Double(600,250, 200, 200);

g2.setColor(Color.DARK_GRAY);

g2.draw(s1);

g2.draw(s2);

g2.draw(s3);

g2.setColor(Color.GREEN);

Area a1=new Area(s1);

Area a2=new Area(s2);

a1.add(a2);

g2.fill(a1);

Area a3=new Area(s3);

a1.add(a3);

g2.fill(s3);

Font font=new Font("Serif",Font.BOLD,25);

g2.setFont(font);

GradientPaint gp=new GradientPaint(450,200,Color.red,220,220,Color.BLACK,true);

g2.setPaint(gp);

g2.drawString("四百米跑道",450, 220);

g2.setColor(Color.BLACK);

Stroke stroke1=new BasicStroke(1);

//设置笔画

g2.setStroke(stroke1);

Shape s4=new Rectangle2D.Double(300,250, 400, 200);

g2.draw(s4);

g2.drawLine(500, 250, 500, 450);//划直线

g2.drawOval(465, 315, 70, 70);

g2.drawLine(300, 300, 350, 300);

g2.drawLine(350, 300, 350,400);

g2.drawLine(350, 400, 300,400);

g2.drawLine(300, 325, 325, 325);

g2.drawLine(325, 325, 325,375);

g2.drawLine(325, 375, 300,375);

g2.drawLine(700, 300, 650,300);

g2.drawLine(650, 300, 650, 400);

g2.drawLine(650, 400, 700,400);

g2.drawLine(700, 325, 675,325);

g2.drawLine(675, 325, 675, 375);

g2.drawLine(675,375, 700,375);

//绘制虚线

float[] dashArray={20,20,20,20};

g2.setColor(Color.BLACK);

Font font2=new Font("Serif",Font.BOLD,15);

g2.setFont(font2);

g2.drawString("1",290,465);

g2.drawString("2",290,485);

g2.drawString("3",290,505);

g2.drawString("4",290,525);

g2.drawLine(300, 450,300 ,530);

g2.setColor(Color.red);

g2.drawLine(700, 450,700 ,530);

float dashPhase=50;

stroke =new

BasicStroke(1,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL,0,dashArray,dashPhase);

g2.setStroke(stroke);

g2.drawLine(300, 470,700 ,470);

g2.drawLine(300, 490,700 ,490);

g2.drawLine(300, 510,700 ,510);

Font font1=new Font("Serif",Font.BOLD,15);

g2.setFont(font1);

GradientPaint gp1=new GradientPaint(450,200,Color.BLACK,220,220,Color.red);

g2.setPaint(gp1);

g2.drawString("200米接力赛跑道",400,480);

TexturePaint tp=new TexturePaint(image,new Rectangle2D.Double(550,370,image.getWidth(),image.getHeight()));

g2.setPaint(tp);

Shape zq=new Rectangle.Double(550,370,90,50);

// zq=zuq.createTransformedShape(zq);

g2.fill(zq);

}

@Override

public void actionPerformed(ActionEvent e) {

int hour = Calendar.getInstance().get(Calendar.HOUR);

int min = Calendar.getInstance().get(Calendar.MINUTE);

int sec = Calendar.getInstance().get(Calendar.SECOND);

rotH.setToRotation(Math.PI * (hour+min/60.0)/6.0);

rotM.setToRotation(Math.PI * min /30.0);

rotS.setToRotation(Math.PI * sec /30.0);

repaint();

}

}

简单画图程序的设计

面向对象程序设计 课程设计报告 设计题目:简单画图程序的设计 学院:信息工程学院 专业:计算机科学与技术(交通)学号: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语言课程设计 简单计算器程序

课程设计名称:C语言课程设计课程设计题目:简单计算器程序

目录 第1章需求分析 (1) 1.1设计要求 (1) 1.2任务 (1) 第2章总体设计 (2) 2.1设计简介及设计方案论述 (2) 2.2功能模块层次图 (2) 第3章详细设计 (3) 3.3由(后缀)逆波兰表达式计算中缀表达式原理 (8) 3.3.1算法描述 (8) 第4章调试分析 (10) 4.1程序设计中所遇到的错误及犯错的原因 (10) 4.2错误的解决方法 (10) 第5章用户手册 (11) 总结 (15) 参考文献 (16) 附录(程序清单) (17)

第1章需求分析 1.1 设计要求 (1)用 C 语言数据结构实现程序设计; (2)利用结构体、栈、进行相关信息处理; (2)系统的各个功能模块要求用函数的形式实现; (4)界面简单,可操作性高。 1.2任务 (1)定义一个结构体类型数组,输入0~9 及+、--、*等符号的信息,将其信息存储起来; (2)输入简单的加减乘除算术计算式,并在屏幕上显示逆波兰(后缀式)表达式和计算结果; (3)编写代码; (4)程序分析与调试。 说明: 本课程设计将实现一个简单计算器。在功能上尽量模仿windows 的计算器。系统界面不做牵制要求。该程序能实现标准型中+、-、*、/、(、)、.、的混合运算表达式(一般意义上的中缀表达式),将其转换成逆序波兰表达式(后缀表达式)并计算输出结果。在进行运算后可以选择继续运算或者结束当前运算。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。

第2章 总体设计 2.1设计简介及设计方案论述 逆波兰表达式又叫做后缀表达式。在通常的表达式中,二元运算符总是置于与之相 关的两个运算对象之间,所以,这种表示法也称为中缀表达式。波兰逻辑学家 J.Lukasiewicz 于 1929 年提出了另一种表示表达式的方法。按此方法,每一运算符都置 于其运算对象之后,故称为后缀表达式。 后缀表达式的优点是显而易见的, 编译器在处理时候按照从左至右的顺序读取逆波 兰表达式,遇到运算对象直接压入堆栈,遇到运算符就从堆栈提取后进的两个对象进行计算,这个过程正好符合了计算机计算的原理。后缀表达式比前缀表达式更加易于转换,并且它的最左面一定为数字,这一点在实 际编程的时候就会体会到它的好处了。 逆波兰表达式有一个更大的优点,就是拆括号,根据运算符的级别将中缀表达式转 换成逆波兰表达式后,运算顺序就已经替代了运算符的级别,这样也避免了括号提高运 算级别的特殊处理。 2.2功能模块层次图 将算术表达式转化为逆波兰表达式 计算逆波兰表达式的值 简单计算器 表 达 式 格 式 转 换 系统 求 值 计 算 系 统

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

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

计算机图形学实验一

实验一二维基本图元的生成与填充 实验目的 1.了解并掌握二维基本图元的生成算法与填充算法。 2.实现直线生成的DDA算法、中点算法和Bresenham算法。 3.实现圆和椭圆生成的DDA和中点算法, 对几种算法的优缺点有感性认识。 二.实验内容和要求 1.选择自己熟悉的任何编程语言, 建议使用VC++6.0。 2.创建良好的用户界面,包括菜单,参数输入区域和图形显示区域。 3.实现生成直线的DDA算法、中点算法和Bresenham算法。 4.实现圆弧生成的中点算法。 5.实现多边形生成的常用算法, 如扫描线算法,边缘填充算法。 6.实现一般连通区域的基于扫描线的种子填充算法。 7.将生成算法以菜单或按钮形式集成到用户界面上。 8.直线与圆的坐标参数可以用鼠标或键盘输入。 6. 可以实现任何情形的直线和圆的生成。 实验报告 1.用户界面的设计思想和框图。 2.各种实现算法的算法思想。 3.算法验证例子。 4.上交源程序。 直线生成程序设计的步骤如下: 为编程实现上述算法,本程序利用最基本的绘制元素(如点、直线等),绘制图形。如图1-1所示,为程序运行主界面,通过选择菜单及下拉菜单的各功能项分别完成各种对应算法的图形绘制。 图1-1 基本图形生成的程序运行界面 2.创建工程名称为“基本图形的生成”单文档应用程序框架

(1)启动VC,选择“文件”|“新建”菜单命令,并在弹出的新建对话框中单击“工程”标签。 (2)选择MFC AppWizard(exe),在“工程名称”编辑框中输入“基本图形的生成”作为工程名称,单击“确定”按钮,出现Step 1对话框。 (3)选择“单个文档”选项,单击“下一个”按钮,出现Step 2对话框。 (4)接受默认选项,单击“下一个”按钮,在出现的Step 3~Step 5对话框中,接受默认选项,单击“下一个”按钮。 (5)在Step 6对话框中单击“完成”按钮,即完成“基本图形的生成”应用程序的所有选项,随后出现工程信息对话框(记录以上步骤各选项选择情况),如图1-2所示,单击“确定”按钮,完成应用程序框架的创建。 图1-2 信息程序基本 3.编辑菜单资源 设计如图1-1所示的菜单项。在工作区的ResourceView标签中,单击Menu项左边“+”,然后双击其子项IDR_MAINFRAME,并根据表1-1中的定义编辑菜单资源。此时VC已自动建好程序框架,如图1-2所示。 表1-1菜单资源表 菜单标题菜单项标题标示符ID 直线DDA算法生成直线ID_DDALINE Bresenham算法生成直线ID_BRESENHAMLINE 中点算法生成直线ID_MIDPOINTLINE 4.添加消息处理函数 利用ClassWizard(建立类向导)为应用程序添加与菜单项相关的消息处理函数,ClassName栏中选择CMyView,根据表1-2建立如下的消息映射函数,ClassWizard会自动完成有关的函数声明。 表1-2菜单项的消息处理函数 菜单项ID消息消息处理函数ID_DDALINE CONMMAN OnDdaline

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

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

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

简单的四则运算计算器程序

简单的四则运算计算器程序

注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。 2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。

附件:程序源代码 // sizheyunsuan.cpp : Defines the entry point for the console application. #include #include const int MAX=100; class Operand{ private: double operS; public: Operand(){} Operand(double opers){ operS=opers; } void set(double opers){ operS=opers; } double get() { return operS;} }; class Operator{ private: char operF; int priority; public: Operator(){} Operator(char operf) { operF=operf; switch(operf) { case'(':priority=-1;break; case'+':priority=0;break; case'-':priority=0;break; case'*':priority=1;break; case'/':priority=1;break; case')':priority=2;break; } } void set(char operf){ operF=operf; } char get(){ return operF;} int getpriority(){ return priority; } };

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

《程序设计》课程设计姓名: 学号: 班级:软件工程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)

计算机图形学实验

实验1 直线的绘制 实验目的 1、通过实验,进一步理解和掌握DDA和Bresenham算法; 2、掌握以上算法生成直线段的基本过程; 3、通过编程,会在TC环境下完成用DDA或中点算法实现直线段的绘制。实验环境 计算机、Turbo C或其他C语言程序设计环境 实验学时 2学时,必做实验。 实验内容 用DDA算法或Besenham算法实现斜率k在0和1之间的直线段的绘制。 实验步骤 1、算法、原理清晰,有详细的设计步骤; 2、依据算法、步骤或程序流程图,用C语言编写源程序; 3、编辑源程序并进行调试; 4、进行运行测试,并结合情况进行调整; 5、对运行结果进行保存与分析; 6、把源程序以文件的形式提交; 7、按格式书写实验报告。 实验代码:DDA: # include # include

void DDALine(int x0,int y0,int x1,int y1,int color) { int dx,dy,epsl,k; float x,y,xIncre,yIncre; dx=x1-x0; dy=y1-y0; x=x0; y=y0; if(abs(dx)>abs(dy)) epsl=abs(dx); else epsl=abs(dy); xIncre=(float)dx/(float)epsl; yIncre=(float)dy/(float)epsl; for(k=0;k<=epsl;k++) { putpixel((int)(x+0.5),(int)(y+0.5),4); x+=xIncre; y+=yIncre; } } main(){ int gdriver ,gmode ;

简单画图程序-课程设计

简单画图程序-课程设计 目录 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(),刷新,得到绘制图形。

java编写的简单的计算器程序

计算器 项目内容:编写一个Applet,模仿windows附件所带计算器的功能,可以帮助用户完成计算功能,具体如下图所示。 项目要求:使用图形的方式借助窗口、菜单、按钮等标准界面元素和鼠标操作,来帮助用户方便地向计算机系统发出命令,启动操作,并将系统运行的结果同样以图形的方式显示给用户,这样更加直观和生动; 1.Applet容器中组件的添加与设置,包括面板以及菜单的使用; 2.容器中组件的布局管理; 3.Java核心包中数组、数学计算类的使用; 4.异常的处理; 5.事件处理模型中的三类对象的使用: 1.Event-事件,用户对界面操作在java语言上的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent。 2.Event Source-事件源,事件发生的场所,通常就是各个组件,例如按钮Button。 3.Event handler-事件处理者,接收事件对象并对其进行处理的对象。 6.程序中事件处理的流程:

1.计算流程的细化 参考代码: import .*;

import .*; import .*; import import import public class Calculator implements ActionListener { #############"); dd(panel); panel1 = new JPanel(); panel2 = new JPanel(); (new BorderLayout()); 键入计算的第一个数字。\n"); ("2. 单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。\n"); ("3. 键入计算的下一个数字。\n"); ("4. 输入所有剩余的运算符和数字。\n"); ("5. 单击“=”。\n"); aboutCal = new JMenuItem(" 关于计算器(A)"); (this);

计算机图形学实验报告

《计算机图形学》实验报告姓名:郭子玉 学号:2012211632 班级:计算机12-2班 实验地点:逸夫楼507 实验时间:15.04.10 15.04.17

实验一 1 实验目的和要求 理解直线生成的原理;掌握典型直线生成算法;掌握步处理、分析实验数据的能力; 编程实现DDA 算法、Bresenham 中点算法;对于给定起点和终点的直线,分别调用DDA 算法和Bresenham 中点算法进行批量绘制,并记录两种算法的绘制时间;利用excel 等数据分析软件,将试验结果编制成表格,并绘制折线图比较两种算法的性能。 2 实验环境和工具 开发环境:Visual C++ 6.0 实验平台:Experiment_Frame_One (自制平台) 3 实验结果 3.1 程序流程图 (1)DDA 算法 是 否 否 是 是 开始 计算k ,b K<=1 x=x+1;y=y+k; 绘点 x<=X1 y<=Y1 绘点 y=y+1;x=x+1/k; 结束

(2)Mid_Bresenham 算法 是 否 否 是 是 是 否 是 否 开始 计算dx,dy dx>dy D=dx-2*dy 绘点 D<0 y=y+1;D = D + 2*dx - 2*dy; x=x+1; D = D - 2*dy; x=x+1; x

3.2程序代码 //-------------------------算法实现------------------------------// //绘制像素的函数DrawPixel(x, y); (1)DDA算法 void CExperiment_Frame_OneView::DDA(int X0, int Y0, int X1, int Y1) { //----------请实现DDA算法------------// float k, b; float d; k = float(Y1 - Y0)/float(X1 - X0); b = float(X1*Y0 - X0*Y1)/float(X1 - X0); if(fabs(k)<= 1) { if(X0 > X1) { int temp = X0; X0 = X1; X1 = temp; }

简易画图板设计报告

设计报告: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 calcultorthree; import java.awt.BorderLayout;//导入边界布局管理器类 import java.awt.GridLayout;//导入网格布局管理器类 import java.awt.TextField;//导入文本区域类 import java.awt.event.ActionEvent;//导入事件类 import java.awt.event.ActionListener;//导入事件监听者类 import javax.swing.JButton;//导入按钮类 import javax.swing.JFrame;//导入窗体 import javax.swing.JPanel;//导入面板 /** *本例实现了简单计算器代码,具备加减乘除和正弦功能,旨在抱砖引玉。熟悉java的同学,可以在此基础上实现更复杂的功能。 * @author Fjsh */ public class CalcultorThree { //新建对象,在构造函数中进行初始化 JFrame frame;//新建窗体对象 JButton buttonzero,buttondot,buttonequal;//新建按钮“0”“.”“=” JButton buttonplus,buttonminus,buttonmultiple,buttondevision, buttonsin,buttontozero;//新建按钮“+”“-”“*”“/”“sin”和归零按钮JButton buttonone,buttontwo,buttonthree,buttonfour,buttonfive,buttonsix, buttonseven,buttoneight,buttonnine;//新建数字按钮“0”“1”“2”“3”“4”“5”“6”“7”“8”“9” JPanel panelwest,panelcenter,paneleast;//新建三个面板 TextField tf;//新建文本区域对象 public CalcultorThree(){ //初始化对象 tf=new TextField(30);//构造空文本字段,字符宽度为30 frame =new JFrame("CalculatorThree");//构造窗体对象,名称为“CalculatorThree”

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();

计算机图形学实验报告 (2)

中南大学信息科学与工程学院 实验报告实验名称 实验地点科技楼四楼 实验日期2014年6月 指导教师 学生班级 学生姓名 学生学号 提交日期2014年6月

实验一Window图形编程基础 一、实验类型:验证型实验 二、实验目的 1、熟练使用实验主要开发平台VC6.0; 2、掌握如何在编译平台下编辑、编译、连接和运行一个简单的Windows图形应用程序; 3、掌握Window图形编程的基本方法; 4、学会使用基本绘图函数和Window GDI对象; 三、实验内容 创建基于MFC的Single Document应用程序(Win32应用程序也可,同学们可根据自己的喜好决定),程序可以实现以下要求: 1、用户可以通过菜单选择绘图颜色; 2、用户点击菜单选择绘图形状时,能在视图中绘制指定形状的图形; 四、实验要求与指导 1、建立名为“颜色”的菜单,该菜单下有四个菜单项:红、绿、蓝、黄。用户通过点击不同的菜单项,可以选择不同的颜色进行绘图。 2、建立名为“绘图”的菜单,该菜单下有三个菜单项:直线、曲线、矩形 其中“曲线”项有级联菜单,包括:圆、椭圆。 3、用户通过点击“绘图”中不同的菜单项,弹出对话框,让用户输入绘图位置,在指定位置进行绘图。

五、实验结果: 六、实验主要代码 1、画直线:CClientDC *m_pDC;再在OnDraw函数里给变量初始化m_pDC=new CClientDC(this); 在OnDraw函数中添加: m_pDC=new CClientDC(this); m_pDC->MoveTo(10,10); m_pDC->LineTo(100,100); m_pDC->SetPixel(100,200,RGB(0,0,0)); m_pDC->TextOut(100,100); 2、画圆: void CMyCG::LineDDA2(int xa, int ya, int xb, int yb, CDC *pDC) { int dx = xb - xa; int dy = yb - ya; int Steps, k; float xIncrement,yIncrement; float x = xa,y= ya; if(abs(dx)>abs(dy))

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

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

单片机简易计算器设计

单片机简易计算器设计 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

一、设计要求 1.设计4*4的键盘,其中10个数字键0~9,其余6个为“+”“-”“*”“/”“=”和“C” 2.设计2位LED接口电路 3.实现1位数的简单运算 二、硬件系统设计 1、LED接口电路 简易计算器需要2位8段码LED显示电路。用8031单片机经8255A扩展2位8段码LED显示器,用8255A的A口作为段码(字形代码)数据口,PB0和PB1作为位控制端口。在位控制口加集电极开路的反相高压驱动器74LS06以提供驱动LED显示器所需的足够大的电流,然后接至各数码显示器的共阴极端。同理,在段码数据口集电极开路的正相高压驱动器74LS07提供足够大的电流,然后接到数码显示器的各段。逻辑电路结构如下:

2、键盘接口电路 简易计算器需要4*4的行列式键盘。用8031单片机经8255A扩展4*4行列式键盘,8255A的B口和C口用于扩展键盘接口,B口高4位作为输出口,C口低4位作为输入口。逻辑电路结构如下: 3、计算器逻辑电路图 将LED接口电路和键盘接口电路结合到一起就是简易计算器的逻辑电路图,如下: 三、软件设计 1、LED显示程序设计 LED显示器由七段发光二极管组成,排列成8字形状,因此也成为七段LED显示器,器排列形状如下图所示:

为了显示数字或符号,要为LED显示器提供代码,即字形代码。七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。简易计算器用到的数字0~9的共阴极字形代码如下表: 0~9七段数码管共阴级字形代码 2位LED显示的程序框图如下: 2、读键输入程序设计 为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键都对应一个码——键码。为了得到被按键的键码,现使用行扫描法识别按键。其程序框图如下: 3、主程序设计 (1)数值送显示缓冲程序设计 简易计算器所显示的数值最大位两位。要显示数值,先判断数值正负,如果是负值,则符号位显示“-”,然后将数值除以10,余数送显最最低位,判断商是否为0,若为0则返回,若不为0,则将商除以10,将余数送显高位。程序框图如下: (2)运算主程序设计

课程设计常用数学软件

《常用数学软件介绍》课程设计用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)=?

相关文档
相关文档 最新文档