2011-11-20 7 views
17

fillTextを描画したシンプルなキャンバスをセットアップしました。それはかなりいいようですが、ブラウザで提供されているズーム機能(Safari、Firefox)を使用すると、アンチエイリアスが醜いように見えます。HTML5キャンバスはブラウザベースの拡大をサポートしていますか?

私はscale()を使ってグリッドを上げようとしましたが、それは役に立ちません。

ズームされたブラウザウィンドウでもシャープに見えるキャンバスに描画する方法はありますか?


スクリーンショット(なしズーム):http://i.stack.imgur.com/CGWka.png

スクリーンショット(最大ズーム):http://i.stack.imgur.com/vNPjF.png

答えて

22

あなたは「ズーム」の項目になるための描画コマンドをする前に、キャンバスのコンテキストをスケーリングすることによりキャンバスを描くことができますより大きなサイズで、スムーズに。たとえば、描画アイテムをズームインしたり、デフォルトのプレゼンテーションでは利用できない詳細を表示したりすることができるthis example of mineを参照してください。

ブラウザズームの問題は、HTML5キャンバスはJPGまたはPNGのように、SVGとは異なり、個々のピクセルに基づいていることです。 10ピクセルで円を描き、ブラウザーに50ピクセルにズームするようブラウザに指示すると、ブラウザーは円滑な円を描画するためにデータを「発明」できません。それができる最善の方法は、画像補間を行い、「ビッグピクセル」の見た目をややスムーズにすることです。画像付き

ソリューション

、あなたはピクセルの多くの写真を撮る(例えば1000x800)と異なる、小さいサイズ(例えば250x200)でそれを表示するには、ブラウザを伝えることができます。ブラウザがズームインすると、は表示するピクセルがになります。例:

<img src="1000x800.jpg" style="width:250px; height:200px"> 

キャンバスでも同じことができます。キャンバス内のデータのピクセル数は、heightと属性(HTMLまたはJavaScript)で指定されます。 CSS ディスプレイサイズ(上記と同様)を別のサイズに個別に指定することができます。既存のキャンバスの描画コードを変更する必要はありません。単に:

  1. (例えば4)、
  2. 使用CSSを前に、すべての
  3. 、ディスプレイの高さを設定し、元のサイズに幅、およびする特定の要因によって、キャンバスのheightwidthを調整します他の描画コマンドは、ctx.scale(4,4)でコンテキストを拡大します。

編集:私はここで、この例を作成しました:
http://jsfiddle.net/u5QPq/embedded/result/code

をここであなたが拡大すると、それは次のようになります。追加ボーナスとして
enter image description here

、あなたのキャンバスもよりスムーズに印刷されます(誰かが木を殺す場合に備えて)。

+3

+1、非常にクールな例 – Joe

+0

あなたの答えをありがとう。それが私の必要なものです。 :-) – st4rbuck

+1

@ st4rbuckよろしくお願いします。この回答があなたの質問を解決した場合は、「大きなチェックマークをクリックしてください」(http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)に同意する必要があります。 – Phrogz

関連する問題