当前位置:文档之家› 画图板程序报告

画图板程序报告

画图板程序报告
画图板程序报告

画图板

学生姓名曾思哲

院系名称信息工程学院

专业名称计算机科学与技术班级计算机1班

学号11923110

指导教师谢红标

完成时间2014年6月4日

项目可行性报告

1引言

《画图板软件开发和设计》

该画图板在图形界面下可以画椭圆,正圆,矩形,正方形,填充颜色,添加字符等基本功能。

1.2课程设计的目的

巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平, 程序通过调用JAVA提供的基本类进行了简单的界面设计,运用了JAVA中类的继承特性实现了对父类方法的调用,并多次使用CASE语句实现绘图菜单的选择,运用了适配器类简化了监听器类的重写工作。

1.3本选题的设计背景

在现实生活中,我们会经常遇到些需要绘制简单图形的问题,但是网络上大多数的绘图工具都比较复杂,所以我们需要一些简单实用的绘图小工具,以便对工作带来最大的满足与需求,于是我就设计了一个简单

的绘图小工具,虽然不很常熟但是我觉得还挺实用的。

2需求分析

2.1功能需求

设计一个画图工具,能够实现画图工具、画直线、画椭圆、画多边形等功能,并且在绘图的过程中能够修改该画笔的大小以及颜色。该画图程序还需具有橡皮擦功能。

1、这个画图程序,最基本的功能是,作为一个画图工具利用它实现在屏幕上任意绘画、书写的功能;

2、利用这个画图程序,通过选择画直线、画箭头、画多边形、画矩形、椭圆、圆形等功能选项并且在屏幕上拖动鼠标操作能实现画出相应图形的功能;

3、这个画图程序,还需具备橡皮擦的功能,利用这个橡皮擦能够擦除屏幕上的图案,并且此橡皮擦也应该能够改变大小;

4、这个画图程序,还应该做到能够改变画笔颜色的功能;

5、这个画图程序,还应该具备能够清除整个屏幕已绘制图画的功能。

2.2 系统的开发运行环境

本系统集成开发环境:MyEclipse

本系统运行环境: windows xp 或以上版本MyEclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。编写代码和运行软件都很方便。编写过程中要是有错误就有提示,非常方便用户修改代码。

项目简介

项目名称Windows画图工具

开发人员曾思哲

项目简介

此系统是基于Java设计和开发的一个windows画图工具,要求根据用户的实际需求,要求实现画图、图画修改等功能,系统要求界面简单,方便用户使用。

项目目的

Windows画图工具的目的对于那些初学计算机的用户想要画图非常简便、易学,界面良好。

主要技术

本系统是设计一套在windows平台下的画图工具,系统采用C/S结构。

编程环境NetBeans 6.7

项目特点

方便用户使用画图工具,提高使用的效率,用户可以自己画自己需要的画面也可以用画图工具打开你的画面进行修改和删除,而且有保存格式用多种,例如jpg、gif、png、bmp等,

用户可以随意选择。

技术重点1.怎样创建多中保存的格式。

2.菜单栏功能的实现。

3.从其他文件当中读取图片、打开并修改。

4.画图软件的界面的工具功能的实现。

Windows画图工具的设计

1.1 项目背景

随着社会的不断发展,人们对画面要求越来越高,对画图工具的软件提出了更高的要求。

画图工具的软件可以让用户更加节省时间,可以从其他文件找出一些图片修改一下就可以使用,比起传统的手工的画图来说,不单单是节省时间而且画面要好的多,保存起来也比较方便,下次在用的时候一找就出来了。在比如画面的修改在这套软件上我们可以直接使用彩色,使画面更直观,而且还可以修改,画图的软件现在应用于各行各业,这款软件特别适合教学用,学生画图也是比不可缺少的。

需求分析是从客户的需求中提取出软件系统能够帮助用户解决的业务问题,通过对用户问题的分析,确定系统的功能需求。这个步骤是对理解需求的升华,直接关系到该系统的质量。分析的根本目的是在开发者和提出需求的人之间建立一种理解和沟通机制,因此,系统的需求分析也应该是开发人员和用户或客户一起完成的。

1.2.1画图板的性能要求

(1) 统一处理的准确性和及时性。

(2) 软件的开放性和可扩充性。

(3) 软件的易用性和易维护性。

1.2.2画图板的功能分析

我们作的是Windows画板,再设计时应该考虑到用户的需要和画图的习惯。所以我们需求分析的主要任务就是来了解用户画图时的习惯。尽量让用户满意。在此我们是先设计一个大概的程序模型让别人试试我的画图板。

第2章概要设计

2.1 软件设计

1.1.1 本软件是设计一套在windows平台下的画图工具,主要用于主要用于画图、打开图画类的页面修改并保存成用户需要的格式。系统采用C/S结构,主要用于客户端,供客户学习、工作使用,本软件提供良好的界面,操作简单。

第3章详细设计

3.1 模块设计

该系统由4个模块构成,分别是工具模块、储存模块、颜色模块、帮助模块。

●工具模块

画笔(PencilTool)、格式刷(BrushTool)、喷墨工具(AtomizerTool)、橡皮(EraserTool)、直线(LineTool)等主要用于不同情况的使用,在面板上方便用户的使用。

●储存模块

①判断当前画板是否保存(MyImage)。

②设置多种存储的格式供用户选择,增加文

件过滤器(addFilter)。

③存储路径可以设置默认的。

●颜色模块

通过创建颜色选择器(ColorChooser),来让用户获取颜色,供用户使用。

●帮助模块

系统帮助文档和软件的声明。

3.2 功能设计

主要功能如下:

1、画笔 PencilTool这个类继承于AbstractTool 类,PencilTool类中有个对象Tool用户通过点击画

板上的图标来获取画笔,它的功能让用户用来画出各种图形。

2、格式刷子 BrushTool这个类继承于

AbstractTool类,它的功能让用户画出更好的图形。

3、喷墨工具AtomizerTool这个类继承于

AbstractTool类,AtomizerTool类中有个对象Tool

用户通过点击画板上的图标来获取喷墨图标,它的功能让用户用来涂颜色用的。

4、橡皮EraserTool这个类继承于AbstractTool

类,它的功能用来修改画板上画错的线或者图形。

5、直线LineTool这个类继承于AbstractTool类,

它的功能:让用户画出更好的直线。

6、储存MyImage 这个类继承BufferedImage类,

主要用来判断当前的文件是否保存。

7、界面ImageFrame这个类继承Jframe类,主要

用来创建界面,初始化屏幕的尺寸、设置默认画板。

3总体设计

3.1 系统体系结构设计

本程序主体为一个文件:MiniDrawPad.java。其中包括的程序段有:

①MiniDrawPad():构造函数,用以初始化。

②chooseColor():选择当前绘图颜色程序段。

③setStroke():设置当前画笔粗细程序段。

④loadFile():调用图形文件程序段。

⑤newFile():新建一个图形文件程序段。

⑥saveFile():保存当前所绘制图形程序段。

⑦creatNewItem():新建一个基本图形单元程序段。

相应的内部类有:

①ButtonHandler:用来处理基本图形单元的按钮事件。

②ButtonHandler1:用来处理颜色、画壁粗细、文字输入三个操作按钮的按钮事件。

③DrawPanel:用来创建绘图区域的子类。

④MouseA:继承了MouseAdapter,用来完成鼠标相应事件的操作,如单击、松开、进入和离开等。

⑤MouseB:继承MouseMotionAdapter,用来完成鼠标拖动和鼠标移动的相应事件操作。

此外,还继承了父类drawings的基本图形子类,如前所述,这里不再重复。

3.2系统功能模块及主要类设计

画板主要由以下几个部分组成:

3.2.1主窗体的设计。主类(MiniDrawPad)用来生成

主界面,完成画图板的主要框架。主类由JFrame派生出来。主界面由菜单栏、工具栏和画图区域三部分组成,布局格式采用BorderLayout布局形式。

3.2.2菜单栏和工具栏的设计。菜单栏包括文件菜单栏、颜色菜单栏、线条粗细菜单栏和提示菜单栏。其中①文件菜单栏包括文件的新建、打开、保存等选项;

②颜色菜单栏可以进行颜色选择;③线条粗细菜单栏设置线条的粗细;④提示菜单栏给出提示信息。

工具栏由新建、打开和保存文件按钮、基本图形的按钮、选择字体风格复选框和字体下拉列表框组成。在主类中添加并对菜单栏和工具栏添加事件监听。

3.2.3事件响应的处理。对菜单栏、工具栏和用鼠标画图的事件响应进行处理。

(1)菜单栏中文件的新建、打开和保存菜单事件的处理:Java把每个文件都视作顺序字节流。如果要在Java中进行文件处理,则必须用到Java.io包。这个包定义了一些流类,选用FileInputStream(从文件中读入数据)和FIleOutputStream(向文件输出数据),通过建立这些文件的对象便可以打开文件。这些流相应地从InputStream和OutputStream派生,这些文件均使用文件流,所以必须将文件结构化以适应程序的要求。我们需要对保存的对象序列化,然后以输出流

的方式保存。在程序中用newFile()、loadFile()和saveFile()三个函数分别实现文件的新建、打开和保存。

(2)工具栏事件的处理:主要有一些Button组成。我们用ButtonHandler内部类处理基本单元事件,ButtonHandler1内部类处理新建、打开和保存文件按钮,在画图类DrawPanel中定义CreateNewItem()函数处理工具栏中的画图事件。

(3)鼠标画图:由于画图板主要是用来画图,所以需要在程序中添加对鼠标按下、拖动、进入、退出、移动和单机事件进行监听并进行处理。内部类mouseA 定义了完成鼠标按下、松开、进入、退出事件响应。内部类mouseB完成鼠标拖动和移动事件响应。

4详细设计与实现

4.1 绘图主界面模块

4.1.1.功能设计

在程序设计中用到了动态绑定,我们可以提取他们的公共属性,先建立一个父类,然后建立各个子类,继承父类中的方法并将父类中的draw函数重写。一些关于图形形状的类,最主要是用于画图、字体和橡皮擦等基本类型。如Circle、Triangle、Rectangle,

它们都是有超类(Object类)派生的。在面向对象编程中,每个类都有画出自己的能力,每个类都有自己的draw函数,但每种形状的draw函数都不一样,但在绘制任何形状时,只需简单调用父类drawing的draw方法,然后让程序动态地根据对象的类型决定使用哪个子类的draw方法。为了使画出的图形更加美观,我们在draw函数中使用了Graphics2D的对象的引用。这样可以在不改变原程序的情况下,添加扩展的图形,是程序变得更加强大。同时,为了文件的保存,父类实现Serialize接口,将对象线性化。

4.1.2.界面设计

我们可以看到,整个程序界面很简洁,而且界面操作、提示内容全部是中文,一目了然。在左上方的菜单栏里有文件、颜色、线条粗细、帮助4个下拉式菜单,可以对绘图文件进行相应的操作。下面一排是工具栏的工具按钮,从左到右依次为:新建文件、打开文件、保存文件、随笔画、直线、空心矩形、实心矩形、空心椭圆、空心圆、实心圆、空心圆角矩形、实心圆角矩形、橡皮擦、颜色选择按钮、线条粗细设置按钮、文字添加按钮、粗体字体选择框、斜体字体选择框、字体选择下拉式选择框。整个工具栏是可以拖动的,可以将它拖动到程序窗口的任意位置。工具

栏下面的整个白色区域就是绘图区域,即绘图面板,它的大小可以随着窗口的大小自动调整。在窗口的最底部是程序设计作者标注,以及鼠标状态提示条,可以显示当前的鼠标状态,包括进出窗口、移动、单击、松开等。具体效果如下列图所示:

1.1编写目的

为了熟悉软件的开发,对过去三年的学习知识进行梳理和应用,最终选择了这个不算太难,不过很有特点的项目。

2.要求和目标

设计一个画图软件

①用户界面友好;

②能绘制基本形状的图形;

③可设置图形的颜色、线条的粗细和填充等属性;

3.具体设计思路

选择设计一个画图软件,首先要求能绘制基本形状的图形;同时可以设置图形的颜色、线条的粗细和是否填充等属性;并且可以将画好的图形保存至文件,

并能从文件中读取某种格式的图像文件并显示出来。

首先,作为画图板,应该能够绘制基本的图形,像"铅笔", "直线",,设置线条粗细,颜色,背景颜色的功能。对要实现的功能类型抽象出一个公共的基类Drawing,子类Pencil,Line,Rectange,Oval,Circle,Rubber,通过继承Drawing基类来实现不同的功能。其次当用户通过选择不同的按钮来绘制图形,这主要是利用按钮监听将不同的绘图功能绑定到不同的按钮上,通过监听用户的选择来创建不同的子类,通过子类绘制不同的图形。

4.源代码及注释

using System;

using System.Collections.Generic;

using https://www.doczj.com/doc/ac15960324.html,ponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

using System.Drawing.Drawing2D;

using System.Drawing.Imaging;

using System.Diagnostics;

using System.Drawing.Printing;

namespace画图板

{

public partial class drawinboard : Form

{

//private DrawTools dt;

Graphics g; //创建绘画的面板or Panel to create paintings

Point pStart; Point PEnd; //定义画图颜色的起点和终点or Define the drawing start point and end point color

int ChoiceGraph; //所选颜色图像枚举or The selected color image.

int penWideth; //画图宽度

enum myselected//定义枚举

{

pencil, // 定义铅笔

Line, // 定义线

FillEliPse, //填充椭圆

TuoYuan, //定义空心圆

FillEllipse,

changFangXing , //长方形

Ellipse, //填充矩形

Rec, //填充空心矩形

Eraser, //橡皮擦

//椭圆

WuJiaoXing //五星红旗

};

enum PenColor

{

ff = FontStyle.Bold,

fs = FontStyle.Italic,

ss = FontStyle.Regular,

fy = FontStyle.Strikeout,

fl = FontStyle.Underline

};

string strin; //定义一个URl变量

public drawinboard()

{

InitializeComponent();

}

private void Form3_Load(object sender, EventArgs e)

{

g = this.pictureBox1.CreateGraphics(); //创建绘图面板

ChoiceGraph = (int)myselected.pencil;//默认选择为铅笔

penWideth = 2; //初时的大小为1

}

private void button1_Click(object sender, EventArgs e)

ChoiceGraph = Convert.ToInt32(((Button)sender).Tag);

}

private void button8_Click(object sender, EventArgs e)

{

ChoiceGraph = Convert.ToInt32(((Button)sender).Tag);

}

private void button6_Click(object sender, EventArgs e)

{

ChoiceGraph = Convert.ToInt32(((Button)sender).Tag);

}

private void button7_Click(object sender, EventArgs e)

{

ChoiceGraph = Convert.ToInt32(((Button)sender).Tag);

}

private void button5_Click(object sender, EventArgs e)

{

Bitmap newpic = new Bitmap(pictureBox1.Width, pictureBox1.Height);

Graphics g = Graphics.FromImage(newpic);

g.FillRectangle(new SolidBrush(Color.White), 0, 0, pictureBox1.Width, pictureBox1.Height);

g.Dispose();

g = pictureBox1.CreateGraphics();

g.DrawImage(newpic, 0, 0);

g.Dispose();

}

private void button4_Click(object sender, EventArgs e)

{

ChoiceGraph = Convert.ToInt32(((Button)sender).Tag);

}

private void button3_Click(object sender, EventArgs e)

{

ChoiceGraph = Convert.ToInt32(((Button)sender).Tag);

}

private void button14_Click(object sender, EventArgs e)

button14.BackColor = Color.White;

button13.BackColor = Color.White;

button12.BackColor = Color.White;

button11.BackColor = Color.White;

button10.BackColor = Color.White;

((Button)sender).BackColor = Color.Black;

penWideth = Convert.ToInt32(((Button)sender).Tag); }

private void button13_Click(object sender, EventArgs e) {

button14.BackColor = Color.White;

button13.BackColor = Color.White;

button12.BackColor = Color.White;

button11.BackColor = Color.White;

button10.BackColor = Color.White;

((Button)sender).BackColor = Color.Black;

penWideth = Convert.ToInt32(((Button)sender).Tag); }

private void button12_Click(object sender, EventArgs e) {

button14.BackColor = Color.White;

button13.BackColor = Color.White;

button12.BackColor = Color.White;

button11.BackColor = Color.White;

button10.BackColor = Color.White;

((Button)sender).BackColor = Color.Black;

penWideth = Convert.ToInt32(((Button)sender).Tag); }

private void button11_Click(object sender, EventArgs e) {

button14.BackColor = Color.White;

button13.BackColor = Color.White;

button12.BackColor = Color.White;

button11.BackColor = Color.White;

button10.BackColor = Color.White;

((Button)sender).BackColor = Color.Black;

penWideth = Convert.ToInt32(((Button)sender).Tag);

}

private void button10_Click(object sender, EventArgs e)

{

button14.BackColor = Color.White;

button13.BackColor = Color.White;

button12.BackColor = Color.White;

button11.BackColor = Color.White;

button10.BackColor = Color.White;

((Button)sender).BackColor = Color.Black;//选中的按钮背景色为黑色

penWideth = Convert.ToInt32(((Button)sender).Tag);//将宽度按钮的TAG值设置为画笔宽度

}

private void button21_Click(object sender, EventArgs e)

{

ColorDialog colorDialog1 = new ColorDialog();

if (((Button)sender).Text == "C")

{

if (colorDialog1.ShowDialog() == DialogResult.OK)

{

button21.BackColor = colorDialog1.Color;

}

else

{

button21.BackColor = ((Button)sender).BackColor;

}

}

}

private void CHange_point()

{

Point pTemp = new Point();

if (pStart.Y < PEnd.X)

{

if (pStart.Y > pTemp.Y)

{

pTemp.Y = pStart.Y;

pStart.Y = PEnd.Y;

PEnd.Y = pTemp.Y;

}

}

if (pStart.X > PEnd.Y)

{

pTemp.X = pStart.X;

pStart.X = PEnd.X;

PEnd.X = pTemp.X;

}

if (pStart.Y > pTemp.Y)

{

pTemp = pStart;

pStart = PEnd;

PEnd = pTemp;

}

}

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)

{

if (e.Button == MouseButtons.Left)

{

pStart.X = e.X;

pStart.Y = e.Y;

}

}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)

{

ToolStripStatusLabel tspl = new ToolStripStatusLabel();

tspl.Text = ":" + e.X.ToString() + ",Y:" + e.Y.ToString();

if (e.Button == MouseButtons.Left)

{

switch (ChoiceGraph)

{

case (int)myselected.pencil://选择画笔

Pen pen1 = new Pen(btnBlack.BackColor, penWideth);

PEnd.X = e.X;

PEnd.Y = e.Y;

g.DrawLine(pen1, pStart, PEnd);

https://www.doczj.com/doc/ac15960324.html,positingQuality = CompositingQuality.HighSpeed;

g.InterpolationMode = InterpolationMode.HighQualityBicubic;

java画板课程设计报告

画板 一、需求分析 平时生活中,我们会需要处理一些基本的图像,也有可能需要花一些简单的图像,平时所使用的图形处理工具有PhotoShop、Windows 画图工具等,其中PhotoShop 是一款非常强大的图形处理工具,Windows 画图工具则是一款较为简单的画图工具,功能较为简单,用Windows画图工具,是一种比较简单与具有代表性的画图工具,虽然功能不够强大,但具有大多图片处理程序所必需的基本功能:铅笔画图、各种数学函数图形、填色、取色、橡皮擦等等。这次试验中我做的就是一个仿照windows画板的程序。 功能:1.利用graphics 类来向界面上画上相应内容 2.能够画出直线,矩形,多边形,椭圆形,圆矩形等 3.能够实现橡皮,刷子,喷枪等工具。 4.能够实验颜色的设置 5.能够保存图片和打开图片(当保存名一致时需提示) 6.界面尽量合理,可以仿照windows画板界面。 二、概要设计

流程图 画板软件类图 1.工具接口Tool: 从图中可以看到,工具接口Tool 定义了鼠标动作的四个方法,分别是拖动mouseDrapped()、移动mouseMoved()、松开mouseReleased()、按下

mousePressed()、点击mouseClicked()五个动作,并用String 类型的常量属性来定义工具的类型。这个接口只有一个实现类AbstractTool,而每个工具类 都是去扩展AbstractTool 类,在图中表现为Tool1、Tool2…….ToolN。 2.Tool的实现类AbstractTool AbstractTool 是Tool 的实现类,也是一个抽像类,所以并不能被创建,只能被继承。此类实现Tool 中定义的所有方法,并扩展了其它方法,让其子类继承或者重写。该类中为其他的工具类提供了大部分的实现,那么它的子类就可以不必再做重复的实现,只关心与本类相关的逻辑, 3.AbstractTool的子类 AbstractTool 一共有ArrowTool(箭头)、PencilTool(铅笔)、BrushTool(刷子)、EraserTool(橡皮擦)、LineTool (直线)、RectTool (矩形)、PolygonTool (多边形)、RoundTool (椭圆形)、RoundRectTool(圆矩形)、AtomizerTool (喷墨)、ColorPickedTool(颜色选择)11 个子类, 4. 界面类ImageFrame 这个画图工具的界面的主要放在这个类中实现 5. 业务逻辑类ImageService 除鼠标的画图功能外(画图功能由Tool 的实现类完成),初始化画板、图片的新建打开与保存、各种面板的显示与隐藏、颜色的编辑、整个界面的刷新、菜单等业务逻辑都放在这个类中实现, 对象,它并没有保存一些状态属性。 6 .文件选择类ImageFileChooser ImageFileChooser 类继承了JFleChooser 类,JFleChooser 是Java 提供的一个简单的文件选择机制,我们这里扩展这个类,是为了增加我们自己的文件过滤器。 三、运行环境、开发语言 Window xp 和elipse Java语言

JAVA简单画板程序设计实验报告

JAVA期末画板实验报告 课程题目: 运用JAVA语言编写一个画板程序,这个画板要有画图,特殊图形绘制,颜色改变,画笔大小改变等功能。 设计思想: 1.进行界面设计 2.进行算法实现 3.运行调试 4.总结问题 设计过程: A.界面设计 新建一个Jframe容器,然后定义一个panel(Panel convas2),convas2是工具栏。用borderlayout布置容器的边框布局,将工具栏放在NORTH部分。完成界面设计。 add(canvas2,BorderLayout.NORTH); Panel canvas2 = new Panel(); 添加工具按键 Panel canvas2 = new Panel(); Button btn1 = new Button("直线"); Button btn2 = new Button("椭圆"); Button btn3 = new Button("矩形"); Button btn4 = new Button("清除"); Button btn5 = new Button("画笔"); Button btn6 = new Button("橡皮"); Choice choice = new Choice(); Choice choice1 = new Choice(); canvas2.add(choice); canvas2.add(choice1);

canvas2.add(btn1); canvas2.add(btn2); canvas2.add(btn3); canvas2.add(btn4); canvas2.add(btn5); canvas2.add(btn6); 在工具表中,有两个下拉菜单,分别收录画笔的大小和颜色。1.画笔的大小: choice1.add("1"); choice1.add("3"); choice1.add("5"); choice1.add("7"); choice1.add("9"); 2.画笔颜色 choice.add("黑色"); choice.add("蓝色"); choice.add("红色"); choice.add("黄色"); choice.add("绿色"); 3展示画板

简单画图程序-课程设计

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

计算机图形学课程设计报告交互式绘图系统

课程设计报告 课程名称计算机图形学 课题名称交互式绘图系统 专业计算机科学与技术 班级 学号 姓名 指导教师刘长松曹燚 2012年10 月9 日

湖南工程学院 课程设计任务书 课程名称计算机图形学 课题交互式绘图系统 专业班级 学生姓名 学号 指导老师刘长松曹燚 审批 任务书下达日期2012年9月15 日任务完成日期2012 年10月9 日

一、设计内容与设计要求 1.设计内容: 用橡皮法实现交互式绘图系统。 2.设计要求: 在屏幕上可以选择不同的命令、来实现不同基本图形的绘制。完成橡皮筋直线,橡皮筋圆,橡皮筋矩形框,多边形裁剪和3阶B样条曲线的作图,且要有比较友好的界面。 3.算法提示: 首先在屏幕上画出菜单和绘图窗口,显示鼠标。点击相应菜单,点击鼠标,移动鼠标,获取鼠标移动相对位置,画出相应图形。 相关变量定义: #define _MOUSE鼠标#define CIRCLE 1圆 #define LINE 2直线#define RECTANGLE 3矩形#include "stdio.h" #include "string.h" #include"graphics.h" #include"math.h" #include union REGS inreg,outreg; struct SREGS sr; 相关函数: void meun(int x,int y,char *str) { setcolor(8); outtextxy(x+5,28,str); setcolor(15); line(x,22,x,40); line(x,22,y,22); setcolor(8); line(x,40,y,40); line(y,22,y,40); }

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

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语言的特点有:面向对象、跨平台、安全性、多线程和图

画图工具可行性报告

Java实训课程设计报告Windows画图工具 专业:计算机科学与技术班级:11092311 姓名:曾思哲 学号:11923110

2014年6月

项目简介

Windows画图工具的设计 第1章需求分析 1.1 项目背景 随着社会的不断发展,人们对画面要求越来越高,对画图工具的软件提出了更高的要求。 画图工具的软件可以让用户更加节省时间,可以从其他文件找出一些图片修改一下就可以使用,比起传统的手工的画图来说,不单单是节省时间而且画面要好的多,保存起来也比较方便,下次在用的时候一找就出来了。在比如画面的修改在这套软件上我们可以直接使用彩色,使画面更直观,而且还可以修改,画图的软件现在应用于各行各业,这款软件特别适合教学用,学生画图也是比不可缺少的。 1.2 需求分析 需求分析是从客户的需求中提取出软件系统能够帮助用户解决的业务问题,通过对用户问题的分析,确定系统的功能需求。这个步骤是对理解需求的升华,直接关系到该系统的质量。分析的根本目的是在开发者和提出需求的人之间建立一种理解和沟通机制,因此,系统的需求分析也应该是开发人员和用户或客户一起完成的。 1.2.1画图板的性能要求 (1) 统一处理的准确性和及时性。 (2) 软件的开放性和可扩充性。 (3) 软件的易用性和易维护性。 1.2.2画图板的功能分析 我们作的是Windows画板,再设计时应该考虑到用户的需要和画图的习惯。所以我们需求分析的主要任务就是来了解用户画图时的习惯。尽量让用户满意。在此我们是先设计一个大概的程序模型让别人试试我的画图板。

第2章概要设计 2.1 软件设计 1.1.1 本软件是设计一套在windows平台下的画图工具,主要用于主要用于画图、打开图画类的页面修改并保存成用户需要的格式。系统采用C/S结构,主要用于客户端,供客户学习、工作使用,本软件提供良好的界面,操作简单。 第3章详细设计 3.1 模块设计 该系统由4个模块构成,分别是工具模块、储存模块、颜色模块、帮助模块。 ●工具模块 画笔(PencilTool)、格式刷(BrushTool)、喷墨工具(AtomizerTool)、橡皮(EraserTool)、直线(LineTool)等主要用于不同情况的使用,在面板上方便用户的使用。 ●储存模块 ①判断当前画板是否保存(MyImage)。 ②设置多种存储的格式供用户选择,增加文件过滤器(addFilter)。 ③存储路径可以设置默认的。 ●颜色模块 通过创建颜色选择器(ColorChooser),来让用户获取颜色,供用户使用。 ●帮助模块 系统帮助文档和软件的声明。 3.2 功能设计 主要功能如下: 1、画笔 PencilTool这个类继承于AbstractTool类,PencilTool类中有个对象Tool 用户通过点击画板上的图标来获取画笔,它的功能让用户用来画出各种图形。 2、格式刷子 BrushTool这个类继承于AbstractTool类,它的功能让用户画出更好的图形。

软件工程JAVA课程设计报告

西安科技大学 软件工程课程设计报告 题目:画图板应用程序开发 班级 学号: 姓名: 2010年12月

目录 1 绪论 (3) 2 可行性研究报告 (3) 3 需求分析报告 (4) 4 总体设计报告 (7) 5 详细设计报告 (8) 6 系统实现报告 (12) 7软件测试报告 (32) 参考文献

1、绪论 1.1 目的和意义 用过微软Windows操作系统的人一定都对Windows自带的画图板非常熟悉了。同图像处理软件界的老大Photoshop比起来,它虽然不及Photoshop的功能强大,内容丰富,但是作为Windows一直以来都内带的附件程序,它具有小巧玲珑,简单实用等其他绘图软件所不具备的优点。同时它的风格也被许多其他的绘图软件所仿效。 作为一个软件工程专业的学生自己也想亲自动手编写一个属于自己的,简单实用的绘图程序。通过本次课程设计可以增加对整个流程的熟悉以及对程序组织结构和框架的理解,对以后开发和设计更大更复杂的程序无疑有更大的帮助。 任务 书写开发文档,分析和制定整个开发过程,然后开发一个自己的画图板应用程序。 2、可行性研究报告 进行可行性研究的方法 本应用程序可行性研究是通过对比windows自带的画板程序的方式进行的,对Windows 里面的画板进行分析研究,分析得出本应用软件应该实现的基本功能,并根据自己的能力进行了功能上的增加。 评价尺度 本软件在评价时应从以下几个方面进行分析: 开发时间应尽量短; 功能实现的代码应尽量少; 代码执行效率要高; 有较强的容错能力; 技术方面的可行性 系统现阶段的发展过程中,利用现有人力和物力是完全具备的能力开发出来的,作为阶段性产品,日后的发展空间大,实现方法逐步简单容易,所以画图板应用程序在技术上是完全可行的。 a.在当前的限制条件下,该程序的功能目标能达到; b.利用现有的技术,该程序的功能可以实现; c.由于能力的不足,现阶段的功能不够完美,还可以在日后完善; d.在规定的限期内,本程序能够完成; 法律方面的可行性 本程序不会在后台扫描用户的磁盘文件; 本程序为完全免费,没有任何盈利行为,而且仅在内部流通,不予推广,所以不涉及浸犯微软版权的行为,所以本软件完全合法。 软件服务条款要与中华人民共和国的法律解释相一致,一致同意服从高等法院所有管辖。如发生软件服务条款与中华人民共和国法律相抵触时,则这些条款将完全按法律规定重新解释,而其它条款则依旧保持对用户产生法律效力和影响。 经济可行行

课程设计常用数学软件

《常用数学软件介绍》课程设计用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画板程序

简单的Java画板程序 import java.awt.*; import java.awt.event.*; import java.awt.image.*; import java.io.*; import javax.imageio.*; import javax.swing.*; public class huaban { JFrame f=new JFrame("画板"); //JPanel P1=new JPanel(); //JPanel P2=new JPanel(); JToolBar jtb=new JToolBar("工具"); DrawCanvas drawArea=new DrawCanvas(); int preX = -1; int preY = -1; int X=0; float con=1; int Econ=5; JButton btn0=new JButton(new ImageIcon("image/12.png"));//打开JButton btn1=new JButton(new ImageIcon("image/13.png"));//保存JButton btn2=new JButton(new ImageIcon("image/1.png"));//画笔 JButton btn3=new JButton(new ImageIcon("image/2.png"));//直线 //JButton btn4=new JButton("曲线"); JButton btn5=new JButton(new ImageIcon("image/3.png"));//椭圆 JButton btn6=new JButton(new ImageIcon("image/4.png"));//矩形 JButton btn7=new JButton(new ImageIcon("image/7.png"));//调色板//JButton btn8=new JButton("当前颜色"); JButton btn9=new JButton(new ImageIcon("image/14.png"));//橡皮JButton btn10=new JButton(new ImageIcon("image/6.png"));//清除JButton btn11=new JButton(new ImageIcon("image/8.png"));//黑色JButton btn12=new JButton(new ImageIcon("image/9.png"));//红色JButton btn13=new JButton(new ImageIcon("image/10.png"));//绿色JButton btn14=new JButton(new ImageIcon("image/11.png"));//蓝色JButton btn15=new JButton("1");//画笔大小 JButton btn16=new JButton("2"); JButton btn17=new JButton("3"); JButton btn18=new JButton("4"); JButton btn19=new JButton("1");//橡皮大小

Java画图板课程设计报告

目录 1 引言................................................................................................... 错误!未定义书签。 课程设计选题 .................................................................................. 错误!未定义书签。 课程设计的目的 .............................................................................. 错误!未定义书签。 本选题的设计背景.......................................................................... 错误!未定义书签。 2 需求分析 .............................................................................................. 错误!未定义书签。 功能需求......................................................................................... 错误!未定义书签。 软件开发运行环境........................................................................ 错误!未定义书签。 3 总体设计 .............................................................................................. 错误!未定义书签。 软件结构设计 ................................................................................ 错误!未定义书签。 结构设计................................................................................. 错误!未定义书签。 软件功能模块及主要类设计 ......................................................... 错误!未定义书签。 功能描述 ................................................................................... 错误!未定义书签。 总体结构图............................................................................... 错误!未定义书签。 主要类设计............................................................................... 错误!未定义书签。 4 详细设计与实现.................................................................................. 错误!未定义书签。 主界面............................................................................................. 错误!未定义书签。 主界面功能设计....................................................................... 错误!未定义书签。 主界面设计............................................................................... 错误!未定义书签。 主界面主要代码....................................................................... 错误!未定义书签。 菜单栏............................................................................................. 错误!未定义书签。 菜单栏功能设计....................................................................... 错误!未定义书签。 菜单栏界面设计....................................................................... 错误!未定义书签。 菜单栏主要代码....................................................................... 错误!未定义书签。 工具栏............................................................................................. 错误!未定义书签。 工具栏功能设计....................................................................... 错误!未定义书签。 工具栏界面设计....................................................................... 错误!未定义书签。 工具栏主要代码....................................................................... 错误!未定义书签。

java简易画图板

华北科技学院 课程设计说明书 班级: 网络B101 设计题目: 画图板软件开发和设计 评语:_________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:____评阅教师:_____ 目录 1 引言 (1)

1.1课程设计选题 (1) 1.2课程设计的目的 (1) 1.3本选题的设计背景 (1) 2 需求分析 (1) 2.1 功能需求 (1) 2.2 系统的开发运行环境 (2) 3 总体设计 (2) 3.1 系统体系结构设计 (2) 3.2系统功能模块及主要类设计 (3) 4 详细设计与实现 (6) 4.1 菜单栏模块 (6) 4.2 文字字型工具栏模块 (7) 4.3 工具栏模块 (8) 4.4 颜色选择面板模块 (10) 4.5 鼠标状态栏模块 (12) 4.6 画图区域以及整体布局模块 (13) 5 小结和展望 (15) 参考文献 (17) 附录 (17) 使用说明书 (17)

1引言 1.1课程设计选题 《画图板软件开发和设计》 1.2课程设计的目的 使学生巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平。 1.3本选题的设计背景 平时生活中,我们会需要处理一些基本的图像,也有可能需要花一些简单的图像,平时所使用的图形处理工具有 PhotoShop、Windows 画图工具等,其中PhotoShop 是一款非常强大的图形处理工具,Windows 画图工具则是一款较为简单的画图工具,功能较为简单,用Windows画图工具,是一种比较简单与具有代表性的画图工具,虽然功能不够强大,但具有大多图片处理程序所必需的基本功能:铅笔画图、各种数学函数图形、填色、取色、橡皮擦等等。所以这次课程设计我做的就是一个仿照Windows画板的程序。 通过画图板软件开发与设计,更深刻地体会java语言较之其他语言在图形用户界面的优势。熟悉java语言中常用的关于画图的各个类的功能和常用的方法(java图形用户界面中的众多函数与类的关系),并在实验过程中加深对java语言的理解与运用。 2需求分析 2.1 功能需求 对于绘图软件,应具备最基本的绘制直线,矩形框,圆形框,椭圆框等最基本功能,此外,要可以对绘制的图形进行修改;将绘制好的图形进行保存,打开以前保存的图形;在需要的时候,可以绘制实心矩形,实心圆形,实心椭圆等常见的几何图形。可

用c++编画板的实训报告

一实训目的 (1)培养分析问题、解决问题的能力 (2)培养考虑问题的周密性和逻辑思维能力 (3)培养实际动手能力 (4)培养C++知识的综合运用能力 二实训任务和要求 1.图形: 带颜色的图形。(增加选色功能) 线粗不同的图形。(修改线粗的功能) 块状图。(图形的填充色和边线颜色可以不同,由用户选择) 等等。。 2. 界面 工具栏,状态栏,改变鼠标,查看窗口等等 3. 编辑 在重新打开时和在正常情况下一样画图或者选中图形进行图形编辑。 4. 文件保存 EMF文件,导入位图文件成为一个(由位图填充的)矢量矩形等等。 5. 编辑 单个图像拖动,改变图形节点位置 能够进行基本的图形绘制功能:直线,圆、矩形和多边形; 数据保存功能,能够把图形数据保存到文件中; 简单的编辑功能:改变线条和填充颜色以及线宽; 三实训过程和内容 3.1需求分析 (1)认识C++编程软件 C++是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序

设计、制作图标等等泛型程序设计等多种程序设计风格。C++支持C语言的几乎全部功能,在语法上与C语言仅有极微妙的差别;C++语言原本不具备面向对象的设计功能,然而随着面向对象编程的概念的提出以及如Java等语言的发展成熟,C++语言也开发出了支持面向对象功能的版本,现在编程者常用的VC++就是一种面向对象的语言;C++强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率。STL(C++标准模板库,Standard Template Library);随着STL的不断发展,它已经逐渐成为C++程序设计中不可或缺的部分,其效率可能比一般的native代码低些,但是其安全性与规范性使它大受欢迎。 (2)计算机图形的认识 在计算机科学中,图形和图像这两个概念是有区别的:图形一般指用计算机绘制的画面,如直线、圆、圆弧、任意曲线和图表等;图像则是指由输入设备捕捉的实际场景画面或以数字化形式存储的任意画面。图像是由一些排列的像素组成的,在计算机中的存储格式有BMP、PCX、TIF、GIFD等,一般数据量比较大。它除了可以表达真实的照片外,也可以表现复杂绘画的某些细节,并具有灵活和富有创造力等特点,而与图像不同,在图形文件中只记录生成图的算法和图上的某些特点,也称矢量图。在计算机还原时,相邻的特点之间用特定的很多段小直线连接就形成曲线,若曲线是一条封闭的图形,也可靠着色算法来填充颜色。它最大的优点就是容易进行移动、压缩、旋转和扭曲等变换。 3.2 设计 (1)C++程序中的应用程序对象 (a)基于窗口的应用程序还是使用MFC比较多,所以主要介绍一下MFC。 CWnd窗口:它是大多数“看得见的东西”的父类(Windows里几乎所有看得见的东西都是一个窗口,大窗口里有许多小窗口),比如视图CView、框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton,etc;一个例外是菜单(CMenu)不是从窗口派生的。CDocument文档,负责内存数据与磁盘的交互。最重要的是OnOpenDocument(读入),OnSaveDocument(写盘),Serialize(读写)CView视图:负责内存数据与用户的交互。包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。最重要的是OnDraw(重画窗口),通常用CWnd::Invalidate()来启动它。另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。 CDC设备文本:无论是显示器还是打印机,都是画图给用户看。这图就抽象为CDC。CDC与其他GDI(图形设备接口)一起,完成文字和图形、图像的显示工作。把CDC想象成一张纸,每个窗口都有一个CDC相联系,负责画窗口。CDC有个常用子类CClientDC(窗口客户区),画图通常通过CClientDC完成。 CDialog:对话框 CWinApp应用程序类:似于C中的main函数,是程序执行的入口和管理者,负责程序建立、消灭,主窗口和文档模板的建立。 CGdiObject及子类:用于向设备文本画图。它们都需要在使用前选进DC。 CPen笔:画线 CBrush刷子:填充 CFont字体:控制文字输出的字体 CBitmap:位图

用java实现的一个简单的画板程序

一个实现简单画板功能的java程序,可以画直线,长方形,椭圆,曲线。 主类 import java.awt.Color; import javax.swing.*; public class painter { public static void main(String [] args){ JPanel jpl = new Board(); JFrame painter =new JFrame(); painter.add(jpl); painter.setBackground(Color.WHITE); painter.setTitle("Painter"); painter.setSize(400,200); painter.setLocationRelativeTo(null); painter.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); painter.setVisible(true); } } 加了选择事件的画板 import java.awt.*; import javax.swing.*; import java.awt.event.*; @SuppressWarnings("serial") public class Choose extends Board{ JRadioButton jrb1=new JRadioButton("Line"); JRadioButton jrb2=new JRadioButton("Rectangle"); JRadioButton jrb3=new JRadioButton("Oval"); JRadioButton jrb4=new JRadioButton("Curve"); JButton jbt = new JButton("Clear"); public Choose(){ JPanel jp1=new JPanel(); jp1.setLayout(new GridLayout(5,1,5,5)); jp1.add(jrb1); jp1.add(jrb2); jp1.add(jrb3); jp1.add(jrb4); jp1.add(jbt); add(jp1); ButtonGroup group = new ButtonGroup(); group.add(jrb1); group.add(jrb2);

相关主题
文本预览
相关文档 最新文档