2011-12-20 7 views
1

ティックマーカーは、ゼロから始まり、グラフィックオブジェクトの幅の100%になる10パーセントの間隔で描画する必要があります。あなたが見ることができるように、100%は6つの指標の実際の終了前にあるインデックス550、でマークされるということである、均等に区切られたティックマーカー

int width = 556; 
int k = width/10; 
for(int i = 0;i<width;i++){ 
    if(i%k==0){ 
     draw marker on gui indicating a ten percent increment (10,20,etc. up to 100%) 
    } 
} 

問題:

私のような何かをするだろう。もちろん、これは容認できないものです。

もちろん、幅の実際の数値は変更される変数です。

上記のコードを変更して、マーカーを均等に配置し、最後に100%マーカーを配置する方法を教えてもらえますか?

10番目のマーカーを削除して手動でマーカーを100%に配置すると、マーカー間のスペースが均等にならない場合があります。これを行うより良い方法が必要なので、私は誰かが私を見せることを望んでいます。

+2

なぜそれが複雑になるのですか?あなたは最初のマーカーがどこに行くのか知っています。もう1つはどれくらい遠くに行くのでしょうか?そして3番目? (ループが0から始まると仮定すると、3番目のマーカはインデックス2を持ち、2倍は何を探しているのでしょうか? – Bart

+0

@Bart、私は最初のものがどこに行くのか知っています。私は最後のものがどこに行くのか知っています。私は上記の例で6の残りを知っています。私が知りませんが残りの目盛りの間に残りを効率的に配布して、目盛りが均等に配置されるようにする方法です。残りは変数になります。あなたはもっと具体的にあなたが意味することができますか? +1は私を助けようとしています。 – CodeMed

答えて

1

に提案を提供するすべての人に感謝します。私が使用して解決した解決策は、幅と高さが目盛りの間隔の整数倍になるように四角形の大きさを制御することでした。そうすれば、残りの部分をシャッフルする必要はありません。代わりに、矩形の周りのバッファスペースは、フレームのサイズ変更ごとに残りの部分を占めています。矩形の寸法自体は常に目盛りの間隔の整数倍であるため、刻々とした刻み目の奇妙な間隔にはもはや問題はありません。

もう一度みなさんに感謝します。私はちょっと助けようとした人に+1ポイントを追加しました。

3

小数点以下の桁数を使用してください。 すべてのmod操作を実行しないでください。 10回の繰り返しの単純なループ、各マーカーのいずれかの操作を行います:

int width = 556; 
    double dist = ((double)width)/9.0; 
    double k = 0; 
    for(int i = 0; i < 10; i++){ 
     // Draw marker at (int)k 
     k += dist; 
    } 
+0

は、残りの同じ問題、および不均一な間隔で私を残しませんか?助けようとすると+1。 – CodeMed

+1

いいえ、そうはなりません。あなたが二重を使用しているので、小数点以下桁があります。あなたはintを使っていたので、前にはなかった。このため、実行時にエラーが発生します。しかし、マーカーをkに描画して、intにキャストすると、等間隔の目盛りを作ることができます。あなたのプログラムで試してみてください。原則として動作するはずです。 – eboix

+3

また、このような余りをシャッフルしているので、ダニが目に不均一に広がっているように見えることがあります。これを解決するには、アンチエイリアス処理された線を使用して10進数値で描画します。 – Pedery

関連する問題