2010-11-18 6 views
3

負の数を使用してfillRect()の逆の方向を使用しています。それは私のコンピュータではうまくいくが、友人は正しく動作しているとは見えない。私は何をしますか?負の数のfillRect()

page.fillRect (12, 12, -5, 10); 
+1

もっときちんとした方法でそれをしたい場合は? Javaのバージョンは? – Riduidel

+0

私はWindowsを使用しています。私の友人はWindowsを使用しています。私の友人は最新のJavaを使用しています(彼はそれを見るために自分のコンピュータにインストールしなければなりませんでした)。私は日食を使っていた。それはうまくいったので、私は自分のウェブサイトにアップロードしました。ハードリフレッシュした後でも、クロムとFirefoxの両方で動作しました。 – Strawberry

答えて

0

あなたとあなたのfreindが2種類のJavaを使用していると思います。あなたのサポートは負の値で塗りつぶされ、あなたの支持者はそうではありません。 (またはsdk対jre)。

これは、アプレットがすべてのバージョンで実行されるように、これを別の方法で記述する必要があることを示しています。

xを-5に移動してみませんか?

あなたは、あなたとあなたの友人が使用しているOSは何

public void myfillRect(graphics page, int x, int y, int width, int height){ 
    if(width <0) 
     x-=Math.abs(width); 
    if(height <0) 
     y-=Math.abs(height); 

    page.rectfill(x,y,Math.abs(width), Math.abs(height)); 
} 
+0

さて、それは棒グラフなので、私はそれが負の方向に向かいたいと思っています。 – Strawberry

+0

私はそれを行うことができますソリューションを投稿します。矩形を後方にペイントするように求めるのではなく、単に前方にペイントするだけですが、さらに後ろからペイントすることで、同じ効果が得られます。別の問題がないのですか? –

+0

あなた、私の友人、この緑のチェックマークを削除します。 – Strawberry

1

これには2つの考え方があります。

1つは、負の次元を持つポリゴンは無意味であり、レンダリングすべきではないということです。-10ピクセル幅の意味は何ですか?

もう1つは、負のディメンションは、そのディメンションの軸上のポリゴンを単に反転させることです。

ほとんどの塗装システムは後者のロジックを適用します。 Javaでのペインティングでの私の経験は、これまでは常にそうでしたが、私はしばしば負の次元を持っていなかったので、私の経験はそれほど重要ではないかもしれません。あなたは何ができるかについては

  1. あなたはあなたの友人が彼のJavaのバージョンをアップデートする必要があるかもしれません。
  2. それ以外の場合は、負の次元をチェックし、x、y原点を転置して次元を正にすることによって、自分自身で逆変換を実行する必要があります。つまり、矩形[10,10、-5,5]は[5,10,5,5]と空間的に等価です。負の次元は原点座標に加算され、絶対座標になります。注意してください、これは負の起源になる可能性がありますが、うまくいけば、図面システムはかなりが台無しです。

可能であれば、個人的には新しいJVMが必要です。

そうでなければ、私のお勧めのコードは次のようになります。また

public void fillRect(Graphics gc, int x, int y, int width, int height) { 
    if(width <0) { x+=width; width =-width; } 
    if(height<0) { x+=height; height=-height; } 
    gc.fillRect(x,y,width,height); 
    } 

、あなたが他の描画操作のための同様の必要があることに注意してください。

最後に、動作が非常に驚くべきなので、私はこのすべてで別の間違いが疑わしいでしょう - 私は、最小限のテストプログラム、デバッグ出力、プリミティブのラップロードをラップする前に検証します。

+0

それは実際に私の目標です。私はそれを逆にして反対方向に向かいます。 – Strawberry

+0

私は負のピクセルをサポートしていないという論理はばかげていると思いますが、この例ではすべてのバージョンが同じであるとは限りません。 –