10

特定の幅 (ピクセル単位、理想的には「dp」) の線を使用してキャンバスに X/Y データを表示したいと考えています。Paint の setStrokeWidth(..) メソッドを試してみましたが、実際には線幅が変更されますが、必要なものではありません。私の場合、matrix.preScale(xScale, yScale) を使用してキャンバスを「実際の工学単位」にスケーリングしたので、X スケールは 0 から 100 を表し、Y は 0 から 1 です。Paint オブジェクトの setStrokeWidth() メソッドはマトリックスの preScale() 設定に従うようにストロークを設定します。つまり、横の線はすごく細く、縦の線はすごく太く描かれています。

線がどの方向に描かれても、その幅が一貫したピクセル数になるようにペイントを構成する方法はありますか?

線である Drawable を定義し、それから ShapeDrawable を作成し、それを Paint に適用しようとしましたが、実行時に厄介なクラス キャスト エラーが発生しました。これは間違ったやり方だと思いました。でも、あきらめるのが早すぎたのかもしれません。

いくつかの Android プロット/チャート パッケージが利用可能であることは理解していますが、サードパーティのソリューションを使用するのではなく、ここでプラットフォームを理解しようとしています。

ヒントをありがとう!リッチ

4

2 に答える 2

11

Android の例: paint.setStrokeWidth(3); このメソッドは線幅を設定します。この場合、線幅は 3 ピクセルです。BlackBerryでこの方法と同じように検索しています。

これを試して :

    Graphics.setColor(Color.RED);
    Graphics.setStrokeWidth(20);
    Graphics.drawRect(0, 0, 100, 100);

それらは net.rim.device.api.ui.Graphics パッケージで利用できます。

于 2011-06-14T07:05:03.970 に答える
0

マップにオーバーレイを描画するときも、同様のことをしなければなりませんでした。

ユーザーはマルチタッチを使用してマップを動的にスケーリングできるため、描画ルーチンに入ると、x軸とy軸のスケーリング係数を計算し、それをキャンバスに適用してマップを描画し、このスケーリング係数を反転して適用します。オーバーレイの線幅に合わせます。したがって、キャンバスはスケーリングされ、オーバーレイはスケーリングされてからアンチスケーリングされるため、実際には固定幅になります。

これは、実際のパフォーマンスに影響を与えることなく、非常にうまく機能することがわかりました。

于 2011-07-22T11:24:59.717 に答える