Java 如何从这个代码中得到整个多边形的颜色?

Java 如何从这个代码中得到整个多边形的颜色?,java,algorithm,graphics,variable-assignment,scanline,Java,Algorithm,Graphics,Variable Assignment,Scanline,下面是计算机图形学概念的代码扫描线算法,但另一个平面不是多边形而是有颜色的,我如何修复它 import javax.swing.*; import java.awt.*; public class CG4 extends JFrame { int m1 = -1,m2 = 0,m3 = 2; int ymax=400,ymin=100; int ytemp=ymin+1; public void Call(){ CG4 cg4 = new C

下面是计算机图形学概念的代码扫描线算法,但另一个平面不是多边形而是有颜色的,我如何修复它

import javax.swing.*;
import java.awt.*;

public class CG4 extends JFrame {
    int m1 = -1,m2 = 0,m3 = 2;
    int ymax=400,ymin=100;
    int ytemp=ymin+1;

    public void Call(){

        CG4 cg4 = new CG4();
        cg4.setTitle("ScanLine");
        cg4.setSize(1000,1200);
        cg4.setVisible(true);
        cg4.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    @Override
    public void paint(Graphics g){
        Calculate(g);
    }

    public void Calculate(Graphics g){

        g.drawLine(250,100,200,200);
        g.drawLine(200,200,200,300);
        g.drawLine(200,300,250,400);
        g.drawLine(250,400,300,300);
        g.drawLine(300,300,300,200);
        g.drawLine(300,200,250,100);


        while(ytemp<ymax){
            int x1,x2;

            x1=(ytemp-400)/m1;
            x2=(ytemp+600)/m3;
            g.setColor(Color.green);
            g.drawLine(x1+1, ytemp, x2-1, ytemp);
            ytemp++;

            try{
                Thread.sleep(10);
            }
            catch(InterruptedException ex){
                Thread.currentThread().interrupt();
            }
        }
    }
}
import javax.swing.*;
导入java.awt.*;
公共类CG4扩展了JFrame{
int m1=-1,m2=0,m3=2;
int-ymax=400,ymin=100;
int ytemp=ymin+1;
公开作废通知(){
CG4 CG4=新的CG4();
cg4.设置标题(“扫描线”);
cg4.设置大小(10001200);
cg4.setVisible(真);
cg4.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@凌驾
公共空间涂料(图g){
计算(g);
}
公共空间计算(图g){
g、 抽绳(250100200200);
g、 抽绳(200300);
g、 抽绳(200300250400);
g、 抽绳(250400300300);
g、 抽绳(300200);
g、 抽绳(300200250100);

虽然(您正在自己内部创建一个
CG4
public void Call…CG4=new CG4…
)-不确定,但这很可疑(我不完全理解您的问题)@CarlosHeuberger我从另一个主类调用这个函数,这段代码在三角形的情况下成功执行,我认为问题出在calculate()的while循环中,但我不能理解这一点。但代码中只有一个循环(某种)在两条边界线之间画线(在数学意义上),不,它在哪里使用多边形的坐标-这不起作用。它需要根据Y(范围100-200、200-300、300-400)使用不同的线段。您还应该知道,
绘制可以多次调用,在其中使用
睡眠
不是一个好主意((假设您不想使用
填充(形状))
绘制(形状)
填充和绘制
多边形的方法(
)我没有看到任何与填充三角形/凸多边形(扫描线算法)稍有相似的东西…对于初学者,您应该将其封装到一些函数中,并使用点将形状定义为参数…我只看到硬编码线…然后制作功能…因此,首先让左/右缓冲区为其提供数据并进行渲染以进行调试,并且只需一次工作,就可以用扫描线填充内部…请看您是crea在CG4内部设置一个
CG4
public void Call…CG4=new CG4…
)-不确定,但这很可疑(我不完全理解您的问题)@CarlosHeuberger我正在从另一个主类调用该函数,在三角形的情况下,该代码成功执行,我认为问题在calculate()的while循环中但是我不能理解这一点。但是代码中只有一个循环(某种)在两条边界线之间画线(在数学意义上),没有使用多边形坐标的地方-这不可行。它需要不同的线段,取决于Y(范围100-200,200-300,300-400)另外,您还应该注意,
paint
可以多次调用,在其中使用
sleep
不是一个好主意((假设您不想使用填充(形状)
绘制(形状)
方法来填充和绘制多边形
)我看不到任何与填充三角形/凸多边形(您的扫描线算法)稍有相似的东西…对于初学者,您应该将其封装到某个函数中,并使用点将形状定义为参数…我只看到硬编码线…然后制作功能…因此,首先让左/右缓冲区为其馈电并进行渲染以进行调试,并且只有一次工作时,应使用扫描线填充内部…请参阅