加入收藏 | 设为首页 | 会员中心 | 我要投稿 莱芜站长网 (https://www.0634zz.com/)- 云连接、建站、智能边缘云、设备管理、大数据!
当前位置: 首页 > 编程开发 > Java > 正文

java – 需要恢复图形原始状态时覆盖paint或paintComponent

发布时间:2020-07-09 00:42:08 所属栏目:Java 来源:互联网
导读:我意识到大部分的 Java代码覆盖了paint或paintComponent,大部分都没有恢复图形对象的旧状态,在他们改变了图形对象的状态之后.例如,setStroke,setRenderingHint … 我想知道在从方法返回之前是否是恢复旧状态的图形对象是一个好的做法.例如 public void paintC

我意识到大部分的 Java代码覆盖了paint或paintComponent,大部分都没有恢复图形对象的旧状态,在他们改变了图形对象的状态之后.例如,setStroke,setRenderingHint …

我想知道在从方法返回之前是否是恢复旧状态的图形对象是一个好的做法.例如

public void paintComponent(Graphics g) {
    super.paintComponet(g);
    Stroke oldStroke = g.getStroke();
    g.setStroke(newStroke);
    // Do drawing operation.
    g.setStroke(oldStroke);
}

这是一个好习惯吗?还是完成了?

解决方法

你不应该改变所传递的Graphics对象,而是在你所处理的副本上执行所有的图形操作.没有必要重新设置状态.
public void paintComponent(Graphics g1) {
    super.paintComponent(g1);
    final Graphics2D g = (Graphics2D)g1.create();
    try {
         // ...Whole lotta drawing code...
    } finally {
         g.dispose();
    }
}

(编辑:莱芜站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读