Java 用颜色填充由Line2D制成的形状
在java中,我通过使用2D线连接点来创建闭合形状。如何绘制/填充颜色?我不知道您的代码是什么,但我假设您有一个类似这样的类: 您正在搜索该方法Java 用颜色填充由Line2D制成的形状,java,graphics2d,Java,Graphics2d,在java中,我通过使用2D线连接点来创建闭合形状。如何绘制/填充颜色?我不知道您的代码是什么,但我假设您有一个类似这样的类: 您正在搜索该方法 公共类应用程序扩展JFrame{ 公共应用程序(){ 超级(“绘画”); requestFocus(); DrawingPane dpane=新DrawingPane(); setContentPane(dpane); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 设置大小(600600); 可设置大小
公共类应用程序扩展JFrame{
公共应用程序(){
超级(“绘画”);
requestFocus();
DrawingPane dpane=新DrawingPane();
setContentPane(dpane);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
设置大小(600600);
可设置大小(真);
setVisible(真);
长启动=System.currentTimeMillis();
while(true){
long now=System.currentTimeMillis();
如果(现在开始>10){//FPS
开始=现在;
dpane.revalidate();
dpane.repaint();
}
}
}
公共静态void main(字符串[]args){
新应用程序();
}
类DrawingPane扩展了JPanel{
@凌驾
公共组件(图形g2){
图形2d g=(图形2d)g2;
g、 setRenderingHint(RenderingHits.KEY\u ANTIALIASING,RenderingHits.VALUE\u ANTIALIAS\u ON);
g、 设置颜色(颜色为黑色);
//-图纸-
//你不需要任何台词
点[]点=新点[]{新点(0,0),新点(1,0),新点(1,1)};
int[]points_x=新int[points.length];
int[]points_y=新int[points.length];
对于(int p=0;p
首先,通过将线条附加到以下形状来创建单个形状:
然后,将其传递给:
请提供您的代码。您可以从查看并尝试一些内容开始。如果你有一个特别的问题,关于你已经尝试过的东西,那么不要犹豫问一个问题,提供你已经尝试过的东西以及为什么它不适合你
public class App extends JFrame{
public App() {
super("Paintings");
requestFocus();
DrawingPane dpane=new DrawingPane();
setContentPane(dpane);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600, 600);
setResizable(true);
setVisible(true);
long start = System.currentTimeMillis();
while (true){
long now = System.currentTimeMillis();
if (now-start > 10) { //FPS
start=now;
dpane.revalidate();
dpane.repaint();
}
}
}
public static void main(String[] args) {
new App();
}
class DrawingPane extends JPanel{
@Override
public void paintComponent(Graphics g2){
Graphics2D g=(Graphics2D)g2;
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setColor(Color.BLACK);
//-THE DRAWING-
//You wont need any lines
Point[] points=new Point[] {new Point(0,0),new Point(1,0),new Point(1,1)};
int[] points_x=new int[points.length];
int[] points_y=new int[points.length];
for (int p=0; p < points.length; p++) {
points_x[p]=points[p].x;
points_y[p]=points[p].y;
}
g.drawPolygon(points_x,points_y,points.length); //Draw the outlines
g.fillPolygon(points_x,points_y,points.length); //Filled Polygon
}
}
}
private Path2D createSingleShape(Line2D[] lines) {
Path2D path = new Path2D.Float();
for (Line2D line : lines) {
path.append(line, path.getCurrentPoint() != null);
}
path.closePath();
return path;
}
@Override
protected void paintComponent(Graphics graphics) {
super.paintComponent(graphics);
Graphics2D g = (Graphics2D) graphics;
Shape shape = createSingleShape(lines);
g.fill(shape);
}