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

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

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

1812閲覧

canvas 仮想画面 文字がぼやけてしまいます

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/06/22 07:32

<canvas>実画面にそのまま描画するとぼやけないのですが、
仮想画面を経由して描画すると、文字がぼやけてしまいます????
ぼやけないためにはどうすれば良いのでしょうか?また、何が原因で
この差異が生じるのでしょうか?
何卒よろしくお願い致します????‍♀️

const CHRHEIGHT=9;//キャラの高さ
const CHRWIDTH=8;//キャラの幅
const FONT="12px monospace";//使用フォント
const HEIGHT=120;//仮想画面サイズ。高さ
const WIDTH=128;//仮想画面サイズ。幅
const TILESIZE=8;//タイルサイズ(ドット)
const TILECOLUMN=4;//タイル桁数
const TILEROW=4;//タイル行数
const MAP_WIDTH=32;//マップ幅
const MAP_HEIGHT=32;//マップ高さ
const WNDSTYLE="rgba(0,0,0,0.75)";//ウインドウの色
const FONTSTYLE="#ffffff";//文字色

let gImgMap;//地図の画像
let gScreen;//仮想画面
let gWidth;//実画面の幅
let gHeight;//実画面の高さ
let gPlayerX=0;//プレイヤー座標X
let gPlayerY=0;//プレイヤー座標Y

window.onload=function(){   
LoadImage();    
WmSize();
window.addEventListener("resize",function(){WmSize()});
gScreen=document.createElement("canvas");
gScreen.width=128;
gScreen.height=120;
setInterval(function(){WmPaint()},33);
}
function WmSize(){
const ca=document.getElementById("main");
ca.width=window.innerWidth;
ca.height=window.innerHeight;
const g=ca.getContext("2d");
g.imageSmoothingEnabled=g.msImageSmoothingEnabled=0;
gWidth=ca.width;
gHeight=ca.height;
if(gWidth/WIDTH<gHeight/HEIGHT){
gHeight=gWidthHEIGHT/WIDTH;
}else{
gWidth=gHeight
WIDTH/HEIGHT;
}
}

function DrawMain(){
const g=gScreen.getContext("2d");
for(let y=0;y<20;y++){
for(let x=0;x<20;x++){
let px=gPlayerX+x;
let py=gPlayerY+y;
DrawTile(g,xTILESIZE-TILESIZE-2,yTILESIZE,gMap[py*MAP_WIDTH+px]);
}
}
g.fillRect(0,HEIGHT/2-1,WIDTH,2);
g.fillRect(WIDTH/2-1,0,2,HEIGHT);

g.drawImage(gImgPlayer,
CHRWIDTH,0,CHRWIDTH,CHRHEIGHT,
WIDTH/2-CHRWIDTH/2,HEIGHT/2-TILESIZE/2,CHRWIDTH,CHRHEIGHT);

g.fillStyle=WNDSTYLE;
g.fillRect(20,103,105,15);
g.font=FONT;
g.fillStyle=FONTSTYLE;
g.fillText("Hello World",25,115);          //⬅︎
}

function DrawTile(g,x,y,idx){
const ix=(idx%TILECOLUMN)*TILESIZE;
const iy=Math.floor(idx/TILECOLUMN)*TILESIZE;
g.drawImage(gImgMap,
ix,iy,TILESIZE,TILESIZE,
x,y,TILESIZE,TILESIZE);
}

function WmPaint(){
DrawMain();
const ca=document.getElementById("main");
const g=ca.getContext("2d");
WmSize();
g.drawImage(gScreen,
0,0,gScreen.width,gScreen.height,
0,0,gWidth,gHeight);
}

function LoadImage(){
gImgMap=new Image(); gImgMap.src="map.png";
gImgPlayer=new Image(); gImgPlayer.src="player.png";
}

window.onkeydown=function(ev){

}
const gMap=[
0,5,0,
2,0,9,0,
];

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

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

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

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

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

guest

回答1

0

ぼやけるのが分かるソースをどこかに上げてもらうのが一番ですが
canvasは画像なので表示サイズを調整したりするとどうせぼけます。
可能であればsvgなどで描画すればボケにくいと思いますが・・・

投稿2020/06/22 10:48

yambejp

総合スコア116724

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問