4

などのような数字canvasを処理することができますか?または、これは内部的に整数に丸められます(はいの場合、どのように?)。double0.5, 10.4

キャンバス上の要素はピクセルとして表現されていると思うので、私は尋ねています。

また、ピクセルは常にサイズである1x1ため(間違っている場合は修正してください)、doubleキャンバス関数に値を指定するのではなく、より正確に描画できるという利点はありintegerますか?

4

2 に答える 2

1

ブラウザは分率座標を使用してピクセルレベルで物事を補間できるため、分率座標が可能です。アウトラインの場合、これはアンチエイリアシングになりますが、内部ピクセルの場合、この補間によって少しあいまいになる可能性があります。特に、オブジェクトが個々のピクセルで形成されているのではなく、円などのかなり滑らかなものである場合、サブピクセルレベルでレンダリングすると、アンチを認識した方法により、実際に物理的に可能な解像度よりも高い解像度の印象をユーザーに与えることができます。 -エイリアスのアウトライン。

しかし、raina77owがあなたの質問へのコメントで述べたように、これはブラウザによる追加の作業という点でコストがかかり、パフォーマンスの低下を引き起こします。したがって、これらのガイドラインを使用して決定を下します。

  • 描画するものがピクセルの領域で構成され、すべてが同じ色で塗りつぶされ、隣接する領域間のコントラストが高い場合、二重座標はぼやけを引き起こし、見栄えが悪くなる可能性があるため、整数座標を使用します。
  • あまり頻繁に描画しないものがいくつかあり、幾何学的な精度が望ましい場合は、二重座標を使用します。
  • パフォーマンスを心配する必要がある場合は、整数座標を使用してください。

あなたの質問もとタグ付けされているので:を見てくださいRenderingHints。ストローク制御設定は、座標が丸められるかどうかを制御しますが、アンチエイリアシングと補間の設定は、最初はベクターアウトライン用、2番目はラスターイメージ用の小数位置のレンダリング方法に影響します。

于 2013-03-25T13:13:05.620 に答える
0

いいえ、キャンバスがダブルポイントを渡すことができるとは思いません。ただし、回避策は、doubleをintにキャストすることです。このように、数値はintのように扱われ、通常どおりに機能します。キャスティングは次のよう
db.drawImage(image, (int) x, (int) y;
になります。これをゲームで使用すると、うまく機能します。

于 2013-08-17T11:12:53.837 に答える