亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

自定義畫板數據的保存和讀取

系統 2040 0

??1.自定義隊列實現數據寫入文件,以及對該文件的讀取.

由于矩形,圓形,直線包括曲線,都是以對象的形式直接存放在自定義的隊列當中,而這個隊列又是存在內存當中.既然這個對象組成的隊列能夠存儲在內存里,如果能直接將這個對象隊列從內存里寫到文件中去,是不是也能實現保存一個由多個形狀組成的圖片?而當我再需要用到這個文件的時候,只需要將這個對象隊列讀取到內存中,而這些對象的方法,對我來說是透明的,所以我又能直接字再使用這些方法將這些對象還原成自定義畫板上的形狀..正是因為這個想法,我直接采用了對象類型的數據流來讀寫數據.

????首先,我將這些形狀直接以對象的方式寫到文件中去.

    try {
				// 創建文件輸出流
				FileOutputStream fos = new FileOutputStream(filepath
						.getAbsolutePath());
				try {
					// 將文件輸出流包裝成對象類型的數據流
					ObjectOutputStream obs = new ObjectOutputStream(fos);
					// 保存隊列的長度.
					obs.writeInt(size);
					// 遍歷隊列
					for (int i = 0; i < size; i++) {
						Shape sh = shapearray.getSh(i);
						obs.writeObject(sh);
					}

					obs.flush();
					fos.close();

				} catch (IOException e) {
					e.printStackTrace();
				}

			} catch (FileNotFoundException e) {
				e.printStackTrace();
			}
  

?

?

??? 而當我要讀取這些文件的時候,又直接以對象的形式將其從文件中讀出

    try {

				// 創建文件輸出流
				FileInputStream fis = new FileInputStream(filepath
						.getAbsolutePath());
				try {
					// 將文件輸出流包裝成對象類型的數據流
					ObjectInputStream obi = new ObjectInputStream(fis);
					int len = obi.readInt();
					try {

						//將讀取到的對象存到隊列中
						ShapeArray<Shape> sh = new ShapeArray<Shape>();
						for (int i = 0; i < len; i++) {
							sh.addEmo((Shape)obi.readObject());
						}
						return sh;

					} catch (ClassNotFoundException e) {
						e.printStackTrace();
					}

				} catch (IOException e) {
					e.printStackTrace();
				}

			} catch (FileNotFoundException e) {
				e.printStackTrace();
			}
  

?

??? 讀出文件中的對象之后.就可以直接調用對象的方法來實現將其轉化成畫板上的形狀

    shapearray = array;
					// 將讀取得到的形狀對象畫出來
					for (int i = 0; i < shapearray.getlength(); i++) {
						Shape shape = shapearray.getSh(i);
						shape.draw(g);
					}
  

??? 通過對數據直接以對象形式的讀取完成了對自定義的畫板的數據的保存.

?

?

?

2.以位圖的方式存取

?一個圖片是由許許多多的點組成的,而這一個個的點就是所謂的像素點,即存儲的這個圖片的高度和寬度,所以,如果能夠得到每個點的顏色信息,再將這些點按照它們本來所在的位置輸到屏幕上,就完成這個圖片的存儲以及讀取.

??? 首先我們要得到每個點的顏色.可以用一個二維數組存儲這些顏色信息.

    try {
			robot = new Robot();
			wide = jp.getWidth();
			high = jp.getHeight();
			colors = new int[wide][high];
			Point p = jp.getLocationOnScreen();
			Rectangle rect = new Rectangle(p.x, p.y, wide, high);

			BufferedImage buffimg = robot.createScreenCapture(rect);

			for (int i = 0; i < colors.length; i++) {
				for (int j = 0; j < colors[i].length; j++) {
					colors[i][j] = buffimg.getRGB(i, j);
				}
			}
  

?

?

??? 其次,將這些顏色信息直接以基本數據類型的數據流寫入文件中去.這樣,便完成了一個圖片各點顏色的保存,而當我們又能再這些數據再還原成圖片,所以到這里完成了對這個圖片的保存.

    try {
				// 創建文件輸出流
				FileOutputStream fos = new FileOutputStream(
						filepath.getAbsolutePath());
				try {
					// 將文件輸出流包裝成基本數據類型的數據流
					DataOutputStream obs = new DataOutputStream(fos);
					// 保存圖片的寬度
					obs.writeInt(wide);
					// 保存圖片的高度
					obs.writeInt(high);

					// 遍歷數組,將各點的顏色信息寫入文件
					for (int i = 0; i < wide; i++) {
						for (int j = 0; j < high; j++) {
							obs.writeInt(color[i][j]);

						}
					}
					// 強制清空,保證數據全部寫入文件
					obs.flush();
					fos.close();

				} catch (IOException e) {
					e.printStackTrace();
				}

			} catch (FileNotFoundException e) {
				e.printStackTrace();
			}
  

??

?

??? 最后,只需要再將這些文件中的數據按照特定的方法還原成一個圖片,就實現了這個文件的讀取了.

    try {

				// 創建文件輸出流
				FileInputStream fis = new FileInputStream(
						filepath.getAbsolutePath());
				try {
					// 將文件輸出流包裝成基本數據類型的數據流
					DataInputStream obi = new DataInputStream(fis);
					int wide = obi.readInt();
					int high = obi.readInt();

					int color[][] = new int[wide][high];

					// 將讀取到的各點的顏色信息存入數組
					for (int i = 0; i < wide; i++) {
						for (int j = 0; j < high; j++) {
							color[i][j] = obi.readInt();
						}
					}

					fis.close();
					return color;

				} catch (IOException e) {
					e.printStackTrace();
				}

			} catch (Exception e) {
				e.printStackTrace();
			}
		}
  

?

?

?

?

?

?

?

?


自定義畫板數據的保存和讀取
?

自定義畫板數據的保存和讀取


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 阳光灿烂的日子在线观看 | 一本色道久久综合亚洲精品高清 | 北岛玲日韩精品一区二区三区 | 狠狠干中文字幕 | 日韩亚州 | 色偷偷7777www | 四虎永久在线精品免费观看地址 | 欧美成人国产一区二区 | 青青免费视频精品一区二区 | se色成人亚洲综合 | 亚洲国产综合网 | 国产亚洲综合视频 | 国产成人精品18 | www.亚洲视频 | 欧美成人香蕉在线观看 | 婷婷99精品国产97久久综合 | 草视频在线观看 | 伊人五月| 久久久精品国产四虎影视 | 久久精品国产99精品最新 | 久久久久久久久久综合情日本 | 午夜一级 | 日韩高清在线日韩大片观看网址 | 99视频在线免费看 | 国产伦理一区 | 香蕉在线播放 | 免费日韩精品 | 国产精品高清视亚洲一区二区 | 欧美在线国产 | julia中文字幕在线观看 | 国产资源在线播放 | 中文字幕人成乱码第一页 | 末成年娇小性色xxxxx视频 | 99热久久国产综合精品久久国产 | 欧美高清不卡午夜精品免费视频 | 亚洲国产精品第一区二区三区 | 免费观看成人羞羞视频网站观看 | 亚洲精品123区| 九九热精品免费观看 | 成人一级黄色毛片 | 天天射夜夜骑 |