【问题标题】:Drawing with Java: Applying Borders/Outlines to Shapes使用 Java 绘图:将边框/轮廓应用于形状
【发布时间】:2016-09-28 14:26:17
【问题描述】:

我不知道如何获得“g.setStroke(new BasicStroke(5));”设置为我创建的所有形状(在本例中为椭圆形)。

我的代码:

import java.awt.*;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.BasicStroke;

public class Rings 
{
    public static void main(String[] args) 
    {
        DrawingPanel panel = new DrawingPanel(300, 300);

        Graphics2D g = panel.getGraphics();
        g.setStroke(new BasicStroke(5)); // Sets Outer Line Width of Shapes
        g.setColor(new Color(255, 0, 0));
        g.fillOval(50, 50, 200, 200); // Large Oval
        g.setColor(new Color(200, 0, 0));
        g.fillOval(100, 100, 100, 100); // Medium Oval
        g.setColor(new Color(150, 0, 0));
        g.fillOval(125, 125, 50, 50); // Small Oval
        g.setColor(new Color(100, 0, 0));
        g.fillOval(137, 137, 25, 25); // Tiny Oval
    }
}

我的输出:

正确的输出:

【问题讨论】:

    标签: java drawing shapes stroke oval


    【解决方案1】:

    当您调用 fillOval 时,笔划并不重要,但当您调用 drawOval 时更重要。所以我推荐:

    • 边做边打电话fillOval
    • 在每个 fillOval 之后,将颜色更改为 Color.BLACK(或您想要的任何轮廓颜色),然后调用 drawOval
    • 看看如果您最小化 GUI 然后恢复它,您的绘图会发生什么。
    • 出于这个原因,并且为了避免 NullPointerException 错误,我们不建议您使用通过在 Swing 组件上调用 getGraphics() 获得的 Graphics 对象。这样的 Graphics 对象是短暂的。而是按照教程和大多数其他类似问题将告诉您的那样做:在扩展 JPanel 或 JComponent 的类中的正确 paintComponent 覆盖内。

    【讨论】:

    • 有没有办法改变描边颜色?
    • @Andrew:不,Stroke 没有颜色——它不是 Stroke 的属性。相反,它是 Graphics 对象的一个​​属性,您可以像已经在做的那样更改它。
    猜你喜欢
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多