BT STAFF java_分譲地 package btjava; Source plotting700クラスの インスタンスを作成する public static void main(String[] args) { plotting700 plt_obj = new plotting700(); System.out.print( plt_obj.GetArea()/ (1000*1000) + " sq.m." ); } 通常、Javaで「オブジェクト」といえば インスタンスのことを示します。 public class Pro700 { } 「区画」の中にある「種類」の数 class plotting700 { int count = 6; 「区画」の面積 フィールド long area; form700 form_obj = new form700(); コンストラクタ plotting700() { area = 10000 * 20000 * count; // 10M ✖ 20M ✖ 6 } } long GetArea() { return( area ); } KAMATAKA URABE 「区画」の面積を取得する関数 メソッド チャプタ 1 Java_分譲地 for 君山君 Pro700∼ Pro710 : 区画クラスと、種類(家)クラス package btjava; Source plotting700クラスの public class Pro700 { インスタンスを作成する public static void main(String[] args) { plotting700 plt_obj = new plotting700(); System.out.print( plt_obj.GetArea()/ (1000*1000) + " sq.m." ); } 通常、Javaで「オブジェクト」といえば } インスタンスのことを示します。 「区画」の中にある「種類」の数 class plotting700 { int count = 6; 「区画」の面積 フィールド long area; form700 form_obj = new form700(); コンストラクタ plotting700() { area = 10000 * 20000 * count; // 10M ✖ 20M ✖ 6 } } long GetArea() { return( area ); } 「区画」の面積を取得する関数 メソッド セクション 1 【 概要 】 区画クラスと、種類(家)クラス 大きな土地を、区画割りして、 その1区画に、分譲の家を建築したり庭を作成する。 家の面積、庭の面積を変更すると、それを囲う区画の 面積が自動的に変化する。 また、それぞれの区画を囲う土地の面積も変化する。 とりあえず、そこまでのプログラムを作成します。 P RO 700 ∼ P RO 709 1. クラス(class)の作成 2. デバッグ(debug) Pro700 3. オブジェクト(object)の配列 4. デバッグ(debug) Pro701 5. Javaの変数タイプ 6. コンストラクタ(constructor)に、 引数 (ARGUMENT)を 7. 矩形(rectangle)の開始点の追加 8. クラス(rect)の作成 9. 矩形(rectangle)の座標とサイズ 10. 配列の矩形(rectangle)データ 11. 2つのコンストラクタ 12. 浮動小数点(floating point) 13. 汎用クラスを別ファイルに 14. main → 関数化 【 考え方 】 1区画に、分譲の家を建築したり庭を作成する。 区画、分譲の家、庭のクラスを作成します。 区画 : plotting 種類(分譲の家): form 庭 : garden < Pro700 > 区画(plotting)、種類(form)のクラス(class)を作成後、 区画クラス内に、 「種類の数」を定義する。 それぞれのクラス内に、面積を定義する。 最初は、「種類の数」、「面積」に適当な初期値を設 定する。 < Pro701 > 「種類(form)」のオブジェクトを6個生成する。 その6個の「種類の面積」を合計して、その値を 「区間の面積」にセットする。 2 クラス(class)の作成 package btjava; Source plotting700クラスの public class Pro700 { インスタンスを作成する public static void main(String[] args) { plotting700 plt_obj = new plotting700(); System.out.print( plt_obj.GetArea()/ (1000*1000) + " sq.m." ); } 通常、Javaで「オブジェクト」といえば } インスタンスのことを示します。 「区画」の中にある「種類」の数 class plotting700 { int count = 6; 「区画」の面積 フィールド long area; form700 form_obj = new form700(); コンストラクタ plotting700() { area = 10000 * 20000 * count; // 10M ✖ 20M ✖ 6 } } long GetArea() { return( area ); } naming(命名) 「区画」の面積を取得する関数 メソッド 「種類」の中にある物の数 フィールド class form700 { int count = 0; 「種類」の面積 フィールド long area; form700() { area = 10000 * 20000; // 10M ✖ 20M } コンストラクタ } 区画 : plotting 家の種類 : form 面積 :area 平方メートル : square meter( 【略】sq.m. ; sq m ; m2 ) 種類(form) 種類(form) 種類(form) 種類(form) class form700 種類(form) 種類(form) class plotting700 区画(plotting) 面積の最小単位 : mm 型:long メソッド 家具などのサイズを考慮したため。 フィールド コンストラクタは特殊メソッドです。 コンストラクタ newによりクラスのインスタンスを作成しょ うとしたとき、自動的に呼び出されます。 3 ト デバッグ(debug) イ ン ② レ ー ク ポ コンストラクタ ブ ③ ① ブレークポイント(breakPoint)を ダブルクリックで設定します。 ② デバッグ実行 ブレーク(break) ブ レ ー ク ポ イ ン ト ③ ① コンストラクタ ④ ④ 4 オブジェクト(object)の配列 package btjava; Source plotting701クラスの public class Pro701 { インスタンスを作成する public static void main(String[] args) { plotting701 plt_obj = new plotting701(); System.out.print( plt_obj.GetArea()/ (1000*1000) + " sq.m." ); } } form_obj_arr[i] [0] [1] [2] [3] [4] [5] 種類(form) class form701 { クラス内でのみ利用可能 // private int count = 0; 外部からは一切利用できません private long area; 「種類」の面積 form701() { area = 10000 * 20000; // 10M ✖ 20M } コンストラクタ long GetArea() { return( area ); メソッド } 「種類」の面積を取得する関数 } 200 sq.m. ✖ 6 1200 sq.m. デバッグ(debug) class plotting701 { int count = 6; long area = 0; form701[] form_obj_arr = new form701[count]; plotting701() { } } コンストラクタ for( int i = 0; i <count; i++) { form_obj_arr[i] = new form701(); } long GetArea() { 「区画」の面積を取得する関数 area = 0; int cnt = form_obj_arr.length; メソッド for ( int i=0; i<cnt; i++ ) { area += form_obj_arr[i].GetArea(); } return( area ); } ブレークポイント(breakPoint)を ダブルクリックで設定します。 デバッグ実行 5 ブレーク(break) マウスカーソルを「area」の上に 置くと「area」の値が表示されます。 マウスカーソルを「count」の上に 置くと、値が表示されます。 ブレーク コンストラクタ 6 Javaの変数タイプ 整数 ( INTEGER ) integer byte 8bit -128∼127 short 16bit -32,768∼32,768 int 32bit -2,147,483,648∼2,147,483,647 long 64bit -9,223,372,036,854,775,808 ∼9,223,372,036,854,775,807 実数 ( REAL ) real float 32bit 有効桁数 : 最低6桁 double 64bit 有効桁数 : 最低15桁 character マウスカーソルを「area」の上に 置くと「area」の値が表示されます。 Page78 char 文字 ( CHARACTER ) 16bit authenticity 1文字の値だけを収められるもの 真偽 ( AUTHENTICITY ) boolean 8bit trueまたはfalseのいずれか 7 package btjava; public class Pro702 { Pro702 Source public static void main(String[] args) { // TODO Auto-generated method stub int count = 6; plotting702 plt_obj = new plotting702( count ); System.out.print( plt_obj.GetArea()/ (1000*1000) + " sq.m." ); } } public class Pro701 { public static void main(String[] args) { // TODO Auto-generated method stub plotting701 plt_obj = new plotting701(); System.out.print( plt_obj.GetArea()/ (1000*1000) + " sq.m." ); } } int count = 6; をメイン側に移動する。 class plotting702 { int count; long area = 0; form702[] form_obj_arr; plotting702( int Count ) { count = Count; form_obj_arr = new form702[count]; for( int i = 0; i <count; i++) { form_obj_arr[i] = new form702(); } } plotting702( int Count ) { count = Count; form_obj_arr = new form702[count]; long width = 10000; long height = 20000; for( int i = 0; i <count; i++) { } package btjava; form_obj_arr[i] = new form702( width, height ); } class form702 { private long area; form702( long width, long height ) { area = width * height; // width ✖ height } コンストラクタ(constructor) class plotting701 { int count = 6; に、引数 (ARGUMENT)を long area = 0; form701[] form_obj_arr = new form701[count]; plotting701() { for( int i=0; i<count; i++) { form_obj_arr[i] = new form701(); } } plotting701() { for( int i=0; i<count; i++) { form_obj_arr[i] = new form701(); } } class form701 { private long area; form701() { area = 10000 * 20000; } // 10M ✖ 20M 8 Pro703 Source 矩形(rectangle)の開始点の追加 class form703 { private long area; private long[] p = new long[4]; // x, y, w, h form703( long X, long Y, long W, long H ) { p[0] = X; p[1] = Y; p[2] = W; p[3] = H; area = W * H; // width ✖ height } long[] GetRectangle() { return( p ); } 配列Pの追加 long GetArea() { return( area ); 矩形の開始点( X, Y)の変数追加 } plotting703( int Count ) { count = Count; form_obj_arr = new form703[count]; long x = 0; long y = 0; long width = 10000; long height = 20000; for( int i=0; i<count; i++) { form_obj_arr[i] = new form703( x, y, width, height ); } } 矩形の開始点( X, Y)の変数追加 plotting702( int Count ) { count = Count; form_obj_arr = new form702[count]; long width = 10000; long height = 20000; for( int i=0; i<count; i++) { form_obj_arr[i] = new form702( width, height ); } } } class form702 { private long area; form702( long width, long height ) { area = width * height; // width ✖ height } long GetArea() { return( area ); } } 9 Pro704 Source 矩形(rectangle)の座標とサイズ クラス(rect)の作成 class rect { private int no; private long[] r = new long[4]; // x, y, w, h rect( int No, long x, long y, long w, long h ) { no = No; r[0] = x; r[1] = y; rectangle r[2] = w; r[3] = h; } W H コンストラクタ Y long[] GetRect() { return( r ); } } form_arr[3] form_arr[0] form_arr[5] form_arr[2] form_arr[1] form_arr[4] ( x, y ) int GetNo() { return( no ); ( 0, 0 ) } X class plotting704 { int count; long area = 0; rect[] form_arr = null; form704[] form_obj_arr; plotting704( rect[] Form_Arr ) { form_arr = Form_Arr; count = Form_Arr.length; form_obj_arr = new form704[count]; for( int i=0; i<count; i++ ) { long[] r = form_arr[i].GetRect(); form_obj_arr[i] = new form704( r[0], r[1], r[2], r[3] ); } } rect[] form_arr = new rect[count]; long K = 1000; form_arr[0] = new rect( 0, 0*K, 0*K, 10*K, 24*K ); form_arr[1] = new rect( 1, 10*K, 0*K, 20*K, 10*K ); form_arr[2] = new rect( 2, 10*K, 10*K, 20*K, 4*K ); form_arr[3] = new rect( 3, 10*K, 14*K, 20*K, 10*K ); form_arr[4] = new rect( 4, 30*K, 0*K, 10*K, 10*K ); form_arr[5] = new rect( 5, 30*K, 10*K, 10*K, 14*K ); plotting704 plt_obj = new plotting704( form_arr ); long area = plt_obj.GetArea(); System.out.print( area/(1000*1000) + " sq.m." ); 10 配列の矩形(rectangle)データ public static void main(String[] args) { // TODO Auto-generated method stub int count = 6; rect705[] form_arr = new rect705[count]; long K = 1000; Pro705 Source long[][] rect_arr = { {0*K, 0*K, 10*K, 24*K}, {10*K, 0*K, 20*K, 10*K}, {10*K, 10*K, 20*K, 4*K}, {10*K, 14*K, 20*K, 10*K}, {30*K, 0*K, 10*K, 10*K}, {30*K, 10*K, 10*K, 14*K} }; for( int i=0; i<count; i++ ) { form_arr[i] = new rect705( i, rect_arr[i][0], rect_arr[i][1], rect_arr[i][2], rect_arr[i][3] ); } plotting705 plt_obj = new plotting705( form_arr ); long area = plt_obj.GetArea(); System.out.print( area/(1000*1000) + " sq.m." ); public static void main(String[] args) { // TODO Auto-generated method stub int count = 6; rect704[] form_arr = new rect704[count]; long K = 1000; form_arr[0] = new rect704( 0, 0*K, 0*K, 10*K, 24*K ); form_arr[1] = new rect704( 1, 10*K, 0*K, 20*K, 10*K ); form_arr[2] = new rect704( 2, 10*K, 10*K, 20*K, 4*K ); form_arr[3] = new rect704( 3, 10*K, 14*K, 20*K, 10*K ); form_arr[4] = new rect704( 4, 30*K, 0*K, 10*K, 10*K ); form_arr[5] = new rect704( 5, 30*K, 10*K, 10*K, 14*K ); plotting704 plt_obj = new plotting704( form_arr ); long area = plt_obj.GetArea(); System.out.print( area/(1000*1000) + " sq.m." ); } 11 Pro706 Source class rect706 { 2つのコンストラクタ private int no; private long[] r = new long[4]; // x, y, w, h rect706( int No, long x, long y, long w, long h ) { no = No; r[0] = x; r[1] = y; 前のコンストラクタ r[2] = w; r[3] = h; } コンストラクタ rect706( int No, long[] R ) { no = No; r[0] = R[0]; r[1] = R[1]; 新しくコンストラクタを作成 r[2] = R[2]; r[3] = R[3]; } long[] GetRect() { return( r ); } } int GetNo() { return( no ); } 浮動小数点(floating point) Pro706 long area = plt_obj.GetArea(); System.out.print( area/(1000.0*1000.0) + " sq.m." ); long(8byte)で加算されてきた面積を 浮動小数点で割る。 単位 1M(メーター) : 1000mm メーター : meter Pro705 long area = plt_obj.GetArea(); System.out.print( area/(1000*1000) + " sq.m." ); 【 面積をlong(8byte)で加算した理由 】 誤差を出さないため。 longから、浮動小数点に 正規化(normalization)に変換されると 誤差を生じるケースがあります。 加算、乗算は、誤差を生じさせないために整数を用いる。 for( int i=0; i<count; i++ ) { 前の引数 Pro705 form_arr[i] = new rect706( i, rect_arr[i][0], rect_arr[i][1], rect_arr[i][2], rect_arr[i][3] ); } for( int i=0; i<count; i++ ) { 新しい引数 form_arr[i] = new rect706( i, rect_arr[i] ); } Pro706 12 Pro707 Source 矩形(rectangle)データ public static void main(String[] args) { String rect_str = "[0,0,10,24],[10,0,20,10],[10,10,20,4], [10,14,20,10],[30,0,10,10],[30,10,10,14]"; util obj_util = new util(); Pro707 long[][] rect_arr = obj_util.GetRectArr( rect_str ); int count = obj_util.GetRectCount( rect_str ); public static void main(String[] args) { int count = 6; Pro706 long K = 1000; long[][] rect_arr = { {0*K, 0*K, 10*K, 24*K}, {10*K, 0*K, 20*K, 10*K}, {10*K, 10*K, 20*K, 4*K}, {10*K, 14*K, 20*K, 10*K}, {30*K, 0*K, 10*K, 10*K}, {30*K, 10*K, 10*K, 14*K} }; long GetLongFromStr( String str ) { int point = 4; long num = 0; for ( int i=0; i<str.length(); i++ ) { String n = str.substring( i, i+1 ); if ( n.equals(".") == true ) { point = 3; } else { if ( point != 4 ) { point--; } num *= 10; num += Integer.parseInt( n ); } } if ( point == 4 ) { point--; } for ( int j=0; j<point; j++ ) { num *= 10; } return( num ); } 矩形のデータを数値の文字列にする。(例)12.34 M → 12340 mm 矩形データが、いままでコーディングしたプログラム の入力データとなります。 外部から、このプログラムを呼びやすくするために [ 文字列 ]から[ longの2次元配列 ] に変換する関数を 作成します。 つまり、 矩形データを、 [ 文字列 ]にします。 “12.34”は、12.34M(メーター)の意味で、12340の整数 に変換します。 13 0 1 num *= 10; num += Integer.parseInt( n ); 1230 1234 1 1*10 “2” 1234 120 123 14 文字列を、配列の 文字列にする。 String[] GetRectStrArr( String rect_str ) { rect_str = "," + rect_str; String[] rect_str_arr = rect_str.split( "]" ); for ( int i=0; i<rect_str_arr.length; i++ ) { rect_str_arr[i] = rect_str_arr[i].substring( 2 ); } return( rect_str_arr ); } for ( int i=0; i<rect_str_arr.length; i++ ) { rect_str_arr[i] = rect_str_arr[i].substring( 2 ); } String rect_str = "[0,0,10,24],[10,0,20,10],[10,10,20,4], [10,14,20,10],[30,0,10,10],[30,10,10,14]"; rect_str = "," + rect_str; String rect_str = ",[0,0,10,24],[10,0,20,10],[10,10,20,4], [10,14,20,10],[30,0,10,10],[30,10,10,14]"; ,(カンマ) , “ [ ”を削除する ",[0,0,10,24” rect_str_arr[i] = rect_str_arr[i].substring( 2 ); "0,0,10,24” 15 long[][] GetRectLongArr( String[] rect_str_arr ) { int count = rect_str_arr.length; long[][] rect_arr = new long[count][4]; for ( int i=0; i<count; i++ ) { String[] num_arr = rect_str_arr[i].split( "," ); for ( int j=0; j<num_arr.length; j++ ) { String num_str = num_arr[j]; rect_arr[i][j] = GetLongFromStr( num_str ); } } return( rect_arr ); } int count = rect_str_arr.length; 6 long[][] GetRectArr( String rect_str ) { String[] rect_str_arr = GetRectStrArr( rect_str ); long[][] rect_arr = GetRectLongArr( rect_str_arr ); return( rect_arr ); } long[][] GetRectArr( String rect_str ) { String rect_str = "[0,0,10,24],[10,0,20,10],[10,10,20,4], [10,14,20,10],[30,0,10,10],[30,10,10,14]"; String[] rect_str_arr = GetRectStrArr( rect_str ); long[][] GetRectArr( String rect_str ) { return( rect_arr ); } String[] num_arr = rect_str_arr[i].split( "," ); 16 汎用クラスを別ファイルに Copy & Paste Pro708 e Sourc UtilStr 汎用クラス名 チェック、はずす 17 Pro709 Source main → 関数化 public static void main(String[] args) { String rect_str = "[0,0,10,24],[10,0,20,10],[10,10,20,4], [10,14,20,10],[30,0,10,10],[30,10,10,14]"; land709 land_obj = new land709(); land_obj.SetPlotting( rect_str ); } class land709 { void SetPlotting( String rect_str ) { UtilStr obj_util = new UtilStr(); long[][] rect_arr = obj_util.GetRectArr( rect_str ); int count = obj_util.GetRectCount( rect_str ); rect709[] form_arr = new rect709[count]; for( int i=0; i<count; i++ ) { form_arr[i] = new rect709( i, rect_arr[i] ); } plotting709 plt_obj = new plotting709( form_arr ); long area = plt_obj.GetArea(); System.out.print( area/(1000.0*1000.0) + " sq.m." ); } } 18 セクション 2 GUI_HTML5,CSS3,JavaScript G RAPHIC U SER I NTERFACE 1. HTML File の作成 2. ファイル処理クラスを別ファイルに 3. HTMLファイルに「区画内の矩形」を 4. 文字列の矩形データをlong[][]で 19 HTML File の作成 リンク page150 <!DOCTYPE html> <html lang="ja"> HTML5 <head> <title>Pro710_矩形「</title> Source Pro710.html 20 <script type="text/javascript"> function init() キャンパスを指定します { var c = document.getElementById("canvas"); var cnt = c.getContext("2d"); コンテキストを取得します cnt.strokeStyle = "#00FF00"; 線のスタイルを指定します cnt.fillStyle = "#FFFFFF"; 塗りのスタイルを指定します cnt.shadowColor = "#FF0000"; 影の色を指定します cnt.shadowBlur = 10; 影の太さを指定します cnt.fillRect( 50, 50, 100, 80); 四角形を描画します cnt.fillStyle = "#808080"; cnt.shadowColor = "#00FF00"; cnt.shadowBlur = 20; cnt.fillRect(200, 50, 100, 80); cnt.fillStyle = "#000000"; cnt.shadowColor = "#0000FF"; cnt.shadowBlur = 30; cnt.fillRect(350, 50, 100, 80); cnt.fill(); } </script> #FFFFFF #808080 #000000 </head> <body onload="init()"> <canvas id="canvas" width="600" height="400"></canvas> </body> </html> 21 ファイル処理クラスを別ファイルに package btjava; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; public class FilePrc { public String load(String FileName) { FileReader fr = null; BufferedReader br = null; String str = ""; try { fr = new FileReader(FileName); br = new BufferedReader(fr); String rstr = ""; while ((rstr = br.readLine()) != null) str += rstr + "\r\n"; } catch (Exception ex) { ex.printStackTrace(); } finally { try { br.close(); } catch (Exception ex2) { ex2.printStackTrace(); } } return(str); } Source ファイルク処理ラス名 FilePrc public void save(String FileName, String txt) { FileWriter fw = null; BufferedWriter bw = null; try { fw = new FileWriter(FileName); bw = new BufferedWriter(fw); bw.write(txt); } catch (Exception ex) { ex.printStackTrace(); } finally { try { bw.close(); } catch (Exception ex2) { ex2.printStackTrace(); } } } チェック、はずす } 22 public class Pro711 { HTMLファイルに「区画内の矩形」を public static void main(String[] args) { String rect_str = "[0,0,10,24],[10,0,20,10], [10,10,20,4],[10,14,20,10], [30,0,10,10],[30,10,10,14]"; land711 land_obj = new land711(); land_obj.SetPlotting( rect_str ); FilePrc obj_fil = new FilePrc(); String HTMLtxt = obj_fil.load( "src/btjava/Pro710.html" ); HTMLtxt = HTMLtxt.replaceAll( "710", "711" ); obj_fil.save( "src/btjava/Pro711.html", HTMLtxt ); } } Source Pro711 ç Source Pro711.html Pro711.html cnt.fillStyle = '#FFFFFF'; cnt.shadowColor = '#FF0000'; cnt.shadowBlur = 20; cnt.fillRect(0,0,10,24); cnt.fillStyle = '#FFFFFF'; cnt.shadowColor = '#FF0000'; cnt.shadowBlur = 20; cnt.fillRect(10,14,20,10); cnt.fillStyle = '#FFFFFF'; cnt.shadowColor = '#FF0000'; cnt.shadowBlur = 20; cnt.fillRect(10,0,20,10); cnt.fillStyle = '#FFFFFF'; cnt.shadowColor = '#FF0000'; cnt.shadowBlur = 20; cnt.fillRect(30,0,10,10); cnt.fillStyle = '#FFFFFF'; cnt.shadowColor = '#FF0000'; cnt.shadowBlur = 20; cnt.fillRect(10,10,20,4); cnt.fillStyle = '#FFFFFF'; cnt.shadowColor = '#FF0000'; cnt.shadowBlur = 20; cnt.fillRect(30,10,10,14); Pro712.html 23 Pro712 Source Pro712.html FilePrc obj_fil = new FilePrc(); String HTMLtxt = obj_fil.load("src/btjava/Pro711.html" ); HTMLtxt = HTMLtxt.replaceAll( "711", "712" ); int p = HTMLtxt.indexOf( "getContext" ); p = HTMLtxt.indexOf( "\n", p ); String HTMLtxtT = HTMLtxt.substring( 0, p+1 ); p = HTMLtxt.indexOf( "cnt.fill();" ); String HTMLtxtB = "\t" + HTMLtxt.substring( p ); FilePrc obj_fil = new FilePrc(); String HTMLtxt = obj_fil.load("src/btjava/Pro711.html"); <!DOCTYPE html> <html lang="ja"> "src/btjava/Pro711.html" <head> <title>Pro711</title> <script type="text/javascript"> function init() { var c = document.getElementById("canvas"); var cnt = c.getConte HTMLtxt = HTMLtxt.replaceAll( "711", "712" ); <title>Pro711</title> <title>Pro712</title> int p = HTMLtxt.indexOf( "getContext" ); UtilStr obj_util = new UtilStr(); String[] rect_str_arr = obj_util.GetRectStrArr( rect_str ); String HTMLtxtM = "\r\n"; for ( int i=0; i<rect_str_arr.length; i++ ) { HTMLtxtM += "\tcnt.fillStyle = '#FFFFFF';\r\n"; HTMLtxtM += "\tcnt.shadowColor ='#FF0000';\r\n"; HTMLtxtM += "\tcnt.shadowBlur = 20;\r\n"; HTMLtxtM += "\tcnt.fillRect("; HTMLtxtM += rect_str_arr[i]; HTMLtxtM += ");\r\n"; HTMLtxtM += "\r\n"; } HTMLtxt = HTMLtxtT + HTMLtxtM + HTMLtxtB; obj_fil.save( "src/btjava/Pro712.html", HTMLtxt ); 24 p = HTMLtxt.indexOf( "cnt.fill();" ); String HTMLtxtB = "\t" + HTMLtxt.substring( p ); cnt.fill(); } </script> "src/btjava/Pro711.html" </head> <body onload="init()"> <canvas id="canvas" width="600" height="400"></canvas> </body> </html> UtilStr obj_util = new UtilStr(); String[] rect_str_arr = obj_util.GetRectStrArr( rect_str ); String HTMLtxtM = "\r\n"; for ( int i=0; i<rect_str_arr.length; i++ ) { HTMLtxtM += "\tcnt.fillStyle = '#FFFFFF';\r\n"; HTMLtxtM += "\tcnt.shadowColor ='#FF0000';\r\n"; HTMLtxtM += "\tcnt.shadowBlur = 20;\r\n"; HTMLtxtM += "\tcnt.fillRect("; HTMLtxtM += rect_str_arr[i]; HTMLtxtM += ");\r\n"; HTMLtxtM += "\r\n"; } cnt.fillStyle = '#FFFFFF'; cnt.shadowColor = '#FF0000'; cnt.shadowBlur = 20; cnt.fillRect(0,0,10,24); cnt.fillStyle = '#FFFFFF'; cnt.shadowColor = '#FF0000'; cnt.shadowBlur = 20; cnt.fillRect(10,14,20,10); cnt.fillStyle = '#FFFFFF'; cnt.shadowColor = '#FF0000'; cnt.shadowBlur = 20; cnt.fillRect(10,0,20,10); cnt.fillStyle = '#FFFFFF'; cnt.shadowColor = '#FF0000'; cnt.shadowBlur = 20; cnt.fillRect(30,0,10,10); cnt.fillStyle = '#FFFFFF'; cnt.shadowColor = '#FF0000'; cnt.shadowBlur = 20; cnt.fillRect(10,10,20,4); cnt.fillStyle = '#FFFFFF'; cnt.shadowColor = '#FF0000'; cnt.shadowBlur = 20; cnt.fillRect(30,10,10,14); HTMLtxt = HTMLtxtT + HTMLtxtM + HTMLtxtB; obj_fil.save( "src/btjava/Pro712.html", HTMLtxt ); 25 文字列の矩形データをlong[][]で UtilStr obj_utilå= new UtilStr(); Pro712 String[] rect_str_arr = obj_util.GetRectStrArr( rect_str ); Pro713 public static void main(String[] args) { double scale = 80.0; double x_ofs = 6000; double y_ofs = 4000; Source Pro713.html Pro713.html Pro713 UtilStr obj_util = new UtilStr(); long[][] rect_arr = obj_util.GetRectArr( rect_str ); String HTMLtxtM = "\r\n"; for ( int i=0; i<rect_arr.length; i++ ) { HTMLtxtM += "\tcnt.fillStyle = '#FFFFFF';\r\n"; HTMLtxtM += "\tcnt.shadowColor = '#FF0000';\r\n"; HTMLtxtM += "\tcnt.shadowBlur = 20;\r\n"; HTMLtxtM += "\tcnt.fillRect("; HTMLtxtM += ((rect_arr[i][0]+x_ofs)/scale); HTMLtxtM += ","; HTMLtxtM += ((rect_arr[i][1]+y_ofs)/scale); HTMLtxtM += ","; HTMLtxtM += (rect_arr[i][2]/scale); HTMLtxtM += ","; HTMLtxtM += (rect_arr[i][3]/scale); HTMLtxtM += ");\r\n"; HTMLtxtM += "\r\n"; } Pro713.html cnt.fillStyle = '#FFFFFF'; cnt.shadowColor = '#FF0000'; cnt.shadowBlur = 20; cnt.fillRect(75.0,50.0,125.0,300.0); cnt.fillStyle = '#FFFFFF'; cnt.shadowColor = '#FF0000'; cnt.shadowBlur = 20; cnt.fillRect(200.0,225.0,250.0,125.0); cnt.fillStyle = '#FFFFFF'; cnt.shadowColor = '#FF0000'; cnt.shadowBlur = 20; cnt.fillRect(200.0,50.0,250.0,125.0); cnt.fillStyle = '#FFFFFF'; cnt.shadowColor = '#FF0000'; cnt.shadowBlur = 20; cnt.fillRect(450.0,50.0,125.0,125.0); cnt.fillStyle = '#FFFFFF'; cnt.shadowColor = '#FF0000'; cnt.shadowBlur = 20; cnt.fillRect(200.0,175.0,250.0,50.0); cnt.fillStyle = '#FFFFFF'; cnt.shadowColor = '#FF0000'; cnt.shadowBlur = 20; cnt.fillRect(450.0,175.0,125.0,175.0); 26
© Copyright 2024