`
jcs130
  • 浏览: 130148 次
  • 性别: Icon_minigender_1
  • 来自: Ottawa
社区版块
存档分类
最新评论

哈~终于把画图板的两种保存方式搞定了~谈谈我对于这个的理解~

 
阅读更多

我们的程序都运行的时候,数据都是存储在内存里的~对吧~

 

就像我的那个画图板,不管画多少图形,只要把程序一关掉~那些数据就没了~所以必须要在硬盘(永久存储介质)上保存成数据文件~(╮(╯▽╰)╭这不是废话么……)

 

把内存中的数据写入硬盘上的文件或者从文件读取到内存,就要用到“流”。“流” 就和水管子一样,数据从内存流到文件,从文件流到内存。流分为输入流和输出流:输入流是把数据输入到内存中的流,输出流就是把数据从内存中输出的流,输入输出都是相对与内存而言的~不要搞混了哦~

 

经过学习,我的画图板最开始时以队列的方式存储每一个图形,画板重绘的时候就是从队列中依次把之前画的图像提取出来。

所以保存的时候最先用的是以队列的形式把画图板的图形保存到文件中。

因为当时做简单画板的时候用的并不是java里面提供的现成的队列(List),而是自己自定义的一个队列,所以刚开始的时候还遇到了个麻烦:

    通过查阅JDK文档,发现了ObjectInputStream 这个流可以把任意对象写入文件~所以就用了这个流,可是一运行就报错,以前没有见过,具体是什么记不得了,只知道我问了一个学长,他告诉我报这个错是因为我自定义的类没有实现Serializable这个接口,而凡是要通过ObjectInputStream保存的对象的类都要实现Serializable这个接口~哈~这下我学习了~

一开始我写的是直接把流写入文件,但是速度奇慢……而且CPU占用几也很高。如图:

 


 

 

后来加入了缓冲流,以上两个问题得到了改善。

但是当图形对象很多的时候,保存速度还是慢……以打开为例,如图:

 

 


 

这使我们的第二中保存方式——把像素都保存到数组里面的方法优势就出来了~同样以打开为例:

 

 


 

时间减少了不少吧~~

 

 

但是,当对象比较少的时候队列的速度就快了,而像素方式的速度没有多少改变(正常情况~因为不管有多少图形对象,像素方式都会把整个画布上的像素保存一遍,所以速度上没什么变化):例如:

 

以队列保存:

 


 

以像素数组保存:

 

 


 

计算机中的真正的BMP(位图)文件大概就是像上面说的数组保存的方式,不过还是有区别的~

等学到了再说~哈~~

 

  • 大小: 33.9 KB
  • 大小: 305.2 KB
  • 大小: 35.7 KB
  • 大小: 89.9 KB
  • 大小: 90.4 KB
2
6
分享到:
评论
2 楼 jcs130 2011-07-29  
up2u0609 写道
不了个是吧,百度图片?

对呀~我要先上传到网上才能引用啊~
1 楼 up2u0609 2011-07-28  
不了个是吧,百度图片?

相关推荐

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

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

    java画图板java画图板

    java画图板java画图板java画图板

    MFC画图板绘图并保存图片导出

    MFC的程序,可以在画图板上自由绘制,并保存为图片格式导出。 MFC的程序,可以在画图板上自由绘制,并保存为图片格式导出。

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

    用java实现的windows画图板的简单模式,对于java初学者的事件触发器学习有很好的帮助。。。

    JAVA开发的画图板

    本程序完成的是一个类似于Windows画图板的画图程序,由于不是开发和设计专业的绘图和图像制作软件,所以,完成的程序的简单功能包括以下几项: 1.新建 2.打开或保存 3.绘制一些基本的图形组件 4.用鼠标在绘图板上单击...

    画图板源码示例画图板源码示例

    画图板源码示例画图板源码示例画图板源码示例

    一个Java实现的画图板程序

    一个用Java实现的画图板程序~一个用Java实现的画图板程序~一个用Java实现的画图板程序~一个用Java实现的画图板程序~

    仿windows画图板

    仿windows画图板程序,基本实现windows画图板的功能

    基于Java的一个画图板

    本程序完成的是一个类似于Windows画图板的画图程序。 整个程序界面很简洁,一目了然,与大多数Windows的应用程序的风格一样。在左上方的菜单栏里有文件、色彩、线条粗细、帮助4个下拉式菜单,可以对绘图文件进行...

    JAVA简易画图板

    简易画图板。有基本形状绘制,加铅笔和橡皮,可撤销清除。可保存打开。

    仿XP画图板

    自己做的一个仿XP的画图板练手 实现了画图板大多数常用功能 界面和XP的画图板非常相似 可以给新手参考用

    C# 高仿 Windows 画图板

    C# 高仿 Windows 画图板,实现图片的打开/保存/文字绘制/矩形/圆形/椭圆形/圆角矩形/画刷/画笔/喷枪/曲线/取色等功能。

    canvas 画图板.zip

    canvas 画图板的实现

    画图板,window画图板

    动态画图,画图板,可以动态画图,基本画图功能

    画图板_Vc_

    类似Windows画图板的小程序,功能和界面全部模仿于Windows自带的画图板,界面如截图。功能主要有: 手绘线、简单图形、文字输入、图块拖放、重复撤销、画面缩放、打开保存图片文件

    win10画图板软件下载

    win10画图板下载,解压点击即可用 win10画图板下载,解压点击即可用 win10画图板下载,解压点击即可用 win10画图板下载,解压点击即可用 win10画图板下载,解压点击即可用 win10画图板下载,解压点击即可用 win10...

    C++画图板程序

    C++大作业,用MFC单文档实现画图板程序

    java swing 画图板

    java swing 实现的仿照win的画图板,欢迎交流学习

Global site tag (gtag.js) - Google Analytics