1

Android タブレットで XY グラフの描画をテストしています。ICS を実行している Samsung Galaxy Tab 2 (7") です。

オーバーライドされた onDraw メソッドを使用して View サブタイプを作成しました。その仕事は、一連の接続された線分として (x,y) 座標の配列を単純にプロットすることです。y 値を表す float 配列があり、x 値は配列インデックスです。y の値は -1 から 1 までの範囲で、約 10 個の値があります。ものすごく単純。

ターゲット キャンバスは画面上の正方形で、たとえば約 480 x 480 ピクセルで、+1 が画面の上部に、-1 が画面の下部に、0 番目の値が一番左に、N 番目の値が一番左にあります。極右。

したがって、X 軸と Y 軸に沿った「ワールド座標」から「スクリーン座標」への変換は均一ではありません。onDraw メソッドで、Canvas オブジェクトに移動、拡大縮小、別の移動操作を適用してから、ヘアライン ストローク幅が 0 のペイント ペンを使用して線セグメントを描画します。

結果は、幅がヘアラインではないグラフになります。明らかに、私のスケール操作は線セグメントを太くしているので、なだらかな傾斜の線は急な線よりも太く見えます。世界座標の範囲を両方の軸に沿って等しくなるように変更すると (正方形のキャンバスに一致するように)、この問題はなくなります。

興味深いことに、この問題はタブレットで発生しますが、Android ICS エミュレーターでは発生しません。

これに関する任意の考えをいただければ幸いです。私の好みは、変換が何であれ、ヘアライン グラフを使用することです。

4

1 に答える 1

0

この問題の明らかな回避策は、キャンバスのマトリックスをそのままにして、自分で変換/拡大縮小/変換操作(ワールドから画面座標への変換)を実行してから、幅のあるペイントペンを使用して画面座標を使用して描画することです。 0の。

于 2012-07-05T18:08:07.460 に答える