`
时间被海绵吃了
  • 浏览: 6275 次
  • 性别: Icon_minigender_1
  • 来自: 湖北
文章分类
社区版块
存档分类
最新评论

画图板重绘功能的改进

 
阅读更多
之前的画图板重绘功能是用每个形状的信息存储的(具体见前一篇博客),但是我们发现这样做既让代码冗长,又会出现很多错误,所以我们采用新的方法来重绘,这里就利用了Java里面向对象的思想。

首先是将自定义队列List进行改进,让这个队列不再存储很乱的信息像既有坐标又有颜色什么的,而是直接将一个形状封装成一个对象存储进队列,这样画一个形状存储一个,既不会出现前一篇博客中的类转换异常,又使代码简洁。

以直线举例:
if("line".equals(shape_command))		
{
	if(x1!=x2&&y1!=y2)
	{
		shape = new Line(x1, y1, x2, y2,color_command);
		shape.draw(g);
		list.add(shape);
	}
}

如上,直线被封装成了一个shape类,在list里存储的也就是这些shape类型了

由代码可以看到Shape类的创建中还用到了直线类Line,这是因为Shape类只是一个抽象的思想,
它是所有指定形状的共同点的体现,代码如下:
/** 
 * 顶级形状类 
 * */
public abstract class Shape {

	//形状的坐标
	public int x1,y1,x2,y2;
	
	//形状的颜色 
	public Color color;
	
	//画笔的宽度
	public int width;
	
	//矩形的圆角系数
	public int round;
	
	//是否填充
	public boolean isfill;
	
	public Shape(int x1,int y1,int x2,int y2,Color color)
	{
		this.x1 = x1;
		this.y1 = y1;
		this.x2 = x2;
		this.y2 = y2;
		this.color = color;
	}
	
	public abstract void draw(Graphics g);
}


所以其他形状只要继承它即可。以直线举例:
public class Line extends Shape{

	//构造方法
	public Line(int x1, int y1, int x2, int y2, Color color) {
		super(x1, y1, x2, y2, color);
	}

	public void draw(Graphics g)
	{
		g.setColor(color);
		g.drawLine(x1, y1, x2, y2);
	}
}


最后,List的代码也要相应改成存储Shape的了:
public class MyList {
	private Shape[] srcArray = new Shape[0];
	
	//获取数组长度的方法
	public int length()
	{
		return srcArray.length;
	}
	
	//获取元素的方法
	public Shape get(int i)
	{
		return srcArray[i];
	}
	
	//清空所有元素的方法
	public void clear()
	{
		srcArray = new Shape[0];
	}
	
	//在数组的最后添加元素的方法
	public void add(Shape elements)
	{
		Shape[] destArray = new Shape[srcArray.length+1];
		for(int i=0;i<srcArray.length;i++)
		{
			destArray[i] = srcArray[i];
		}
		destArray[srcArray.length] = elements;
		srcArray = destArray;
	}

	//删除一段区间元素的方法
	public void delete(int start)
	{
		if(start ==0)
		{
			clear();
		}else
		{
			Shape[] destArray = new Shape[start];
			for(int i=0;i<start;i++)
			{
				destArray[i] = srcArray[i];
			}
			srcArray = destArray;
		}
	}
	
	public void print()
	{
		for(int i=0;i<srcArray.length;i++)
			System.out.println(srcArray[i]);
	}
}
分享到:
评论

相关推荐

    画图板 代码 画图板 代码 画图板 代码

    画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码...

    BMP格式解析与保存 画图板的重绘

    在本文中,我们将深入探讨BMP格式的解析与保存,并结合画图板的重绘功能来讲解这一主题。 首先,我们需要理解BMP文件的结构。BMP文件分为两部分:文件头和图像数据。文件头包含文件信息,如文件大小、图像宽度、...

    java 画图板 windows画图板简单实现

    JPanel是添加到JFrame中的可绘制区域,我们将在这里实现画图功能。 3. **鼠标事件处理**: - **MouseListener**:包含四个方法,分别是mousePressed、mouseReleased、mouseClicked和mouseEntered。在画图板中,...

    画图板,window画图板

    它提供了丰富的基本画图功能,让用户能够轻松地进行创意表达。本文将深入探讨Windows画图板在动态画图方面的应用及其主要特点。 一、动态画图的实现 动态画图是指在画图过程中,图像可以根据用户的操作实时变化,...

    java画图板程序代码

    Java 画图板是使用 Java 语言编写的图形绘制程序,提供了基本的绘图功能,如画笔、直线、椭圆、矩形等,用户可以使用该程序绘制简单的图形。下面我们将对 Java 画图板程序进行详细的分析和解释。 1. Java 画图板...

    java画图板程序,功能齐全,代码简单

    画图板的核心功能通常包括以下几点: 1. **选择颜色**:用户可以选择不同颜色进行绘制,这通常通过颜色选择器组件实现,如JColorChooser。 2. **选择工具**:用户可以选择不同的绘图工具,如线条、矩形、圆形、...

    Java画图板应用

    Java画图板应用是一种基于Java编程语言开发的图形用户界面(GUI)程序,它提供了类似Windows操作系统内置画图板的功能。这个程序的核心是利用Java的Swing或JavaFX库来构建用户界面,允许用户进行基本的绘图操作,如...

    用java编的画图板 功能齐全 外观精美

    标题中的“用java编的画图板 功能齐全 外观精美”表明这是一个使用Java编程语言开发的图形用户界面(GUI)应用,主要用于绘画和图形编辑。它具有丰富的功能和良好的视觉设计,使得用户可以方便地进行各种图形操作。 ...

    超强VB画图板 功能最全版

    本项目名为“超强VB画图板 功能最全版”,是作者通过深入学习和实践,在计算机图形学课程设计中完成的一款集大成之作。它不仅展示了VB的强大功能,还体现了作者对计算机图形绘制的深入理解。 VB画图板的核心在于...

    QT画图板详例

    4. **鼠标事件处理**:为了实现画图功能,我们需要捕获和处理鼠标按下、移动和释放等事件。通过这些事件,我们可以计算出鼠标在画布上的轨迹,然后使用QPainter在适当的位置绘制线条或图形。 5. **绘图模式**:画图...

    仿XP画图板

    【描述】"仿XP画图板"实现了画图板的多数核心功能,包括但不限于选择不同的画笔、颜色、线型,以及橡皮擦、填充、复制、粘贴、撤销、重做等操作。它的界面设计与XP原版画图板极其相似,这不仅提供了用户熟悉的操作...

    JAVA简易画图板

    【JAVA简易画图板】是一个基于Java编程语言开发的简单绘图应用程序,它为用户提供了一个基本的图形界面,用户可以通过这个界面进行简单的绘画操作。这个程序包含了一些基本的绘图功能,如绘制形状、使用铅笔工具以及...

    基于qt实现的画图板

    这个"基于qt实现的画图板"项目提供了一个基础的图形用户界面(GUI)应用,让用户能够进行基本的绘画操作,比如选择画笔、填充颜色、打开和保存图像。以下是关于这个项目的一些关键知识点和相关技术的详细解释: 1. ...

    QTcreator写画图板

    画图板是一个基础且功能丰富的应用,常常作为学习图形用户界面(GUI)编程的一个入门项目。本文将重点介绍Qt的GUI框架、主要组件以及编程概念。 ### 标题知识点解析 #### QTcreator QtCreator是一个集成开发环境...

    画图板绘图工具

    画图板工具里面包含了基本图形的绘图功能,功能全,操作简单。是vs平台上基于c#语言的开发程序

    画图板_Vc_

    本篇文章将深入探讨一个基于VC++(Visual C++)编写的“画图板”程序,该程序旨在模拟Windows系统自带的画图工具,提供手绘线、绘制简单图形、文字输入、图块拖放、重复撤销、画面缩放以及图片的打开与保存等核心...

    MFC做的画图板

    为了实现画图功能,我们需要在自定义的CView 子类中重写OnDraw 函数。这个函数会在视图需要重绘时被调用,我们可以在这里使用GDI (Graphics Device Interface) 来绘制图形。GDI 提供了一系列的函数,如MoveTo、Line...

    学生制作的画图板

    从功能上来看,这款画图板应包含多种基础和进阶的绘图功能。它可能具备画笔、橡皮擦、尺子、圆规等基础绘图工具,能够帮助学生绘制直线、曲线、圆形和其他几何图形。除此之外,进阶功能可能包括颜色填充、线条粗细...

    Java简易画图板

    这可能是通过设置一个特定的颜色(如背景色)和不透明度,然后在指定区域内重绘,以达到擦除效果。 5. **颜色选择**:用户可以改变画笔颜色,这需要实现颜色选择器,可能是一个颜色对话框,用户选择颜色后,将所选...

    超强VB画图板 最全功能板

    在本项目“超强VB画图板 最全功能板”中,开发者利用VB的强大功能,创建了一个功能丰富的图形编辑工具,可以满足用户多种绘图需求。 首先,我们要理解VB中的画图机制。在VB中,通常使用PictureBox或Form控件作为...

Global site tag (gtag.js) - Google Analytics