【问题标题】:How to draw 'biohazard' with swing如何用秋千画出“生化危机”
【发布时间】:2010-04-25 21:20:35
【问题描述】:

我正在为即将到来的测试练习挥杆能力,Fried 让我想到了画这样的生物危害标志:

alt text http://img62.imageshack.us/img62/8372/lab6b.gif

我可以用 Elipse2D 绘制圆圈,但是我需要以某种方式切割这 3 个三角形。有什么想法可以做到吗?

【问题讨论】:

  • 我知道我很迂腐,但那是辐射危险符号,而不是生物危害符号;) 虽然如果您正在练习,实际的生物危害符号可能是另一个不错的尝试使用 Swing 的符号。它有很多圈子:) (en.wikipedia.org/wiki/File:Biohazard.svg)。
  • @Rich 对于 SO 来说,这将是一场非常棒的编码竞赛 :)
  • @Chris:我实现了真正的生物危害,但我认为这不是放置它的正确位置..
  • 张贴到 Pastebin (pastebin.com) 然后给我们链接:)
  • @Chris :嘿,请在pastebin.com/HSNFx7Gq 找到它,我把外三角外套留给读者。 :) 屏幕截图如下所示。下面的一个看起来不如 svg 对应的好。但那是 java2d 原始图形,

标签: java swing shapes


【解决方案1】:

您可以为此使用 Java2D 和画布。您可能使用的是 Circle 和 Arc。你应该有三个 30 度的圆弧。

我尝试在框架上使用简单的图形。

这是一个尝试

import java.awt.Color;
import java.awt.Graphics;

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

public class Biohazard {
    public static void main(String[] args) {
        new Biohazard();
    }

    public Biohazard() {
        JFrame frame = new JFrame("Biohazard");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(new MyComponent());
        frame.setSize(260, 280);
        frame.setVisible(true);
    }

    public class MyComponent extends JComponent {
        public void paint(Graphics g) {
            int height = 120;
            int width = 120;
            g.setColor(Color.yellow);
            g.fillOval(60, 60, height, width);
            g.setColor(Color.black);
            g.drawOval(60, 60, height, width);

            int swivels = 6;
            int commonx, commony, commonh, commonw;

            for(int i=0;i<swivels;i++){
                commonx = commony = 120-i*10;
                commonh = commonw = i*20;
                g.drawArc(commonx, commony, commonh, commonw, 60 , 60);
                g.drawArc(commonx, commony, commonh, commonw, 180 , 60);
                g.drawArc(commonx, commony, commonh, commonw, 300 , 60);
            }
        }
    }
}

原文:源代码可以在http://pastebin.com/HSNFx7Gq找到

【讨论】:

    【解决方案2】:

    您可以使用Arc2D 类通过指定startextent 参数(以度为单位)来绘制每条线。

    【讨论】:

      【解决方案3】:

      也许这实际上很容易(我不确定 Swing API 如何处理行)。从圆心到圆周上的点画线,画线时跳过这些部分。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-14
        • 1970-01-01
        • 1970-01-01
        • 2011-02-17
        • 1970-01-01
        • 1970-01-01
        • 2023-02-26
        相关资源
        最近更新 更多