欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

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

系統 1886 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條評論
主站蜘蛛池模板: 国产精品美女一区二区 | 激情六月天 | 欧美性视频网 | 六月伊人| 亚洲日本在线观看视频 | 精品国产成人在线 | 三级全黄a | 国产精品网址在线观看你懂的 | 国产成人精品免费视频大 | 99亚洲精品 | 福利视频中文在线观看 | 久久精品国产欧美成人 | 人人草草| 久久精品人人做人人看最新章 | 久久久久久久99精品免费观看 | 丁香婷婷色综合亚洲小说 | 久草97| 99在线观看精品 | 91视频无限看| 另类视频综合 | 二区国产 | 国产精品极品美女自在线看免费一区二区 | 中文字幕一区在线观看视频 | 嫩草影院地址一二三网址 | 瑟瑟在线 | 中文字幕第二页 | 免费很黄很色裸乳在线观看 | 激情综合视频 | 草草线在成人免费视频 | 久久久久久久久久久久久久av | 午夜影院在线观看 | 精品亚洲一区二区 | av789| 全免费午夜一级毛片一级毛 | 一区二区三区四区电影 | 99精品丰满人妻无码A片 | 5月婷婷6月丁香 | 国产欧美精品一区二区三区 | 精品综合在线 | 特黄特色大片免费视频大全 | 欧美综合区 |