欧美三区_成人在线免费观看视频_欧美极品少妇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條評論
主站蜘蛛池模板: 午夜精品久久久久久99热软件 | 成人色色网 | 欧美日韩精品一区二区在线播放 | 九九九九精品视频在线播放 | 亚洲人和日本人jizz | 国产精品尤物在线观看一区 | 欧美另类专区 | 国产一级精品高清一级毛片 | 久久精品国产一区二区 | 国产精品视频 | 日韩午夜电影 | 成年人在线免费 | 成人免费视频观看视频 | 亚洲第一精品在线 | 午夜欧美精品 | 高清国产美女一级a毛片 | 久久久久久久久99精品 | 亚洲视频在线视频 | 亚洲精品电影在线观看 | 精品国产一区二区亚洲人成毛片 | 久久精品国产清自在天天线 | 日本在线观看免费视频 | 成人午夜精品一区二区三区 | 九月婷婷开心九月 | 国产精品综合亚洲AV久久久小说 | 国产高清中文字幕 | 精品久久久久久久久久久久久久久 | 天天干夜夜噜 | 一道本在线观看视频 | 久草视频官网 | 亚洲综人网 | 美女爽到呻吟久久久久 | 亚洲欧美精品综合中文字幕 | 国产精品久久久久久久久久免费 | 四季久久免费一区二区三区四区 | 精品国产欧美一区二区 | 亚洲视频一区在线观看 | 香蕉视频99 | 日本免费精品视频 | 国产剧情一区二区三区 | 亚洲一区2区三区4区5区 |