SlideShare uma empresa Scribd logo
1 de 120
Baixar para ler offline
ペイントツール
ペイントツール
ペイントツール
描画ツール
ペイントツール
描画ツール
ポインティングデバイス
ペイントツール
描画ツール
Draw系
ドロー
Paint系
ペイント
ポインティングデバイス
ペイントツール
描画ツール
Draw系
ドロー
Paint系
ペイント
Vector形式
ベクター
Raster形式
ラスター
ポインティングデバイス
ペイントツール
描画ツール
Draw系
ドロー
Paint系
ペイント
Vector形式
ベクター
Raster形式
ラスター
ピクセル座標・方向・距離
ポインティングデバイス
ペイントツール
描画ツール
Draw系
ドロー
Paint系
ペイント
Vector形式
ベクター
Raster形式
ラスター
ピクセル座標・方向・距離
ポインティングデバイス
ペイントツール
描画ツール
Draw系
ドロー
Paint系
ペイント
Vector形式
ベクター
Raster形式
ラスター
ピクセル座標・方向・距離
ポインティングデバイス
マッシュアップ
マッシュアップ
Webプログラミング
マッシュアップ
Webプログラミング
複数のWebサービスのAPIを組み合わせ,あたかも
ひとつのWebサービスのようにする機能のこと。
http://ja.wikipedia.org/wiki/マッシュアップ_(Webプログラミング)
マッシュアップ
Webプログラミング
複数のWebサービスのAPIを組み合わせ,あたかも
ひとつのWebサービスのようにする機能のこと。
http://ja.wikipedia.org/wiki/マッシュアップ_(Webプログラミング)
マッシュアップ
Webプログラミング
複数のWebサービスのAPIを組み合わせ,あたかも
ひとつのWebサービスのようにする機能のこと。
http://ja.wikipedia.org/wiki/マッシュアップ_(Webプログラミング)
ITの深い知識がなくても,既存のWebサービスを組
み合わせて,短期間でアプリケーション開発ができる
ことから,新しい開発技法として注目されている。
マッシュアップ
Webプログラミング
複数のWebサービスのAPIを組み合わせ,あたかも
ひとつのWebサービスのようにする機能のこと。
http://ja.wikipedia.org/wiki/マッシュアップ_(Webプログラミング)
ITの深い知識がなくても,既存のWebサービスを組
み合わせて,短期間でアプリケーション開発ができる
ことから,新しい開発技法として注目されている。
マッシュアップ
Webプログラミング
複数のWebサービスのAPIを組み合わせ,あたかも
ひとつのWebサービスのようにする機能のこと。
http://ja.wikipedia.org/wiki/マッシュアップ_(Webプログラミング)
ITの深い知識がなくても,既存のWebサービスを組
み合わせて,短期間でアプリケーション開発ができる
ことから,新しい開発技法として注目されている。
マッシュアップ
4D
マッシュアップ
4D
Webエリアを活用し,HTML/CSS/JavaScript
のAPIを組み合わせ, あたかもひとつのデスクトッ
プアプリケーションのようにする開発技法。
マッシュアップ
4D
Webエリアを活用し,HTML/CSS/JavaScript
のAPIを組み合わせ, あたかもひとつのデスクトッ
プアプリケーションのようにする開発技法。
マッシュアップ
4D
Webエリアを活用し,HTML/CSS/JavaScript
のAPIを組み合わせ, あたかもひとつのデスクトッ
プアプリケーションのようにする開発技法。
マッシュアップ
4D
Webエリアを活用し,HTML/CSS/JavaScript
のAPIを組み合わせ, あたかもひとつのデスクトッ
プアプリケーションのようにする開発技法。
HTML5
HTML5
<canvas> <svg>
プログラミング言語 手続型 宣言型
API ローレベル ハイレベル
画像形式 ビットマップ ベクター(XML)
レンダリング サイズに比例 オブジェクト数に比例
オブジェクト操作 無理 容易
HTML5
<canvas> <svg>
プログラミング言語 手続型 宣言型
API ローレベル ハイレベル
画像形式 ビットマップ ベクター(XML)
レンダリング サイズに比例 オブジェクト数に比例
オブジェクト操作 無理 容易
HTML5
<canvas>
プログラミング言語 手続型
API ローレベル
画像形式 ビットマップ
レンダリング サイズに比例
オブジェクト操作 無理
<svg>
宣言型
ハイレベル
ベクター(XML)
オブジェクト数に比例
容易
HTML5
<canvas>
プログラミング言語 手続型
API ローレベル
画像形式 ビットマップ
レンダリング サイズに比例
オブジェクト操作 無理
<svg>
宣言型
ハイレベル
ベクター(XML)
オブジェクト数に比例
容易
JavaScript
HTML5
<canvas>
プログラミング言語 手続型
API ローレベル
画像形式 ビットマップ
レンダリング サイズに比例
オブジェクト操作 無理
<svg>
宣言型
ハイレベル
ベクター(XML)
オブジェクト数に比例
容易
JavaScript
高速!!
HTML5
<canvas>
プログラミング言語 手続型
API ローレベル
画像形式 ビットマップ
レンダリング サイズに比例
オブジェクト操作 無理
<svg>
宣言型
ハイレベル
ベクター(XML)
オブジェクト数に比例
容易
JavaScript
高速!!
JavaScript
JavaScript
Webブラウザで実行できるプログラミング言語
JavaScript
Webブラウザで実行できるプログラミング言語
JavaScript
Webブラウザで実行できるプログラミング言語
Webエリア
Webエリア
Webブラウザと同等の機能を有するフォームオブジェクト
Webエリア
Webブラウザと同等の機能を有するフォームオブジェクト
Webエリア
Webブラウザと同等の機能を有するフォームオブジェクト
Webエリア
Webブラウザと同等の機能を有するフォームオブジェクト
Internet
Explorer 7
Safari 4
Webエリア
Webブラウザと同等の機能を有するフォームオブジェクト
Internet
Explorer 7
Safari 4
Webエリア
Webブラウザと同等の機能を有するフォームオブジェクト
Internet
Explorer 7
Safari 4
Internet
Explorer
Safari
Webエリア
Webブラウザと同等の機能を有するフォームオブジェクト
Internet
Explorer 7
Safari 4
Internet
Explorer
Safari
Integrated
WebKit
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を実行
Webエリア
Webエリア
WA OPEN URL
WA SET PAGE CONTENT
Webエリア
WA OPEN URL
WA SET PAGE CONTENT
ページの場所をシステムパスまたはURLを指定
ページの内容をHTMLで指定
Webエリア
WA OPEN URL
WA SET PAGE CONTENT
ページの場所をシステムパスまたはURLを指定
ページの内容をHTMLで指定
追加リソースを相対パスで指定できる
追加リソースを相対パスで指定できるのはMacのみ(ベースURL)
Webエリア
WA OPEN URL
システムパスまたはURLを指定
WA SET PAGE CONTENT
HTMLを指定
// システムパス
C:¥MyFolder¥My File.html
Macintosh HD:MyFolder:My File.html
WA SET PAGE CONTENT
file:///C:/MyFolder/My%20File.html
file:///MyFolder/My%20File.html
// URL
Webエリア
WA OPEN URL
システムパスまたはURLを指定
WA SET PAGE CONTENT
HTMLを指定
// システムパス
C:¥MyFolder¥My File.html
Macintosh HD:MyFolder:My File.html
WA SET PAGE CONTENT
file:///C:/MyFolder/My%20File.html
file:///MyFolder/My%20File.html
// URL
Webエリア
WA OPEN URL
システムパスまたはURLを指定
WA SET PAGE CONTENT
HTMLを指定
// システムパス
C:¥MyFolder¥My File.html
Macintosh HD:MyFolder:My File.html
WA SET PAGE CONTENT
file:///C:/MyFolder/My%20File.html
file:///MyFolder/My%20File.html
// URL
Webエリア
WA OPEN URL
システムパスをPOSIXパスに変換
WA SET PAGE CONTENT
HTMLを指定
// システムパス
C:¥MyFolder¥My File.html
Macintosh HD:MyFolder:My File.html
Convert path system to POSIX
WA SET PAGE CONTENT
C:/MyFolder/My File.html
/MyFolder/My File.html
// POSIX
Webエリア
WA OPEN URL
システムパスをPOSIXパスに変換してURLエスケープ
WA SET PAGE CONTENT
HTMLを指定
// システムパス
C:¥MyFolder¥My File.html
Macintosh HD:MyFolder:My File.html
WA SET PAGE CONTENT
C:/MyFolder/My%20File.html
/MyFolder/My%20File.html
// ?
Convert path system to POSIX (...;*)
Webエリア
WA OPEN URL
システムパスをURLに変換
WA SET PAGE CONTENT
HTMLを指定
// システムパス
C:¥MyFolder¥My File.html
Macintosh HD:MyFolder:My File.html
WA SET PAGE CONTENT
file:///C:/MyFolder/My%20File.html
file:////MyFolder/My%20File.html
// URL (Windows)
“file:///”+Convert path system to POSIX (...;*)
Webエリア
WA OPEN URL
システムパスをURLに変換
WA SET PAGE CONTENT
HTMLを指定
// システムパス
C:¥MyFolder¥My File.html
Macintosh HD:MyFolder:My File.html
WA SET PAGE CONTENT
file://C:/MyFolder/My%20File.html
file:///MyFolder/My%20File.html
// URL (Mac OS)
“file://”+Convert path system to POSIX (...;*)
Webエリア
ベースURL
*Mac Only
Webエリア
ベースURL
*Mac Only
WA SET PAGE CONTENTでも相対パスが指定できる
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>
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>
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/”)
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/”)
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/”)
Webエリア
キャッシュ
Webエリア
キャッシュ
Webエリアがロードしたファイルはキャッシュされることも・・・
Webエリア
キャッシュ
Webエリアがロードしたファイルはキャッシュされることも・・・
WA SET PAGE CONTENTで渡したHTMLはキャッシュされない
Webエリア
ローカルHTMLファイル使用のポイント
Webエリア
ローカルHTMLファイル使用のポイント
● URL (file://)
▲ システムパス
Webエリア
ローカルHTMLファイル使用のポイント
● URL (file://)
▲ システムパス
● WA SET PAGE CONTENT
▲ WA OPEN URL
Webエリア
ローカルHTMLファイル使用のポイント
● URL (file://)
▲ システムパス
● WA SET PAGE CONTENT
▲ WA OPEN URL
● 単一ファイル,絶対パス
▲ 複数ファイル,<base>,相対パス
Webエリア
ローカルHTMLファイル使用のポイント
● URL (file://)
▲ システムパス
● WA SET PAGE CONTENT
▲ WA OPEN URL
● 単一ファイル,絶対パス
▲ 複数ファイル,<base>,相対パス
プラットフォーム注意
Webエリア
ローカルHTMLファイル使用のポイント
● URL (file://)
▲ システムパス
● WA SET PAGE CONTENT
▲ WA OPEN URL
● 単一ファイル,絶対パス
▲ 複数ファイル,<base>,相対パス
キャッシュ注意
プラットフォーム注意
Webエリア
ローカルHTMLファイル使用のポイント
● URL (file://)
▲ システムパス
● WA SET PAGE CONTENT
▲ WA OPEN URL
● 単一ファイル,絶対パス
▲ 複数ファイル,<base>,相対パス
キャッシュ注意
プラットフォーム注意
プラットフォーム・キャッシュ注意
Webエリア
ドラッグ&ドロップでページを移動しないために
Webエリア
ドラッグ&ドロップでページを移動しないために
<body ondragover="return false;" ondrop="return false;">
</body>
Webエリア
フォームイベント
Webエリア
フォームイベント
On End URL Loading
$filter{1}:="http://*"
$access{1}:=False
WA SET URL FILTERS (*;...;$filter;$access)
On Load
WA OPEN URL/WA SET PAGE CONTENT
WA SET PREFERENCE (*;...;wa enable JavaScript;True)
Webエリア
フォームイベント
On URL Filtering
$url:=WA Get last filtered URL
On End URL Loading
$filter{1}:="http://*"
$access{1}:=False
WA SET URL FILTERS (*;...;$filter;$access)
On Load
WA OPEN URL/WA SET PAGE CONTENT
WA SET PREFERENCE (*;...;wa enable JavaScript;True)
Webエリア
フォームイベント
On URL Filtering
$url:=WA Get last filtered URL
Webエリア
フォームイベント
On URL Filtering
$url:=WA Get last filtered URL
Webエリア
フォームイベント
function clearCanvas () {
window.location = "http://clearCanvas/";
}
On URL Filtering
$url:=WA Get last filtered URL
Webエリア
フォームイベント
function clearCanvas () {
window.location = "http://clearCanvas/";
}
Webエリア
フォームイベント
On Clicked
WA EXECUTE JAVASCRIPT FUNCTION (...;”clearCanvas”;*;...)
function clearCanvas () {
window.location = "http://clearCanvas/";
}
Webエリア
フォームイベント
On Clicked
WA EXECUTE JAVASCRIPT FUNCTION (...;”clearCanvas”;*;...)
function clearCanvas () {
window.location = "http://clearCanvas/";
}
On URL Filtering
$url:=WA Get last filtered URL
Webエリア
ペイントツール
CanvasRenderingContext2D
メソッド 説明
arc() 曲線・円・弧
beginPath() 線の始点を決める
closePath() 現在位置から始点まで戻る
fill() 線の内側を塗りつぶす
lineTo() 指定位置まで線を延長する
moveTo() 指定位置まで移動する
rect() 四角を描く
stroke() 線を描く
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;
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
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;
}
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)
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;
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);
}
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);
}
一時コンテキストに描画した後に転写
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);
}
一時コンテキストに描画した後に転写
ダイレクトの描画した場合,
やり直しが効かない!!
(ビットマップ画像)
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]();
! }
}
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]();
! }
}
イベントリスナーでツールを切り替え
! 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);
! ! }
! }
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);
! ! }
! }
! 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);
! ! }
! }
マウスイベント
! 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);
! ! }
! }
! 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 に格納
(マウスイベント共通)
ペイントツール
えんぴつ(フリーライン)
ペイントツール
えんぴつ(フリーライン)
WA EXECUTE JAVASCRIPT FUNCTION (*;"WA_Canvas";"changeDrawTool";*;”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');
}
ペイントツール
えんぴつ(フリーライン)
WA EXECUTE JAVASCRIPT FUNCTION (*;"WA_Canvas";"changeDrawTool";*;”pencil”)
function changeDrawTool(drawTool) {
! var obj = document.getElementById('dtool');
! obj.value = drawTool;
! drawingTool = drawTool;
! fireEvent(obj,'change');
}
ペイントツール
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 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);
! }
}
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]();
! }
}
イベントリスナーでツールを切り替え
ペイントツール
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 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]();
! }
}
ペイントツール
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');
}
ペイントツール
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
ペイントツール
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
ペイントツール
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
ペイントツール
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 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
ペイントツール
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
ペイントツール
ライン色
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;
}
ペイントツール
ライン幅
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)
ペイントツール
書き出し
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])
ペイントツール
読み込み
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)
ペイントツール
リンク
ペイントツール
リンク
http://muro.deviantart.com
http://www.mrdoob.com/projects/harmony/
http://muro.deviantart.com
ペイントツール

Mais conteúdo relacionado

Destaque (12)

Picture 2013-05-28
Picture 2013-05-28Picture 2013-05-28
Picture 2013-05-28
 
Mirroring
MirroringMirroring
Mirroring
 
Data conversion
Data conversionData conversion
Data conversion
 
⾼解像度ディスプレイ
⾼解像度ディスプレイ⾼解像度ディスプレイ
⾼解像度ディスプレイ
 
Lep 2013-07-23
Lep 2013-07-23Lep 2013-07-23
Lep 2013-07-23
 
Web Basics 2013-01-10
Web Basics 2013-01-10Web Basics 2013-01-10
Web Basics 2013-01-10
 
正しいクエリの書き⽅
正しいクエリの書き⽅正しいクエリの書き⽅
正しいクエリの書き⽅
 
XSLT 2010-03-03
XSLT 2010-03-03XSLT 2010-03-03
XSLT 2010-03-03
 
バックアップと復元
バックアップと復元バックアップと復元
バックアップと復元
 
Wakanda 2013-07-02
Wakanda 2013-07-02Wakanda 2013-07-02
Wakanda 2013-07-02
 
Inside Multi-Threading
Inside Multi-ThreadingInside Multi-Threading
Inside Multi-Threading
 
2012 keynote-0
2012 keynote-02012 keynote-0
2012 keynote-0
 

Semelhante a Paint Tool 2013-05-14

Web制作のアレコレ
Web制作のアレコレWeb制作のアレコレ
Web制作のアレコレ
regret raym
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
Shotaro Suzuki
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
 

Semelhante a Paint Tool 2013-05-14 (20)

Web制作のアレコレ
Web制作のアレコレWeb制作のアレコレ
Web制作のアレコレ
 
BCPに活かせ!一撃 CloudFormation
BCPに活かせ!一撃 CloudFormationBCPに活かせ!一撃 CloudFormation
BCPに活かせ!一撃 CloudFormation
 
WebIDLを見てみる
WebIDLを見てみるWebIDLを見てみる
WebIDLを見てみる
 
HTML5 on ASP.NET
HTML5 on ASP.NETHTML5 on ASP.NET
HTML5 on ASP.NET
 
ASP.NET MVC のルーティング設定を少しだけ REST ぽくする
ASP.NET MVC のルーティング設定を少しだけ REST ぽくするASP.NET MVC のルーティング設定を少しだけ REST ぽくする
ASP.NET MVC のルーティング設定を少しだけ REST ぽくする
 
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみようAlfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
 
20061125
2006112520061125
20061125
 
WordBench京都12月、WordCampUSからのWP REST APIな話
WordBench京都12月、WordCampUSからのWP REST APIな話WordBench京都12月、WordCampUSからのWP REST APIな話
WordBench京都12月、WordCampUSからのWP REST APIな話
 
densan2014-late01
densan2014-late01densan2014-late01
densan2014-late01
 
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...
 
WordPressプラグイン作成入門
WordPressプラグイン作成入門WordPressプラグイン作成入門
WordPressプラグイン作成入門
 
Xamarin概要+最新情報
Xamarin概要+最新情報Xamarin概要+最新情報
Xamarin概要+最新情報
 
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825 Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
 
WordPress REST API と Vue.js を使ったフロントエンド開発
WordPress REST API と Vue.js を使ったフロントエンド開発WordPress REST API と Vue.js を使ったフロントエンド開発
WordPress REST API と Vue.js を使ったフロントエンド開発
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
 
なんでCSSすぐ死んでしまうん
なんでCSSすぐ死んでしまうんなんでCSSすぐ死んでしまうん
なんでCSSすぐ死んでしまうん
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
 
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
 
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
 

Mais de kmiyako

Mais de kmiyako (20)

Build an iOS app with Ionic and 4D
Build an iOS app with Ionic and 4DBuild an iOS app with Ionic and 4D
Build an iOS app with Ionic and 4D
 
4D WORLD TOUR 2017
4D WORLD TOUR 20174D WORLD TOUR 2017
4D WORLD TOUR 2017
 
Leaflet
LeafletLeaflet
Leaflet
 
4D Tags
4D Tags4D Tags
4D Tags
 
Objects Fields
Objects FieldsObjects Fields
Objects Fields
 
Code Optimisation
Code OptimisationCode Optimisation
Code Optimisation
 
Auto Update
Auto UpdateAuto Update
Auto Update
 
Classic Query Editor
Classic Query EditorClassic Query Editor
Classic Query Editor
 
Web area-phone-home
Web area-phone-homeWeb area-phone-home
Web area-phone-home
 
MONET研究会 #14
MONET研究会 #14MONET研究会 #14
MONET研究会 #14
 
4d
4d4d
4d
 
初心者からプロフェッショナルまで~データベース開発ソフト4Dの魅力を徹底紹介~
初心者からプロフェッショナルまで~データベース開発ソフト4Dの魅力を徹底紹介~初心者からプロフェッショナルまで~データベース開発ソフト4Dの魅力を徹底紹介~
初心者からプロフェッショナルまで~データベース開発ソフト4Dの魅力を徹底紹介~
 
Xslt
XsltXslt
Xslt
 
Journaling slides
Journaling slidesJournaling slides
Journaling slides
 
Unicode-v11-5
Unicode-v11-5Unicode-v11-5
Unicode-v11-5
 
Unicode-v11-0
Unicode-v11-0Unicode-v11-0
Unicode-v11-0
 
アップグレードセミナー
アップグレードセミナーアップグレードセミナー
アップグレードセミナー
 
4D Write Pro
4D Write Pro4D Write Pro
4D Write Pro
 
⽇本語全⽂検索
⽇本語全⽂検索⽇本語全⽂検索
⽇本語全⽂検索
 
ラベルエディター
ラベルエディターラベルエディター
ラベルエディター
 

Paint Tool 2013-05-14