我使用负数让fillRect()
采取相反的方式。它在我的电脑上运行良好,但我的朋友看不到它正常工作。我该怎么办?
page.fillRect (12, 12, -5, 10);
答案 0 :(得分:1)
这有两种思想流派。
一个是任何具有负尺寸的多边形都是荒谬的,不应该被渲染 - 你的意思是它是-10像素宽?
另一个是负维度只是反转该维度轴上的多边形。
大多数绘画系统都适用后一种逻辑。我在使用Java绘画方面的经验一直都是这样的,虽然我不会经常有负面的维度,所以我的经验可能不算太多。
关于你能做什么:
就个人而言,如果可能的话,我更愿意要求更新的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);
}
另外,请注意,您需要与其他绘图操作类似。
最后,我会怀疑所有这些中的另一个错误,因为这种行为非常令人惊讶 - 我会将所有内容简化为最小的测试程序,使用调试输出并验证,然后再包装绘制原语的垃圾。
答案 1 :(得分:0)
我的猜测是你和你的朋友正在使用2个不同版本的Java。你的支持用负值填充,而你的支持则没有。 (甚至是sdk vs jre)。
显示的是,你应该用不同的方式编写这个,让你的applet在所有版本上运行。
为什么不简单地将你的x移动-5?
如果你想以更整洁的方式做到这一点
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));
}