【P5.js】描画したものの比率が歪んでいるときに対処したこと

444 語
2 分
【P5.js】描画したものの比率が歪んでいるときに対処したこと

はじまり#

135ml avatar
135ml
そういえばこの前、P5.jsのcanvasの歪みを直したな。
リサちゃん avatar
リサちゃん
矯正しようか

改修前に起きていた事象#

改修前に起きていた事象が、まん丸の円を描画したはずなのに、なぜか縦に長い楕円が表示されていたというものです。

そして、その時のコードがこれです。

let result = document.getElementById('result');
let d = 100;
function setup() {
let canvas = createCanvas(windowWidth, windowHeight);
canvas.parent(result); //canvasを指定した要素の子要素にする
}
function draw() {
clear();
circle(mouseX, mouseY, d);
}
function mouseClicked() {
if (d == 100) {
d = 300;
}else if (d == 300) {
d = 100;
}
}

事象の原因#

原因は、canvasのサイズをウインドウ全体の幅(赤色)と高さとしているため、ウインドウよりも幅が小さいブログ本文(青色)に描画したものを反映していたことでした。つまり、canvasの幅を小さくして高さはそのままでブログ本文に反映したため、canvasが縦長になったというわけです。 (開発者ツールを使うとまん丸(のよう)になり、使わないと縦長になったので気付きました・・・。)

レッツ改修#

改修したコードが以下になります。描画する要素の幅を取得して、その幅をcanvasの幅としています。

let result = document.getElementById('result');
let canvasWidth = Number(result.clientWidth);
let d = 100;
function setup() {
let canvas = createCanvas(canvasWidth, windowHeight);
canvas.parent(result); //canvasを指定した要素の子要素にする
}
function draw() {
clear();
// 直径をマウスのx座標にする
circle(mouseX, mouseY, d);
}
function mouseClicked() {
if (d == 100) {
d = 300;
}else if (d == 300) {
d = 100;
}
}

改修した後の画面はこのように描画され、まん丸になっています。

おしまい#

135ml avatar
135ml
今回はこんなもんです。
リサちゃん avatar
リサちゃん
縦横の比率が直ってよかったね~。おじさんの顔はずっと細長いままだけど、それも直せるのかな?
135ml avatar
135ml
僕の顔の細長さは、どう頑張っても直せないね・・・
リサちゃん avatar
リサちゃん
覆水盆に返らず・・・

以上になります!

記事を共有

この記事が役に立ったなら、ぜひ他の人と共有してください!

【P5.js】描画したものの比率が歪んでいるときに対処したこと
https://endorphinbath.com/posts/p5js-fix-aspectratio/
著者
kinkinbeer135ml
公開日
2021-12-24
ライセンス
CC BY-NC-SA 4.0
関連記事 スマート
1
【JavaScript】数値を0埋めされた文字列として加工する
Code JavaScriptで、IDなどを採番する時に0埋めした数値が欲しい時があります。その時に利用できるスニペットを紹介します。
2
【JavaScript】実行中の関数自身の関数名を取得する
Code 実行している関数やメソッド自身の名前を取得する方法を紹介します。この方法は、その関数名を取得する関数を別の関数から呼び出してもらわなければなりません。thisに関数をバインドする必要があるためです。その呼び出し方の種類を掲載しています。
3
【JavaScript】Errorタイプのオブジェクトかどうかを判定する
Code JavaScriptで渡した値がErrorオブジェクトかどうかを判定する関数が見つからなかったので、僕が書いたものを紹介します。
4
【Node.js】Markdown内のimgタグの画像の大きさを変える
Code README.md内のimgタグで記載された画像のサイズを変更する処理を作成しました。沢山画像を貼っていると、いちいちサイズを変更するのが面倒ですが、この処理で一気に直してしまいましょう!
5
【Node.js】GitHub ActionsでREADME.mdに投稿した記事のリンクを表示する(FirebaseでCORS対応)
Code Zenn、Qiita、ブログ、noteに投稿した記事のURLをREADM.mdに掲載するアプリを作成しました。このアプリを参考にして自分のGitHubのプロフィールページをカッコよくしてみましょう!GitHub ActionsやFirebaseを題材にしています。
ランダム記事 ランダム
Profile Image of the Author
kinkinbeer135ml
SIerをやめて、プログラミングを勉強しています。※Amazonアソシエイトに参加しています。
お知らせ
私のブログへようこそ!これはサンプルのお知らせです。
音楽
カバー

音楽

再生中なし

0:00 0:00
歌詞なし
カテゴリ
タグ
サイト統計
記事
287
カテゴリー
8
タグ
93
総文字数
486,174
運用日数
0
最終活動
0 日前

目次