120
ペイントツール

Paint Tool 2013-05-14

  • Upload
    kmiyako

  • View
    704

  • Download
    0

Embed Size (px)

DESCRIPTION

sample database posted on GitHub: https://github.com/miyako/4d-widget-paint-tool

Citation preview

Page 1: Paint Tool 2013-05-14

ペイントツール

Page 2: Paint Tool 2013-05-14

ペイントツール

Page 3: Paint Tool 2013-05-14

ペイントツール描画ツール

Page 4: Paint Tool 2013-05-14

ペイントツール描画ツール

ポインティングデバイス

Page 5: Paint Tool 2013-05-14

ペイントツール描画ツール

Draw系ドロー

Paint系ペイント

ポインティングデバイス

Page 6: Paint Tool 2013-05-14

ペイントツール描画ツール

Draw系ドロー

Paint系ペイント

Vector形式ベクター

Raster形式ラスター

ポインティングデバイス

Page 7: Paint Tool 2013-05-14

ペイントツール描画ツール

Draw系ドロー

Paint系ペイント

Vector形式ベクター

Raster形式ラスター

ピクセル座標・方向・距離

ポインティングデバイス

Page 8: Paint Tool 2013-05-14

ペイントツール描画ツール

Draw系ドロー

Paint系ペイント

Vector形式ベクター

Raster形式ラスター

ピクセル座標・方向・距離

ポインティングデバイス

Page 9: Paint Tool 2013-05-14

ペイントツール描画ツール

Draw系ドロー

Paint系ペイント

Vector形式ベクター

Raster形式ラスター

ピクセル座標・方向・距離

ポインティングデバイス

Page 10: Paint Tool 2013-05-14

マッシュアップ

Page 11: Paint Tool 2013-05-14

マッシュアップWebプログラミング

Page 12: Paint Tool 2013-05-14

マッシュアップWebプログラミング

複数のWebサービスのAPIを組み合わせ,あたかもひとつのWebサービスのようにする機能のこと。

http://ja.wikipedia.org/wiki/マッシュアップ_(Webプログラミング)

Page 13: Paint Tool 2013-05-14

マッシュアップWebプログラミング

複数のWebサービスのAPIを組み合わせ,あたかもひとつのWebサービスのようにする機能のこと。

http://ja.wikipedia.org/wiki/マッシュアップ_(Webプログラミング)

Page 14: Paint Tool 2013-05-14

マッシュアップWebプログラミング

複数のWebサービスのAPIを組み合わせ,あたかもひとつのWebサービスのようにする機能のこと。

http://ja.wikipedia.org/wiki/マッシュアップ_(Webプログラミング)

ITの深い知識がなくても,既存のWebサービスを組み合わせて,短期間でアプリケーション開発ができることから,新しい開発技法として注目されている。

Page 15: Paint Tool 2013-05-14

マッシュアップWebプログラミング

複数のWebサービスのAPIを組み合わせ,あたかもひとつのWebサービスのようにする機能のこと。

http://ja.wikipedia.org/wiki/マッシュアップ_(Webプログラミング)

ITの深い知識がなくても,既存のWebサービスを組み合わせて,短期間でアプリケーション開発ができることから,新しい開発技法として注目されている。

Page 16: Paint Tool 2013-05-14

マッシュアップWebプログラミング

複数のWebサービスのAPIを組み合わせ,あたかもひとつのWebサービスのようにする機能のこと。

http://ja.wikipedia.org/wiki/マッシュアップ_(Webプログラミング)

ITの深い知識がなくても,既存のWebサービスを組み合わせて,短期間でアプリケーション開発ができることから,新しい開発技法として注目されている。

Page 17: Paint Tool 2013-05-14

マッシュアップ4D

Page 18: Paint Tool 2013-05-14

マッシュアップ4D

Webエリアを活用し,HTML/CSS/JavaScriptのAPIを組み合わせ, あたかもひとつのデスクトップアプリケーションのようにする開発技法。

Page 19: Paint Tool 2013-05-14

マッシュアップ4D

Webエリアを活用し,HTML/CSS/JavaScriptのAPIを組み合わせ, あたかもひとつのデスクトップアプリケーションのようにする開発技法。

Page 20: Paint Tool 2013-05-14

マッシュアップ4D

Webエリアを活用し,HTML/CSS/JavaScriptのAPIを組み合わせ, あたかもひとつのデスクトップアプリケーションのようにする開発技法。

Page 21: Paint Tool 2013-05-14

マッシュアップ4D

Webエリアを活用し,HTML/CSS/JavaScriptのAPIを組み合わせ, あたかもひとつのデスクトップアプリケーションのようにする開発技法。

Page 22: Paint Tool 2013-05-14

HTML5

Page 23: Paint Tool 2013-05-14

HTML5

<canvas> <svg>

プログラミング言語 手続型 宣言型

API ローレベル ハイレベル

画像形式 ビットマップ ベクター(XML)

レンダリング サイズに比例 オブジェクト数に比例

オブジェクト操作 無理 容易

Page 24: Paint Tool 2013-05-14

HTML5

<canvas> <svg>

プログラミング言語 手続型 宣言型

API ローレベル ハイレベル

画像形式 ビットマップ ベクター(XML)

レンダリング サイズに比例 オブジェクト数に比例

オブジェクト操作 無理 容易

Page 25: Paint Tool 2013-05-14

HTML5

<canvas>

プログラミング言語 手続型

API ローレベル

画像形式 ビットマップ

レンダリング サイズに比例

オブジェクト操作 無理

<svg>

宣言型

ハイレベル

ベクター(XML)

オブジェクト数に比例

容易

Page 26: Paint Tool 2013-05-14

HTML5

<canvas>

プログラミング言語 手続型

API ローレベル

画像形式 ビットマップ

レンダリング サイズに比例

オブジェクト操作 無理

<svg>

宣言型

ハイレベル

ベクター(XML)

オブジェクト数に比例

容易

JavaScript

Page 27: Paint Tool 2013-05-14

HTML5

<canvas>

プログラミング言語 手続型

API ローレベル

画像形式 ビットマップ

レンダリング サイズに比例

オブジェクト操作 無理

<svg>

宣言型

ハイレベル

ベクター(XML)

オブジェクト数に比例

容易

JavaScript

高速!!

Page 28: Paint Tool 2013-05-14

HTML5

<canvas>

プログラミング言語 手続型

API ローレベル

画像形式 ビットマップ

レンダリング サイズに比例

オブジェクト操作 無理

<svg>

宣言型

ハイレベル

ベクター(XML)

オブジェクト数に比例

容易

JavaScript

高速!!

Page 29: Paint Tool 2013-05-14

JavaScript

Page 30: Paint Tool 2013-05-14

JavaScript

Webブラウザで実行できるプログラミング言語

Page 31: Paint Tool 2013-05-14

JavaScript

Webブラウザで実行できるプログラミング言語

Page 32: Paint Tool 2013-05-14

JavaScript

Webブラウザで実行できるプログラミング言語

Page 33: Paint Tool 2013-05-14

Webエリア

Page 34: Paint Tool 2013-05-14

Webエリア

Webブラウザと同等の機能を有するフォームオブジェクト

Page 35: Paint Tool 2013-05-14

Webエリア

Webブラウザと同等の機能を有するフォームオブジェクト

Page 36: Paint Tool 2013-05-14

Webエリア

Webブラウザと同等の機能を有するフォームオブジェクト

Page 37: Paint Tool 2013-05-14

Webエリア

Webブラウザと同等の機能を有するフォームオブジェクト

Internet Explorer 7 Safari 4

Page 38: Paint Tool 2013-05-14

Webエリア

Webブラウザと同等の機能を有するフォームオブジェクト

Internet Explorer 7 Safari 4

Page 39: Paint Tool 2013-05-14

Webエリア

Webブラウザと同等の機能を有するフォームオブジェクト

Internet Explorer 7 Safari 4 Internet

Explorer Safari

Page 40: Paint Tool 2013-05-14

Webエリア

Webブラウザと同等の機能を有するフォームオブジェクト

Internet Explorer 7 Safari 4 Internet

Explorer Safari

Integrated WebKit

Page 41: Paint Tool 2013-05-14

Webエリア

Webブラウザと同等の機能を有するフォームオブジェクト

Internet Explorer 7 Safari 4 Internet

Explorer Safari

Integrated WebKit

WA OPEN URL

WA Execute JavaScript

WA EXECUTE JAVASCRIPT FUNCTION

WA SET PAGE CONTENT

// HTMLを表示 // JavaScriptを実行

Page 42: Paint Tool 2013-05-14

Webエリア

Page 43: Paint Tool 2013-05-14

WebエリアWA OPEN URL

WA SET PAGE CONTENT

Page 44: Paint Tool 2013-05-14

WebエリアWA OPEN URL

WA SET PAGE CONTENT

ページの場所をシステムパスまたはURLを指定

ページの内容をHTMLで指定

Page 45: Paint Tool 2013-05-14

WebエリアWA OPEN URL

WA SET PAGE CONTENT

ページの場所をシステムパスまたはURLを指定

ページの内容をHTMLで指定

追加リソースを相対パスで指定できる

追加リソースを相対パスで指定できるのはMacのみ(ベースURL)

Page 46: Paint Tool 2013-05-14

WebエリアWA OPEN URL

システムパスまたはURLを指定

WA SET PAGE CONTENTHTMLを指定

// システムパス

C:¥MyFolder¥My File.html

Macintosh HD:MyFolder:My File.html

WA SET PAGE CONTENTfile:///C:/MyFolder/My%20File.html

file:///MyFolder/My%20File.html

// URL

Page 47: Paint Tool 2013-05-14

WebエリアWA OPEN URL

システムパスまたはURLを指定

WA SET PAGE CONTENTHTMLを指定

// システムパス

C:¥MyFolder¥My File.html

Macintosh HD:MyFolder:My File.html

WA SET PAGE CONTENTfile:///C:/MyFolder/My%20File.html

file:///MyFolder/My%20File.html

// URL

Page 48: Paint Tool 2013-05-14

WebエリアWA OPEN URL

システムパスまたはURLを指定

WA SET PAGE CONTENTHTMLを指定

// システムパス

C:¥MyFolder¥My File.html

Macintosh HD:MyFolder:My File.html

WA SET PAGE CONTENTfile:///C:/MyFolder/My%20File.html

file:///MyFolder/My%20File.html

// URL

Page 49: Paint Tool 2013-05-14

WebエリアWA OPEN URL

システムパスをPOSIXパスに変換

WA SET PAGE CONTENTHTMLを指定

// システムパス

C:¥MyFolder¥My File.html

Macintosh HD:MyFolder:My File.html

Convert path system to POSIX

WA SET PAGE CONTENTC:/MyFolder/My File.html

/MyFolder/My File.html

// POSIX

Page 50: Paint Tool 2013-05-14

WebエリアWA OPEN URL

システムパスをPOSIXパスに変換してURLエスケープ

WA SET PAGE CONTENTHTMLを指定

// システムパス

C:¥MyFolder¥My File.html

Macintosh HD:MyFolder:My File.html

WA SET PAGE CONTENTC:/MyFolder/My%20File.html

/MyFolder/My%20File.html

// ?

Convert path system to POSIX (...;*)

Page 51: Paint Tool 2013-05-14

WebエリアWA OPEN URL

システムパスをURLに変換

WA SET PAGE CONTENTHTMLを指定

// システムパス

C:¥MyFolder¥My File.html

Macintosh HD:MyFolder:My File.html

WA SET PAGE CONTENTfile:///C:/MyFolder/My%20File.html

file:////MyFolder/My%20File.html

// URL (Windows)

“file:///”+Convert path system to POSIX (...;*)

Page 52: Paint Tool 2013-05-14

WebエリアWA OPEN URL

システムパスをURLに変換

WA SET PAGE CONTENTHTMLを指定

// システムパス

C:¥MyFolder¥My File.html

Macintosh HD:MyFolder:My File.html

WA SET PAGE CONTENTfile://C:/MyFolder/My%20File.html

file:///MyFolder/My%20File.html

// URL (Mac OS)

“file://”+Convert path system to POSIX (...;*)

Page 53: Paint Tool 2013-05-14

WebエリアベースURL

*Mac Only

Page 54: Paint Tool 2013-05-14

WebエリアベースURL

*Mac Only

WA SET PAGE CONTENTでも相対パスが指定できる

Page 55: Paint Tool 2013-05-14

WebエリアベースURL

*Mac Only

WA SET PAGE CONTENTでも相対パスが指定できる

<head><base href=”file:///MyFolder/” /><script src=”js/jquery.js”></script><link rel=”stylesheet” href=”css/style.css” />

</head>

Page 56: Paint Tool 2013-05-14

WebエリアベースURL

*Mac Only

WA SET PAGE CONTENTでも相対パスが指定できる

<head><base href=”file:///MyFolder/” /><script src=”js/jquery.js”></script><link rel=”stylesheet” href=”css/style.css” />

</head>

Page 57: Paint Tool 2013-05-14

WebエリアベースURL

*Mac Only

WA SET PAGE CONTENTでも相対パスが指定できる

<head><base href=”file:///MyFolder/” /><script src=”js/jquery.js”></script><link rel=”stylesheet” href=”css/style.css” />

</head>

WA SET PAGE CONTENT (...;...;”file:///MyFolder/”)

Page 58: Paint Tool 2013-05-14

WebエリアベースURL

*Mac Only

WA SET PAGE CONTENTでも相対パスが指定できる

<head><base href=”file:///MyFolder/” /><script src=”js/jquery.js”></script><link rel=”stylesheet” href=”css/style.css” />

</head>

WA SET PAGE CONTENT (...;...;”file:///MyFolder/”)

Page 59: Paint Tool 2013-05-14

WebエリアベースURL

*Mac Only

WA SET PAGE CONTENTでも相対パスが指定できる

<head><base href=”file:///MyFolder/” /><script src=”js/jquery.js”></script><link rel=”stylesheet” href=”css/style.css” />

</head>

WA SET PAGE CONTENT (...;...;”file:///MyFolder/”)

Page 60: Paint Tool 2013-05-14

Webエリアキャッシュ

Page 61: Paint Tool 2013-05-14

Webエリアキャッシュ

Webエリアがロードしたファイルはキャッシュされることも・・・

Page 62: Paint Tool 2013-05-14

Webエリアキャッシュ

Webエリアがロードしたファイルはキャッシュされることも・・・

WA SET PAGE CONTENTで渡したHTMLはキャッシュされない

Page 63: Paint Tool 2013-05-14

WebエリアローカルHTMLファイル使用のポイント

Page 64: Paint Tool 2013-05-14

WebエリアローカルHTMLファイル使用のポイント

● URL (file://)▲ システムパス

Page 65: Paint Tool 2013-05-14

WebエリアローカルHTMLファイル使用のポイント

● URL (file://)▲ システムパス

● WA SET PAGE CONTENT▲ WA OPEN URL

Page 66: Paint Tool 2013-05-14

WebエリアローカルHTMLファイル使用のポイント

● URL (file://)▲ システムパス

● WA SET PAGE CONTENT▲ WA OPEN URL

● 単一ファイル,絶対パス▲ 複数ファイル,<base>,相対パス

Page 67: Paint Tool 2013-05-14

WebエリアローカルHTMLファイル使用のポイント

● URL (file://)▲ システムパス

● WA SET PAGE CONTENT▲ WA OPEN URL

● 単一ファイル,絶対パス▲ 複数ファイル,<base>,相対パス

プラットフォーム注意

Page 68: Paint Tool 2013-05-14

WebエリアローカルHTMLファイル使用のポイント

● URL (file://)▲ システムパス

● WA SET PAGE CONTENT▲ WA OPEN URL

● 単一ファイル,絶対パス▲ 複数ファイル,<base>,相対パス

キャッシュ注意

プラットフォーム注意

Page 69: Paint Tool 2013-05-14

WebエリアローカルHTMLファイル使用のポイント

● URL (file://)▲ システムパス

● WA SET PAGE CONTENT▲ WA OPEN URL

● 単一ファイル,絶対パス▲ 複数ファイル,<base>,相対パス

キャッシュ注意

プラットフォーム注意

プラットフォーム・キャッシュ注意

Page 70: Paint Tool 2013-05-14

Webエリアドラッグ&ドロップでページを移動しないために

Page 71: Paint Tool 2013-05-14

Webエリアドラッグ&ドロップでページを移動しないために

<body ondragover="return false;" ondrop="return false;">

</body>

Page 72: Paint Tool 2013-05-14

Webエリアフォームイベント

Page 73: Paint Tool 2013-05-14

Webエリアフォームイベント

On End URL Loading$filter{1}:="http://*"$access{1}:=FalseWA SET URL FILTERS (*;...;$filter;$access)

On LoadWA OPEN URL/WA SET PAGE CONTENTWA SET PREFERENCE (*;...;wa enable JavaScript;True)

Page 74: Paint Tool 2013-05-14

Webエリアフォームイベント

On URL Filtering$url:=WA Get last filtered URL

On End URL Loading$filter{1}:="http://*"$access{1}:=FalseWA SET URL FILTERS (*;...;$filter;$access)

On LoadWA OPEN URL/WA SET PAGE CONTENTWA SET PREFERENCE (*;...;wa enable JavaScript;True)

Page 75: Paint Tool 2013-05-14

Webエリアフォームイベント

On URL Filtering$url:=WA Get last filtered URL

Page 76: Paint Tool 2013-05-14

Webエリアフォームイベント

On URL Filtering$url:=WA Get last filtered URL

Page 77: Paint Tool 2013-05-14

Webエリアフォームイベント

function clearCanvas () { window.location = "http://clearCanvas/";}

On URL Filtering$url:=WA Get last filtered URL

Page 78: Paint Tool 2013-05-14

Webエリアフォームイベント

function clearCanvas () { window.location = "http://clearCanvas/";}

Page 79: Paint Tool 2013-05-14

Webエリアフォームイベント

On ClickedWA EXECUTE JAVASCRIPT FUNCTION (...;”clearCanvas”;*;...)

function clearCanvas () { window.location = "http://clearCanvas/";}

Page 80: Paint Tool 2013-05-14

Webエリアフォームイベント

On ClickedWA EXECUTE JAVASCRIPT FUNCTION (...;”clearCanvas”;*;...)

function clearCanvas () { window.location = "http://clearCanvas/";}

On URL Filtering$url:=WA Get last filtered URL

Page 81: Paint Tool 2013-05-14

Webエリア

Page 82: Paint Tool 2013-05-14

ペイントツールCanvasRenderingContext2D

メソッド 説明arc() 曲線・円・弧beginPath() 線の始点を決めるclosePath() 現在位置から始点まで戻るfill() 線の内側を塗りつぶすlineTo() 指定位置まで線を延長するmoveTo() 指定位置まで移動するrect() 四角を描くstroke() 線を描く

Page 83: Paint Tool 2013-05-14

canvas = document.getElementById('myCanvas');

canvas.width = window.innerWidth;canvas.height = window.innerHeight;! !if (!canvas) {! alert('Error: canvas element not found!');! return;}

if (!canvas.getContext) {! alert('Error: no canvas.getContext!');! return;}

context = canvas.getContext('2d');

if (!context) {! alert('Error: failed to get context!');! return;}

var canvas;var tool;

Page 84: Paint Tool 2013-05-14

canvas = document.getElementById('myCanvas');

canvas.width = window.innerWidth;canvas.height = window.innerHeight;! !if (!canvas) {! alert('Error: canvas element not found!');! return;}

if (!canvas.getContext) {! alert('Error: no canvas.getContext!');! return;}

context = canvas.getContext('2d');

if (!context) {! alert('Error: failed to get context!');! return;}

var canvas;var tool;

CanvasRenderingContext2D

Page 85: Paint Tool 2013-05-14

var canvas;var tool;

canvas = document.getElementById('myCanvas');

! canvas.width = window.innerWidth;! canvas.height = window.innerHeight;! !if (!canvas) {! ! alert('Error: canvas element not found!');! return;}

if (!canvas.getContext) {! ! alert('Error: no canvas.getContext!');! return;}

context = canvas.getContext('2d');

if (!context) {! ! alert('Error: failed to get context!');! return;}

<canvas id="myCanvas">no canvas support</canvas>

canvas = document.getElementById('myCanvas');

canvas.width = window.innerWidth;canvas.height = window.innerHeight;! !if (!canvas) {! alert('Error: canvas element not found!');! return;}

if (!canvas.getContext) {! alert('Error: no canvas.getContext!');! return;}

context = canvas.getContext('2d');

if (!context) {! alert('Error: failed to get context!');! return;}

Page 86: Paint Tool 2013-05-14

var canvas;var tool;

canvas = document.getElementById('myCanvas');

! canvas.width = window.innerWidth;! canvas.height = window.innerHeight;! !if (!canvas) {! ! alert('Error: canvas element not found!');! return;}

if (!canvas.getContext) {! ! alert('Error: no canvas.getContext!');! return;}

context = canvas.getContext('2d');

if (!context) {! ! alert('Error: failed to get context!');! return;}

<canvas id="myCanvas">no canvas support</canvas>

canvas = document.getElementById('myCanvas');

canvas.width = window.innerWidth;canvas.height = window.innerHeight;! !if (!canvas) {! alert('Error: canvas element not found!');! return;}

if (!canvas.getContext) {! alert('Error: no canvas.getContext!');! return;}

context = canvas.getContext('2d');

if (!context) {! alert('Error: failed to get context!');! return;}

canvasサポートのチェック(×Windows v12,v13 + Internet Explorer 8)

Page 87: Paint Tool 2013-05-14

var container = canvas.parentNode;

tempCanvas = document.createElement('canvas');!if (!tempCanvas) {! alert('Error: cannot create a new canvas element!');! return;}

tempCanvas.id = 'myCanvasTemp';tempCanvas.width = canvas.width;tempCanvas.height = canvas.height;container.appendChild(tempCanvas);

contextTemp = tempCanvas.getContext('2d');

var tool_select = document.getElementById('dtool');

if (!tool_select) {! alert('Error: failed to get the dtool element!');! return;}

tool_select.addEventListener('change', ev_tool_change, false);

var tempCanvas;var contextTemp;

Page 88: Paint Tool 2013-05-14

var tempCanvas;var contextTemp;

var container = canvas.parentNode;

tempCanvas = document.createElement('canvas');!if (!tempCanvas) {! alert('Error: cannot create a new canvas element!');! return;}

tempCanvas.id = 'myCanvasTemp';tempCanvas.width = canvas.width;tempCanvas.height = canvas.height;container.appendChild(tempCanvas);

contextTemp = tempCanvas.getContext('2d');

var tool_select = document.getElementById('dtool');

if (!tool_select) {! alert('Error: failed to get the dtool element!');! return;}

tool_select.addEventListener('change', ev_tool_change, false);

var container = canvas.parentNode;

tempCanvas = document.createElement('canvas');!if (!tempCanvas) {! alert('Error: cannot create a new canvas element!');! return;}

tempCanvas.id = 'myCanvasTemp';tempCanvas.width = canvas.width;tempCanvas.height = canvas.height;container.appendChild(tempCanvas);

contextTemp = tempCanvas.getContext('2d');

var tool_select = document.getElementById('dtool');

if (!tool_select) {! alert('Error: failed to get the dtool element!');! return;}

tool_select.addEventListener('change', ev_tool_change, false);

function img_update () {! context.drawImage(tempCanvas, 0, 0);! contextTemp.clearRect(0, 0, tempCanvas.width, tempCanvas.height);}

Page 89: Paint Tool 2013-05-14

var tempCanvas;var contextTemp;

var container = canvas.parentNode;

tempCanvas = document.createElement('canvas');!if (!tempCanvas) {! alert('Error: cannot create a new canvas element!');! return;}

tempCanvas.id = 'myCanvasTemp';tempCanvas.width = canvas.width;tempCanvas.height = canvas.height;container.appendChild(tempCanvas);

contextTemp = tempCanvas.getContext('2d');

var tool_select = document.getElementById('dtool');

if (!tool_select) {! alert('Error: failed to get the dtool element!');! return;}

tool_select.addEventListener('change', ev_tool_change, false);

var container = canvas.parentNode;

tempCanvas = document.createElement('canvas');!if (!tempCanvas) {! alert('Error: cannot create a new canvas element!');! return;}

tempCanvas.id = 'myCanvasTemp';tempCanvas.width = canvas.width;tempCanvas.height = canvas.height;container.appendChild(tempCanvas);

contextTemp = tempCanvas.getContext('2d');

var tool_select = document.getElementById('dtool');

if (!tool_select) {! alert('Error: failed to get the dtool element!');! return;}

tool_select.addEventListener('change', ev_tool_change, false);

function img_update () {! context.drawImage(tempCanvas, 0, 0);! contextTemp.clearRect(0, 0, tempCanvas.width, tempCanvas.height);}

一時コンテキストに描画した後に転写

Page 90: Paint Tool 2013-05-14

var tempCanvas;var contextTemp;

var container = canvas.parentNode;

tempCanvas = document.createElement('canvas');!if (!tempCanvas) {! alert('Error: cannot create a new canvas element!');! return;}

tempCanvas.id = 'myCanvasTemp';tempCanvas.width = canvas.width;tempCanvas.height = canvas.height;container.appendChild(tempCanvas);

contextTemp = tempCanvas.getContext('2d');

var tool_select = document.getElementById('dtool');

if (!tool_select) {! alert('Error: failed to get the dtool element!');! return;}

tool_select.addEventListener('change', ev_tool_change, false);

var container = canvas.parentNode;

tempCanvas = document.createElement('canvas');!if (!tempCanvas) {! alert('Error: cannot create a new canvas element!');! return;}

tempCanvas.id = 'myCanvasTemp';tempCanvas.width = canvas.width;tempCanvas.height = canvas.height;container.appendChild(tempCanvas);

contextTemp = tempCanvas.getContext('2d');

var tool_select = document.getElementById('dtool');

if (!tool_select) {! alert('Error: failed to get the dtool element!');! return;}

tool_select.addEventListener('change', ev_tool_change, false);

function img_update () {! context.drawImage(tempCanvas, 0, 0);! contextTemp.clearRect(0, 0, tempCanvas.width, tempCanvas.height);}

一時コンテキストに描画した後に転写

ダイレクトの

描画した場合

やり直しが効

かない!!

(ビットマッ

プ画像)

Page 91: Paint Tool 2013-05-14

var tempCanvas;var contextTemp;

var container = canvas.parentNode;

tempCanvas = document.createElement('canvas');!if (!tempCanvas) {! alert('Error: cannot create a new canvas element!');! return;}

tempCanvas.id = 'myCanvasTemp';tempCanvas.width = canvas.width;tempCanvas.height = canvas.height;container.appendChild(tempCanvas);

contextTemp = tempCanvas.getContext('2d');

var tool_select = document.getElementById('dtool');

if (!tool_select) {! alert('Error: failed to get the dtool element!');! return;}

tool_select.addEventListener('change', ev_tool_change, false);

var container = canvas.parentNode;

tempCanvas = document.createElement('canvas');!if (!tempCanvas) {! alert('Error: cannot create a new canvas element!');! return;}

tempCanvas.id = 'myCanvasTemp';tempCanvas.width = canvas.width;tempCanvas.height = canvas.height;container.appendChild(tempCanvas);

contextTemp = tempCanvas.getContext('2d');

var tool_select = document.getElementById('dtool');

if (!tool_select) {! alert('Error: failed to get the dtool element!');! return;}

tool_select.addEventListener('change', ev_tool_change, false);

<select id="dtool" style="visibility:hidden;">! <option value="line">Line</option>! <option value="rect">Rectangle</option>! <option value="pencil">Pencil</option>! <option value="circle">Circle</option>! <option value="eraser">Eraser</option>! <option value="rectFill">Solid Rectangle</option>! <option value="circleFill">Solid Circle</option></select>

function ev_tool_change (ev) {! if (tools[this.value]) {! tool = new tools[this.value]();! }}

Page 92: Paint Tool 2013-05-14

var tempCanvas;var contextTemp;

var container = canvas.parentNode;

tempCanvas = document.createElement('canvas');!if (!tempCanvas) {! alert('Error: cannot create a new canvas element!');! return;}

tempCanvas.id = 'myCanvasTemp';tempCanvas.width = canvas.width;tempCanvas.height = canvas.height;container.appendChild(tempCanvas);

contextTemp = tempCanvas.getContext('2d');

var tool_select = document.getElementById('dtool');

if (!tool_select) {! alert('Error: failed to get the dtool element!');! return;}

tool_select.addEventListener('change', ev_tool_change, false);

var container = canvas.parentNode;

tempCanvas = document.createElement('canvas');!if (!tempCanvas) {! alert('Error: cannot create a new canvas element!');! return;}

tempCanvas.id = 'myCanvasTemp';tempCanvas.width = canvas.width;tempCanvas.height = canvas.height;container.appendChild(tempCanvas);

contextTemp = tempCanvas.getContext('2d');

var tool_select = document.getElementById('dtool');

if (!tool_select) {! alert('Error: failed to get the dtool element!');! return;}

tool_select.addEventListener('change', ev_tool_change, false);

<select id="dtool" style="visibility:hidden;">! <option value="line">Line</option>! <option value="rect">Rectangle</option>! <option value="pencil">Pencil</option>! <option value="circle">Circle</option>! <option value="eraser">Eraser</option>! <option value="rectFill">Solid Rectangle</option>! <option value="circleFill">Solid Circle</option></select>

function ev_tool_change (ev) {! if (tools[this.value]) {! tool = new tools[this.value]();! }}

イベントリスナーでツールを切り替え

Page 93: Paint Tool 2013-05-14

! var tool_default = 'line';

! if (tools[tool_default]) {! ! tool = new tools[tool_default]();! ! tool_select.value = tool_default;! }

! tempCanvas.addEventListener('mousedown', ev_canvas, false);! tempCanvas.addEventListener('mousemove', ev_canvas, false);! tempCanvas.addEventListener('mouseup', ev_canvas, false););

! function ev_canvas (ev) {! ! if (ev.layerX || ev.layerX == 0) { // Firefox! ! ! ev._x = ev.layerX;! ! ! ev._y = ev.layerY;! ! } else if (ev.offsetX || ev.offsetX == 0) { // Opera! ! ! ev._x = ev.offsetX;! ! ! ev._y = ev.offsetY;! ! }

! ! var func = tool[ev.type];! ! if (func) {! ! ! func(ev);! ! }! }

var tool;var tools = {};

Page 94: Paint Tool 2013-05-14

! var tool_default = 'line';

! if (tools[tool_default]) {! ! tool = new tools[tool_default]();! ! tool_select.value = tool_default;! }

! tempCanvas.addEventListener('mousedown', ev_canvas, false);! tempCanvas.addEventListener('mousemove', ev_canvas, false);! tempCanvas.addEventListener('mouseup', ev_canvas, false););

! function ev_canvas (ev) {! ! if (ev.layerX || ev.layerX == 0) { // Firefox! ! ! ev._x = ev.layerX;! ! ! ev._y = ev.layerY;! ! } else if (ev.offsetX || ev.offsetX == 0) { // Opera! ! ! ev._x = ev.offsetX;! ! ! ev._y = ev.offsetY;! ! }

! ! var func = tool[ev.type];! ! if (func) {! ! ! func(ev);! ! }! }

var tool;var tools = {};

! var tool_default = 'line';

! if (tools[tool_default]) {! ! tool = new tools[tool_default]();! ! tool_select.value = tool_default;! }

! tempCanvas.addEventListener('mousedown', ev_canvas, false);! tempCanvas.addEventListener('mousemove', ev_canvas, false);! tempCanvas.addEventListener('mouseup', ev_canvas, false););

! function ev_canvas (ev) {! ! if (ev.layerX || ev.layerX == 0) { // Firefox! ! ! ev._x = ev.layerX;! ! ! ev._y = ev.layerY;! ! } else if (ev.offsetX || ev.offsetX == 0) { // Opera! ! ! ev._x = ev.offsetX;! ! ! ev._y = ev.offsetY;! ! }

! ! var func = tool[ev.type];! ! if (func) {! ! ! func(ev);! ! }! }

Page 95: Paint Tool 2013-05-14

! var tool_default = 'line';

! if (tools[tool_default]) {! ! tool = new tools[tool_default]();! ! tool_select.value = tool_default;! }

! tempCanvas.addEventListener('mousedown', ev_canvas, false);! tempCanvas.addEventListener('mousemove', ev_canvas, false);! tempCanvas.addEventListener('mouseup', ev_canvas, false););

! function ev_canvas (ev) {! ! if (ev.layerX || ev.layerX == 0) { // Firefox! ! ! ev._x = ev.layerX;! ! ! ev._y = ev.layerY;! ! } else if (ev.offsetX || ev.offsetX == 0) { // Opera! ! ! ev._x = ev.offsetX;! ! ! ev._y = ev.offsetY;! ! }

! ! var func = tool[ev.type];! ! if (func) {! ! ! func(ev);! ! }! }

var tool;var tools = {};

! var tool_default = 'line';

! if (tools[tool_default]) {! ! tool = new tools[tool_default]();! ! tool_select.value = tool_default;! }

! tempCanvas.addEventListener('mousedown', ev_canvas, false);! tempCanvas.addEventListener('mousemove', ev_canvas, false);! tempCanvas.addEventListener('mouseup', ev_canvas, false););

! function ev_canvas (ev) {! ! if (ev.layerX || ev.layerX == 0) { // Firefox! ! ! ev._x = ev.layerX;! ! ! ev._y = ev.layerY;! ! } else if (ev.offsetX || ev.offsetX == 0) { // Opera! ! ! ev._x = ev.offsetX;! ! ! ev._y = ev.offsetY;! ! }

! ! var func = tool[ev.type];! ! if (func) {! ! ! func(ev);! ! }! }

マウスイベント

Page 96: Paint Tool 2013-05-14

! var tool_default = 'line';

! if (tools[tool_default]) {! ! tool = new tools[tool_default]();! ! tool_select.value = tool_default;! }

! tempCanvas.addEventListener('mousedown', ev_canvas, false);! tempCanvas.addEventListener('mousemove', ev_canvas, false);! tempCanvas.addEventListener('mouseup', ev_canvas, false););

! function ev_canvas (ev) {! ! if (ev.layerX || ev.layerX == 0) { // Firefox! ! ! ev._x = ev.layerX;! ! ! ev._y = ev.layerY;! ! } else if (ev.offsetX || ev.offsetX == 0) { // Opera! ! ! ev._x = ev.offsetX;! ! ! ev._y = ev.offsetY;! ! }

! ! var func = tool[ev.type];! ! if (func) {! ! ! func(ev);! ! }! }

var tool;var tools = {};

! var tool_default = 'line';

! if (tools[tool_default]) {! ! tool = new tools[tool_default]();! ! tool_select.value = tool_default;! }

! tempCanvas.addEventListener('mousedown', ev_canvas, false);! tempCanvas.addEventListener('mousemove', ev_canvas, false);! tempCanvas.addEventListener('mouseup', ev_canvas, false););

! function ev_canvas (ev) {! ! if (ev.layerX || ev.layerX == 0) { // Firefox! ! ! ev._x = ev.layerX;! ! ! ev._y = ev.layerY;! ! } else if (ev.offsetX || ev.offsetX == 0) { // Opera! ! ! ev._x = ev.offsetX;! ! ! ev._y = ev.offsetY;! ! }

! ! var func = tool[ev.type];! ! if (func) {! ! ! func(ev);! ! }! }

Page 97: Paint Tool 2013-05-14

! var tool_default = 'line';

! if (tools[tool_default]) {! ! tool = new tools[tool_default]();! ! tool_select.value = tool_default;! }

! tempCanvas.addEventListener('mousedown', ev_canvas, false);! tempCanvas.addEventListener('mousemove', ev_canvas, false);! tempCanvas.addEventListener('mouseup', ev_canvas, false););

! function ev_canvas (ev) {! ! if (ev.layerX || ev.layerX == 0) { // Firefox! ! ! ev._x = ev.layerX;! ! ! ev._y = ev.layerY;! ! } else if (ev.offsetX || ev.offsetX == 0) { // Opera! ! ! ev._x = ev.offsetX;! ! ! ev._y = ev.offsetY;! ! }

! ! var func = tool[ev.type];! ! if (func) {! ! ! func(ev);! ! }! }

var tool;var tools = {};

! var tool_default = 'line';

! if (tools[tool_default]) {! ! tool = new tools[tool_default]();! ! tool_select.value = tool_default;! }

! tempCanvas.addEventListener('mousedown', ev_canvas, false);! tempCanvas.addEventListener('mousemove', ev_canvas, false);! tempCanvas.addEventListener('mouseup', ev_canvas, false););

! function ev_canvas (ev) {! ! if (ev.layerX || ev.layerX == 0) { // Firefox! ! ! ev._x = ev.layerX;! ! ! ev._y = ev.layerY;! ! } else if (ev.offsetX || ev.offsetX == 0) { // Opera! ! ! ev._x = ev.offsetX;! ! ! ev._y = ev.offsetY;! ! }

! ! var func = tool[ev.type];! ! if (func) {! ! ! func(ev);! ! }! }

canvas内の相対座標を ev._x, ev._y に格納(マウスイベント共通)

Page 98: Paint Tool 2013-05-14

ペイントツールえんぴつ(フリーライン)

Page 99: Paint Tool 2013-05-14

ペイントツールえんぴつ(フリーライン)

WA EXECUTE JAVASCRIPT FUNCTION (*;"WA_Canvas";"changeDrawTool";*;”pencil”)

Page 100: Paint Tool 2013-05-14

ペイントツールえんぴつ(フリーライン)

WA EXECUTE JAVASCRIPT FUNCTION (*;"WA_Canvas";"changeDrawTool";*;”pencil”)

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

Page 101: Paint Tool 2013-05-14

ペイントツールえんぴつ(フリーライン)

WA EXECUTE JAVASCRIPT FUNCTION (*;"WA_Canvas";"changeDrawTool";*;”pencil”)

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

Page 102: Paint Tool 2013-05-14

ペイントツール

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

function fireEvent(element,event){! if (document.createEventObject){! // for IE! var evt = document.createEventObject();! return element.fireEvent('on'+event,evt);! }! else{! // for others! var evt = document.createEvent('HTMLEvents');! evt.initEvent(event, true, true); // bubbling,cancellable! return !element.dispatchEvent(evt);! }}

Page 103: Paint Tool 2013-05-14

ペイントツール

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

function fireEvent(element,event){! if (document.createEventObject){! // for IE! var evt = document.createEventObject();! return element.fireEvent('on'+event,evt);! }! else{! // for others! var evt = document.createEvent('HTMLEvents');! evt.initEvent(event, true, true); // bubbling,cancellable! return !element.dispatchEvent(evt);! }}

Page 104: Paint Tool 2013-05-14

var tempCanvas;var contextTemp;

var container = canvas.parentNode;

tempCanvas = document.createElement('canvas');!if (!tempCanvas) {! alert('Error: cannot create a new canvas element!');! return;}

tempCanvas.id = 'myCanvasTemp';tempCanvas.width = canvas.width;tempCanvas.height = canvas.height;container.appendChild(tempCanvas);

contextTemp = tempCanvas.getContext('2d');

var tool_select = document.getElementById('dtool');

if (!tool_select) {! alert('Error: failed to get the dtool element!');! return;}

tool_select.addEventListener('change', ev_tool_change, false);

var container = canvas.parentNode;

tempCanvas = document.createElement('canvas');!if (!tempCanvas) {! alert('Error: cannot create a new canvas element!');! return;}

tempCanvas.id = 'myCanvasTemp';tempCanvas.width = canvas.width;tempCanvas.height = canvas.height;container.appendChild(tempCanvas);

contextTemp = tempCanvas.getContext('2d');

var tool_select = document.getElementById('dtool');

if (!tool_select) {! alert('Error: failed to get the dtool element!');! return;}

tool_select.addEventListener('change', ev_tool_change, false);

<select id="dtool" style="visibility:hidden;">! <option value="line">Line</option>! <option value="rect">Rectangle</option>! <option value="pencil">Pencil</option>! <option value="circle">Circle</option>! <option value="eraser">Eraser</option>! <option value="rectFill">Solid Rectangle</option>! <option value="circleFill">Solid Circle</option></select>

function ev_tool_change (ev) {! if (tools[this.value]) {! tool = new tools[this.value]();! }}

イベントリスナーでツールを切り替え

Page 105: Paint Tool 2013-05-14

ペイントツール

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

function fireEvent(element,event){! if (document.createEventObject){! // for IE! var evt = document.createEventObject();! return element.fireEvent('on'+event,evt);! }! else{! // for others! var evt = document.createEvent('HTMLEvents');! evt.initEvent(event, true, true); // bubbling,cancellable! return !element.dispatchEvent(evt);! }}

Page 106: Paint Tool 2013-05-14

ペイントツール

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

function fireEvent(element,event){! if (document.createEventObject){! // for IE! var evt = document.createEventObject();! return element.fireEvent('on'+event,evt);! }! else{! // for others! var evt = document.createEvent('HTMLEvents');! evt.initEvent(event, true, true); // bubbling,cancellable! return !element.dispatchEvent(evt);! }}

function ev_tool_change (ev) {! if (tools[this.value]) {! tool = new tools[this.value]();! }}

Page 107: Paint Tool 2013-05-14

ペイントツール

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

function fireEvent(element,event){! if (document.createEventObject){! // for IE! var evt = document.createEventObject();! return element.fireEvent('on'+event,evt);! }! else{! // for others! var evt = document.createEvent('HTMLEvents');! evt.initEvent(event, true, true); // bubbling,cancellable! return !element.dispatchEvent(evt);! }}

function ev_tool_change (ev) {! if (tools[this.value]) {! tool = new tools[this.value]();! }}

WA EXECUTE JAVASCRIPT FUNCTION (*;"WA_Canvas";"changeDrawTool";*;”pencil”)

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

Page 108: Paint Tool 2013-05-14

ペイントツール

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

function fireEvent(element,event){! if (document.createEventObject){! // for IE! var evt = document.createEventObject();! return element.fireEvent('on'+event,evt);! }! else{! // for others! var evt = document.createEvent('HTMLEvents');! evt.initEvent(event, true, true); // bubbling,cancellable! return !element.dispatchEvent(evt);! }}

function ev_tool_change (ev) {! if (tools[this.value]) {! tool = new tools[this.value]();! }}

WA EXECUTE JAVASCRIPT FUNCTION (*;"WA_Canvas";"changeDrawTool";*;”pencil”)

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

‘pencil’

Page 109: Paint Tool 2013-05-14

ペイントツール

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

function fireEvent(element,event){! if (document.createEventObject){! // for IE! var evt = document.createEventObject();! return element.fireEvent('on'+event,evt);! }! else{! // for others! var evt = document.createEvent('HTMLEvents');! evt.initEvent(event, true, true); // bubbling,cancellable! return !element.dispatchEvent(evt);! }}

function ev_tool_change (ev) {! if (tools[this.value]) {! tool = new tools[this.value]();! }}

WA EXECUTE JAVASCRIPT FUNCTION (*;"WA_Canvas";"changeDrawTool";*;”pencil”)

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

‘pencil’‘pencil’

Page 110: Paint Tool 2013-05-14

ペイントツール

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

function fireEvent(element,event){! if (document.createEventObject){! // for IE! var evt = document.createEventObject();! return element.fireEvent('on'+event,evt);! }! else{! // for others! var evt = document.createEvent('HTMLEvents');! evt.initEvent(event, true, true); // bubbling,cancellable! return !element.dispatchEvent(evt);! }}

function ev_tool_change (ev) {! if (tools[this.value]) {! tool = new tools[this.value]();! }} tools[‘pencil’]

WA EXECUTE JAVASCRIPT FUNCTION (*;"WA_Canvas";"changeDrawTool";*;”pencil”)

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

‘pencil’‘pencil’

Page 111: Paint Tool 2013-05-14

ペイントツール

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

function fireEvent(element,event){! if (document.createEventObject){! // for IE! var evt = document.createEventObject();! return element.fireEvent('on'+event,evt);! }! else{! // for others! var evt = document.createEvent('HTMLEvents');! evt.initEvent(event, true, true); // bubbling,cancellable! return !element.dispatchEvent(evt);! }}

function ev_tool_change (ev) {! if (tools[this.value]) {! tool = new tools[this.value]();! }}

WA EXECUTE JAVASCRIPT FUNCTION (*;"WA_Canvas";"changeDrawTool";*;”pencil”)

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

tools[‘pencil’]

Page 112: Paint Tool 2013-05-14

ペイントツール

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

function fireEvent(element,event){! if (document.createEventObject){! // for IE! var evt = document.createEventObject();! return element.fireEvent('on'+event,evt);! }! else{! // for others! var evt = document.createEvent('HTMLEvents');! evt.initEvent(event, true, true); // bubbling,cancellable! return !element.dispatchEvent(evt);! }}

function ev_tool_change (ev) {! if (tools[this.value]) {! tool = new tools[this.value]();! }}

WA EXECUTE JAVASCRIPT FUNCTION (*;"WA_Canvas";"changeDrawTool";*;”pencil”)

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

tools[‘pencil’]

tools.pencil

Page 113: Paint Tool 2013-05-14

ペイントツール

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

function fireEvent(element,event){! if (document.createEventObject){! // for IE! var evt = document.createEventObject();! return element.fireEvent('on'+event,evt);! }! else{! // for others! var evt = document.createEvent('HTMLEvents');! evt.initEvent(event, true, true); // bubbling,cancellable! return !element.dispatchEvent(evt);! }}

function ev_tool_change (ev) {! if (tools[this.value]) {! tool = new tools[this.value]();! }}

WA EXECUTE JAVASCRIPT FUNCTION (*;"WA_Canvas";"changeDrawTool";*;”pencil”)

function changeDrawTool(drawTool) {! var obj = document.getElementById('dtool');! obj.value = drawTool;! drawingTool = drawTool;! fireEvent(obj,'change');}

tools.pencil = function () {! var tool = this;! this.started = false;

! this.mousedown = function (ev) {! ! contextTemp.beginPath();! ! contextTemp.moveTo(ev._x, ev._y);! ! tool.started = true;! ! saveImage();! };

! this.mousemove = function (ev) {! ! if (tool.started) {! ! ! contextTemp.lineTo(ev._x, ev._y);! ! ! contextTemp.stroke();! ! }! };

! this.mouseup = function (ev) {! ! if (tool.started) {! ! ! tool.mousemove(ev);! ! ! tool.started = false;! ! ! img_update();! ! }! };};

tools.pencil

Page 114: Paint Tool 2013-05-14

ペイントツールライン色

intColor:=Select RGB color (intColor)$hexColor:=UTIL_IntToHex (intColor)WA EXECUTE JAVASCRIPT FUNCTION (*;"WA_Canvas";"changeColor";*;$hexColor)

function changeColor(hexColor) {! var tempCanvas = document.getElementById('myCanvasTemp');! var tempContext = tempCanvas.getContext('2d');! color = hexColor;! tempContext.strokeStyle = hexColor;}

Page 115: Paint Tool 2013-05-14

ペイントツールライン幅

function changeStrokeWidth(lWidth) {! var tempCanvas = document.getElementById('myCanvasTemp');! var tempContext = tempCanvas.getContext('2d');! strokeWidth = lWidth;! tempContext.lineWidth = lWidth;}

WA EXECUTE JAVASCRIPT FUNCTION (*;"WA_Canvas";"changeStrokeWidth";*;size)

Page 116: Paint Tool 2013-05-14

ペイントツール書き出し

function getData() {! var canvas = document.getElementById('myCanvas'); ! var strData = canvas.toDataURL('image/png');! return strData;}

WA EXECUTE JAVASCRIPT FUNCTION (*;"WA_Canvas";"getData";image)TEXT TO BLOB (image;$image_blob)CREATE RECORD ([Images])[Images]image_name:=imageName[Images]image_data:=$image_blob SAVE RECORD ([Images])

Page 117: Paint Tool 2013-05-14

ペイントツール読み込み

function loadImage(imageSource) {var canvas = document.getElementById('myCanvas'); var context = canvas.getContext('2d');var imageObject = new Image();imageObject.onload = function() {

context.clearRect(0, 0, canvas.width, canvas.height); context.drawImage(imageObject, 0, 0, canvas.width, canvas.height);

}; imageObject.src = imageSource;

}

WA EXECUTE JAVASCRIPT FUNCTION (*;"WA_Canvas";"loadImage";*;image)

Page 118: Paint Tool 2013-05-14

ペイントツールリンク

Page 119: Paint Tool 2013-05-14

ペイントツールリンク

http://muro.deviantart.com

http://www.mrdoob.com/projects/harmony/

http://muro.deviantart.com

Page 120: Paint Tool 2013-05-14

ペイントツール