質問するログイン新規登録

質問編集履歴

3

コードの修正

2019/04/03 05:32

投稿

asr1919
asr1919

スコア16

title CHANGED
File without changes
body CHANGED
@@ -46,30 +46,6 @@
46
46
  }
47
47
 
48
48
  function OnButtonClick() {
49
- const canvas = document.createElement('canvas');
50
- const ctx = canvas.getContext('2d');
51
- const img = new Image();
52
-
53
- /** ドラッグで移動 */
54
- // ドラッグ状態かどうか
55
- let isDragging = false;
56
- // ドラッグ開始位置
57
- let start = {
58
- x: 0,
59
- y: 0
60
- };
61
- // ドラッグ中の位置
62
- let diff = {
63
- x: 0,
64
- y: 0
65
- };
66
- // ドラッグ終了後の位置
67
- let end = {
68
- x: 0,
69
- y: 0
70
- }
71
-
72
- function OnButtonClick() {
73
49
  document.getElementById('image').appendChild(canvas);
74
50
 
75
51
  img.src = 'img/sample_3.png'; //任意の画像

2

htmlのコードとjavascriptコード部分を追加・変更してIEでも動くようにした

2019/04/03 05:32

投稿

asr1919
asr1919

スコア16

title CHANGED
File without changes
body CHANGED
@@ -10,51 +10,104 @@
10
10
  この[サイト](https://kuroeveryday.blogspot.com/2017/09/zoom-in-out-and-drag-to-move-on-canvas.html)の「Step3: 画像をドラッグで移動させる」を参考にし、ひとつの画像をドラッグ&ドロップして自由に配置することはできました。(chromeのみ)
11
11
 
12
12
  ### 発生している問題
13
- ・「試したこと」で記載したサイトの「Step3: 画像をドラッグで移動させる」の以下のコード部分を、画像一つ一つに定義する必要があるのか。その他もっと簡単にできる方法があれば知りたい。
13
+ ・「試したこと」で記載したサイトの「Step3: 画像をドラッグで移動させる」の以下のjavascriptコード部分を、画像一つ一つに定義する必要があるのか。その他もっと簡単にできる方法があれば知りたい。
14
14
 
15
15
  ・IEでも動かせるようにしたい。
16
16
 
17
+ ```html
18
+ <div id="image">
19
+ </div>
20
+ <input type="button" value="canvasを表示" onclick="OnButtonClick();" />
21
+ ```
22
+
17
23
  ```javascript
18
24
 
25
+ const canvas = document.createElement('canvas');
26
+ const ctx = canvas.getContext('2d');
27
+ const img = new Image();
28
+
19
29
  /** ドラッグで移動 */
20
30
  // ドラッグ状態かどうか
21
31
  let isDragging = false;
22
32
  // ドラッグ開始位置
23
33
  let start = {
24
- x: 0,
34
+ x: 0,
25
- y: 0
35
+ y: 0
26
36
  };
27
37
  // ドラッグ中の位置
28
38
  let diff = {
29
- x: 0,
39
+ x: 0,
30
- y: 0
40
+ y: 0
31
41
  };
32
42
  // ドラッグ終了後の位置
33
43
  let end = {
34
- x: 0,
44
+ x: 0,
35
- y: 0
45
+ y: 0
36
46
  }
47
+
48
+ function OnButtonClick() {
49
+ const canvas = document.createElement('canvas');
50
+ const ctx = canvas.getContext('2d');
37
- const redraw = () => {
51
+ const img = new Image();
52
+
38
- ctx.clearRect(0, 0, canvas.width, canvas.height);
53
+ /** ドラッグで移動 */
54
+ // ドラッグ状態かどうか
39
- ctx.drawImage(img, diff.x, diff.y)
55
+ let isDragging = false;
56
+ // ドラッグ開始位置
57
+ let start = {
58
+ x: 0,
59
+ y: 0
40
60
  };
41
- canvas.addEventListener('mousedown', event => {
61
+ // ドラッグ中の位置
42
- isDragging = true;
62
+ let diff = {
43
- start.x = event.clientX;
63
+ x: 0,
44
- start.y = event.clientY;
64
+ y: 0
45
- });
65
+ };
46
- canvas.addEventListener('mousemove', event => {
47
- if (isDragging) {
66
+ // ドラッグ終了後の位置
48
- diff.x = (event.clientX - start.x) + end.x;
49
- diff.y = (event.clientY - start.y) + end.y;
50
- redraw();
67
+ let end = {
68
+ x: 0,
69
+ y: 0
51
- }
70
+ }
52
- });
53
- canvas.addEventListener('mouseup', event => {
54
- isDragging = false;
55
- end.x = diff.x;
56
- end.y = diff.y;
57
71
 
72
+ function OnButtonClick() {
73
+ document.getElementById('image').appendChild(canvas);
74
+
75
+ img.src = 'img/sample_3.png'; //任意の画像
76
+ img.crossOrigin = 'anonymous';
77
+
78
+ // Canvasを画像のサイズに合わせる
79
+ canvas.height = 1000; //任意の高さ
80
+ canvas.width = 1000; //任意の幅
81
+
82
+ // Canvasに描画する
83
+ ctx.drawImage(img, 0, 0);
84
+
85
+ canvas.addEventListener("mousedown", function(e){
86
+ isDragging = true;
87
+ start.x = event.clientX;
88
+ start.y = event.clientY;
89
+ });
90
+
91
+ canvas.addEventListener("mousemove", function(e){
92
+ if (isDragging) {
93
+ diff.x = (event.clientX - start.x) + end.x;
94
+ diff.y = (event.clientY - start.y) + end.y;
95
+ redraw();
96
+ }
97
+ });
98
+
99
+ canvas.addEventListener("mouseup", function(e){
100
+ isDragging = false;
101
+ end.x = diff.x;
102
+ end.y = diff.y;
103
+ });
104
+ }
105
+
106
+ function redraw() {
107
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
108
+ ctx.drawImage(img, diff.x, diff.y)
109
+ }
110
+
58
111
  ```
59
112
 
60
113
 

1

対応させたいブラウザを記載

2019/04/03 05:30

投稿

asr1919
asr1919

スコア16

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,5 @@
1
1
  ### 前提・実現したいこと
2
+ ブラウザ:IE、chrome
2
3
  html5のcanvasを使い、複数の画像をcanvasに配置してドラッグ&ドロップで自由に配置した後、画像として保存したいです。
3
4
 
4
5
  具体的には、
@@ -6,11 +7,13 @@
6
7
  ↑の画像のように、下地の画像の上に、画像化した文字や画像を配置していきます。
7
8
 
8
9
  ### 試したこと
9
- この[サイト](https://kuroeveryday.blogspot.com/2017/09/zoom-in-out-and-drag-to-move-on-canvas.html)の「Step3: 画像をドラッグで移動させる」を参考にし、ひとつの画像をドラッグ&ドロップして自由に配置することはできました。
10
+ この[サイト](https://kuroeveryday.blogspot.com/2017/09/zoom-in-out-and-drag-to-move-on-canvas.html)の「Step3: 画像をドラッグで移動させる」を参考にし、ひとつの画像をドラッグ&ドロップして自由に配置することはできました。(chromeのみ)
10
11
 
11
12
  ### 発生している問題
12
13
  ・「試したこと」で記載したサイトの「Step3: 画像をドラッグで移動させる」の以下のコード部分を、画像一つ一つに定義する必要があるのか。その他もっと簡単にできる方法があれば知りたい。
13
14
 
15
+ ・IEでも動かせるようにしたい。
16
+
14
17
  ```javascript
15
18
 
16
19
  /** ドラッグで移動 */