2017-03-23 2 views
-1

シェイプをビットマップに描画するとシェイプがぼやけて、シェイプをキャンバスにまっすぐに描画するのはなぜですか?シェイプをビットマップに描画すると品質が低下するのはなぜですか?

+1

そうではありません。描画は描画です - どちらの場合でも 'Canvas'を使用しています – pskink

+0

本当ですか?私は現在、ビットマップに形状の束を描画し、そのビットマップをキャンバスに描画します。シェイプはビットマップなしでキャンバスに直接描画する場合ほどシャープではありません。 – Shpanders

+0

あなたのコードを投稿してください – pskink

答えて

1

ビットマップは、ポイント(ピクセル)で構成されるrasterized computer imageです。

Canvasクラスは、「描画」呼び出しを保持します。

形状とは、形状(ベクトル状)の抽象的な定義です。まっすぐに正確ではありませんキャンバス

に図形を描画する

、多分あなたはあまりにもビットマップである、デバイスの画面にまっすぐ意味。

描画にはCanvasを使用するには、呼び出しをホストするキャンバス、ターゲットとしてのビットマップ、および一部の描画プリミティブ(シェイプは1)、およびペイント(描画プリミティブのペイント方法の情報が含まれています)が必要です。

ターゲットビットマップに形状を描画すると、ターゲットビットマップのピクセルにエイリアスが適用されます。つまり円はターゲットビットマップの矩形ピクセルによって作成された近似に変わります。

具体的には、ビットマップの解像度が画面の解像度より低く、ターゲットの画面ビットマップに低解像度のビットマップを描画すると、アップスケーリングされた画像をaビットがぼやけて大きい矩形のピクセル化を避けることができます(または、それはまた、他の方法、高すぎる/細い等高線を含む高解像度のビットマップを縮小することもあります。縮小されたときに別名が付けられ、アンチエイリアスフィルタリングを行っても、少し)。あるいは、ぼかしを起こすような設定のペイントを使用しているかもしれません(まれに、偶然に作成することは考えられませんでした)。

両方のターゲットに使用する場合同じ密度(1ピクセルの解像度)のビットマップと同じペイント方法を使用すると、結果は同じになります。また、使用する限り、ビットマップからビットマップに形状を描画します全体のピクセル座標/サイズ、およびフィルタリングなしの場合、結果は画面のビットマップに直接描画する場合と同じ結果になります。

最初にビットマップとスクリーンビットマップのサイズを確認してから、ペイント設定と追加のキャンバス引数をチェックしてビットマップを描画します。何らかのフィルタリングでアップスケール/ダウンスケーリングしなくても可能です。

+0

ありがとう、私は原因がビットマップが1920 x 1920であり、ターゲット画面のサイズが1080 x 1920であるためにダウンスケーリングされている可能性が高いと思います。 – Shpanders

+0

@Shpandersは、ペイントビットマップ描画メソッドでの追加フィルタリング(スケール1.0で同じサイズを描画するなど、0.5,0.5の位置など)では、一部の描画エンジン/設定で、元のピクセルを半分に移動するフィルタリングが発生します)。 ... 1.0の縮尺が鮮明であれば、1920x1920の1080x1920の描画領域を描画することも考えられますが(画面サイズ外の領域は無視してください)、最初は画面サイズのビットマップから始めることができます。 – Ped7g

関連する問題