SlideShare a Scribd company logo
ペイントツール
ペイントツール
ペイントツール
描画ツール
ペイントツール
描画ツール
ポインティングデバイス
ペイントツール
描画ツール
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
ペイントツール

More Related Content

Viewers also liked

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

Viewers also liked (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
 

Similar to Paint Tool 2013-05-14

Web制作のアレコレ
Web制作のアレコレWeb制作のアレコレ
Web制作のアレコレregret raym
 
BCPに活かせ!一撃 CloudFormation
BCPに活かせ!一撃 CloudFormationBCPに活かせ!一撃 CloudFormation
BCPに活かせ!一撃 CloudFormation
真吾 吉田
 
WebIDLを見てみる
WebIDLを見てみるWebIDLを見てみる
WebIDLを見てみる
takenspc
 
HTML5 on ASP.NET
HTML5 on ASP.NETHTML5 on ASP.NET
HTML5 on ASP.NET
Fujio Kojima
 
ASP.NET MVC のルーティング設定を少しだけ REST ぽくする
ASP.NET MVC のルーティング設定を少しだけ REST ぽくするASP.NET MVC のルーティング設定を少しだけ REST ぽくする
ASP.NET MVC のルーティング設定を少しだけ REST ぽくする
dany1468
 
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみようAlfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Tasuku Otani
 
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
 
WordBench京都12月、WordCampUSからのWP REST APIな話
WordBench京都12月、WordCampUSからのWP REST APIな話WordBench京都12月、WordCampUSからのWP REST APIな話
WordBench京都12月、WordCampUSからのWP REST APIな話
Hidetaka Okamoto
 
densan2014-late01
densan2014-late01densan2014-late01
densan2014-late01
Takenori Nakagawa
 
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...
Shotaro Suzuki
 
WordPressプラグイン作成入門
WordPressプラグイン作成入門WordPressプラグイン作成入門
WordPressプラグイン作成入門
Yuji Nojima
 
Xamarin概要+最新情報
Xamarin概要+最新情報Xamarin概要+最新情報
Xamarin概要+最新情報
Yoshito Tabuchi
 
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825 Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
miso- soup3
 
WordPress REST API と Vue.js を使ったフロントエンド開発
WordPress REST API と Vue.js を使ったフロントエンド開発WordPress REST API と Vue.js を使ったフロントエンド開発
WordPress REST API と Vue.js を使ったフロントエンド開発
Hiromasa Tanaka
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるjamadam
 
なんでCSSすぐ死んでしまうん
なんでCSSすぐ死んでしまうんなんでCSSすぐ死んでしまうん
なんでCSSすぐ死んでしまうん
Hayato Mizuno
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
takezoe
 
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"を作ったのでこれでテーマを理解しよう!
Takashi Uemura
 

Similar to 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"を作ったのでこれでテーマを理解しよう!
 

More from kmiyako

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

More from 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
 
⽇本語全⽂検索
⽇本語全⽂検索⽇本語全⽂検索
⽇本語全⽂検索
 
ラベルエディター
ラベルエディターラベルエディター
ラベルエディター
 

Recently uploaded

This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 

Recently uploaded (14)

This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 

Paint Tool 2013-05-14