首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Graphics2D使用PostModern

Graphics2D使用PostModern
EN

Stack Overflow用户
提问于 2013-05-14 13:42:15
回答 1查看 210关注 0票数 0

在下面的代码中,将fill更改为draw会产生意外的结果。附图展示了红色和绿色矩形的draw所产生的不受欢迎但备受赞赏的后现代效果。

仿射变换不应该是问题的一部分,但正如福尔摩斯所说,一旦你排除了所有其他可能性...因此,我将解释这种转换。我解了一堆方程,弄清楚如何让窗口显示一个笛卡尔坐标系,(-2, -2)在左下角,(+2, +2)在右上角。

这是一个自包含的示例。尝试将任何draw更改为fill,或反之亦然,以实现您自己的自定义艺术,您可以在Oracle office中装框。

我使用的是JavaSE7,JDK 1.7.0_21!

代码语言:javascript
复制
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;

import javax.swing.JComponent;
import javax.swing.JFrame;

public class G {

  public static void main (String [] args) {
    JFrame frame = new JFrame(G.class.getCanonicalName());
    JComponent component = new JComponent() {
      private static final long serialVersionUID = 1L;

      @Override
      protected void paintComponent (Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g.create();
        AffineTransform xform = new AffineTransform(getWidth() / 4, 0, 0, - getHeight() / 4, getWidth() / 2, getHeight() / 2);
        g2.setTransform(xform);
        paint2D(g2);
        g2.dispose();
      }

      protected void paint2D (Graphics2D g2) {
        g2.setColor(Color.RED);
        g2.draw(new Rectangle2D.Double( 0,  0, 1, 1));
        g2.setColor(Color.GREEN);
        g2.draw(new Rectangle2D.Double(-1, -1, 1, 1));
        g2.setColor(Color.BLUE);
        g2.fill(new Rectangle2D.Double(-1,  0, 1, 1));
        g2.setColor(Color.YELLOW);
        g2.fill(new Rectangle2D.Double( 0, -1, 1, 1));
      }
    };
    frame.setLayout(new BorderLayout());
    frame.add(component, BorderLayout.CENTER);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 400);
    frame.setVisible(true);
  }
}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-14 13:54:54

它是1个单位的默认行程设置。我在每个维度上增加了从-20+20的坐标空间,并绘制了10单位宽和高的矩形,这证实了问题,如下图所示。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16535904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档