使用 Java 绘图:将 Borders/Outlines 应用于形状
Drawing with Java: Applying Borders/Outlines to Shapes
我不知道如何将 "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
}
}
我的输出:
正确输出:
当您调用 fillOval 时笔划并不重要,但当您调用 drawOval
时更重要。所以我推荐:
- 边打电话边
fillOval
- 在每个
fillOval
之后,然后将颜色更改为 Color.BLACK(或您想要的任何轮廓颜色),然后调用 drawOval
.
- 如果您最小化 GUI 然后恢复它,看看您的绘图会发生什么。
- 出于这个原因,为了避免 NullPointerException 错误,我们不建议您使用通过
getGraphics()
调用 Swing 组件获得的 Graphics 对象。这样的 Graphics 对象是短暂的。相反,按照教程和大多数其他类似问题会告诉你的那样做:在扩展 JPanel 或 JComponent 的 class 中的适当 paintComponent
覆盖内。
我不知道如何将 "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
}
}
我的输出:
正确输出:
当您调用 fillOval 时笔划并不重要,但当您调用 drawOval
时更重要。所以我推荐:
- 边打电话边
fillOval
- 在每个
fillOval
之后,然后将颜色更改为 Color.BLACK(或您想要的任何轮廓颜色),然后调用drawOval
. - 如果您最小化 GUI 然后恢复它,看看您的绘图会发生什么。
- 出于这个原因,为了避免 NullPointerException 错误,我们不建议您使用通过
getGraphics()
调用 Swing 组件获得的 Graphics 对象。这样的 Graphics 对象是短暂的。相反,按照教程和大多数其他类似问题会告诉你的那样做:在扩展 JPanel 或 JComponent 的 class 中的适当paintComponent
覆盖内。