欧美三区_成人在线免费观看视频_欧美极品少妇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條評論
主站蜘蛛池模板: 久色视频在线观看 | 色天天综合网 | 天天干伊人 | 欧美成人h版在线观看 | 国产拳头交一区二区 | 色午夜 | 欧美成人免费高清网站 | 婷婷丝袜 | a极毛片| 亚洲综合在线另类色区奇米 | 国产乱码精品一区二区三上 | 婷婷尹人香蕉久久天堂 | 亚洲一区免费看 | 亚洲性一区 | 亚洲精品国产自在久久出水 | 国产精品成人无码A片免费网址 | 亚洲九九| 521色香蕉网站在线观看 | 日韩免费播放 | www.99精品视频在线播放 | 亚洲精品手机在线 | 一区二区三区日韩在线观看 | 成人a视频在线观看 | 国产99久久精品一区二区永久免费 | 午夜色站| 王骏迪的个人资料 | 成人一区二区三区在线 | 九九视频精品全部免费播放 | 国产网址在线观看 | 韩国日本在线 | 亚洲永久中文字幕在线 | 国产精品毛片大码女人 | 国产 一区| 极品狂兵电视剧免费观看 | 欧美一区二区三区成人精品 | 国产成人午夜性a一级毛片 久久久久亚洲 | 成人免费视频在线观看 | 欧美激情视频一区二区三区在线播放 | 国产精品婷婷午夜在线观看 | 久青青 | 精品一区二区久久久久久久网站 |