質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

503閲覧

javascript の canvas の拡大についてです。

Hayato1201

総合スコア220

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2022/01/18 05:42

フレームワークはvueを使っているので以下の様になっていますがそこはあまり関係無くcanvasについてのjavascriptでの扱いに関して教えていただきたいです。

javascript

1 const ctx = canvas.value.getContext('2d') 2 canvas.value.width = img.width 3 canvas.value.height = img.height 4 ctx.drawImage(img, 0, 0)

html

1 <canvas 2 id="canvas" 3 ref="canvas" 4 ></canvas>

これをキャンバスのクリック時などに以下の様に拡大表示できる様にしました。

javascript

1 const ctx = canvas.value.getContext('2d') 2 ctx.scale(1.5, 1.5) 3 ctx.drawImage(img, 0, 0)

今回この拡大を中心にから拡大するようにしたいです。

以下の様な画像があった時、
イメージ説明

現状以下のように拡大されますが、
イメージ説明

以下の様に拡大したいという事です。
イメージ説明

これは描画位置を変える必要があるという事でしょうか?その後画像をドラッグして上記二枚目の画像の様な位置に変更したりできる様にしたいためcanvas上のimgの移動方法もご教示いただきたいのですがご存知の方いましたらご回答いただけると大変助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2022/01/18 07:36

svgという選択肢はないですか?
Hayato1201

2022/01/18 12:33 編集

システムの仕様としてcanvasに描画する画像のurlがあります。それを以下の様にimageのsrcに指定してcanvasに描画する様にしています。svgにするとはcanvasを辞めてという事でしょうか?canvasを使用するのも仕様として決まっているので変えられないです。。。 const img = new Image() img.src = url
guest

回答1

0

ベストアンサー

js

1var scale = 1.5; 2ctx.scale(scale, scale); 3 4var width = img.width; 5var height = img.height; 6var x = -width * (scale-1) / 2 / scale; 7var y = -height * (scale-1) / 2 / scale; 8ctx.drawImage(img, x, y);

width * (scale-1):画像の増加分(もしくは、減少分)
width * (scale-1) / 2:画像の増加分の左半分
width * (scale-1) / 2 / scale:描画時に増加するスケールを考慮した描画開始位置

投稿2022/01/19 13:30

k08045kk

総合スコア384

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Hayato1201

2022/01/20 14:17

ご回答ありがとうございます! 大変助かりました! もしよろしければ続きで以下のcanvas関連の質問にもご回答いただけますと非常にありがたいです。 https://teratail.com/questions/6nhst57tzfn1el お手数ですが一度ご確認頂けますと幸いで御座います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問