Java AWT Canvas:如何在同一窗口绘制多颜色图形?
解决Java AWT单图形独立设置颜色的问题
你当前的问题出在调用setForeground()方法上——这个方法是修改Canvas组件本身的前景色,组件关联的Graphics对象默认会继承这个颜色,后续所有绘制操作都会使用新的前景色,重绘时所有图形都会用新颜色重新渲染,导致看起来所有图形颜色都被改变。
要实现单个图形独立设置颜色,你应该直接操作Graphics对象的颜色,而非修改组件的前景色。具体使用Graphics.setColor()方法为每个绘制的图形单独指定颜色:
setBackground(Color.WHITE); // 给当前Graphics对象设置黑色,绘制第一个矩形 g.setColor(Color.BLACK); g.fillRect(20,20,10,30); // 切换Graphics对象颜色为蓝色,绘制第二个矩形 g.setColor(Color.BLUE); g.fillRect(40,40,20,30);
setColor()方法只会影响后续通过该Graphics对象执行的绘制操作,已经完成的图形不会被修改,这样就能实现每个图形的颜色独立控制,不会互相干扰。
内容的提问来源于stack exchange,提问作者new here
相关产品推荐
相关产品推荐

