1.求教一个 drawLine方法,求教从任意点画一条直线,直线上要显示出渐进色的变化。
2.在1.的基础上,要求用渐进色的线画一个栅格结构。我写了一些代码,但是关键的drawLine和栅格的画法还没研究出来,请大家帮忙想想啊~~import java.awt.*;
import java.awt.Color;
import java.awt.image.*;
import java.util.*;public class U01A1 extends Frame{
    
    final int W=300;
    final int H=200;
    Image m_Img;
    MemoryImageSource m_ImgScr;
    int [] m_Pix=new int[W*H];
    
    public U01A1(){
        super("Color Line");
        setSize(W,H);
        for(int i=0;i<m_Pix.length;++i){
            m_Pix[i]= 255<<0;                    
        }
        m_ImgScr=new MemoryImageSource(W,H,m_Pix,0,W);
        m_Img=createImage(m_ImgScr);
        setVisible(true);
        getGraphics().drawImage(m_Img,0,0,this);
    }
    
// 这个drawLine 方法没对,线的中间有断了一块....      public void drawLine(int x1,int y1,int x2,int y2,Color color1,Color color2){
       
        int col1=color1.getRGB();
        int col2=color2.getRGB();
        
        int dx=Math.abs(x2-x1);   
        int dy=Math.abs(y2-y1);
        
     
        if(dx>dy){
            for(int i=0;i<dx;++i){
                double dx1 = x2-x1;
                   double dy1 = y2-y1;                double i1 = dx1== dx?i:-i;
                double gesucht = (i1/dx1)*dy1;   // ??????????
                final int P = 100*i/dx;
                m_Pix[x1 + y1*W + (int)i1 + (int)gesucht*W]=colorShuffle(col1,col2,P); 
                
            }
        }
        else{
            for(int i=0;i<dx;++i){
                System.out.println("2.");
                double dx1 = x2-x1;
                   double dy1 = y2-y1;                double i1 = dy1==dy?i:-i;
                double gesucht = (i1/dy1)*dx1;
                final int P = 100*i/dy;
                m_Pix[x1 + y1*W + (int)i1 + (int)gesucht*W]=colorShuffle(col1,col2,P);
            }
        }
        m_Img.flush();
        getGraphics().drawImage(m_Img,0,0,this);
    }
    public void update(Graphics g) {}
    public void paint(Graphics g) {
        drawLine(100,150,50,100,Color.red,Color.black);    
    }
    
    int singleShuffle(int i1_part, int i2_part, int p) {
        return i1_part+(i2_part-i1_part)*p/100;
    }
    int colorShuffle(int i1, int i2, int p) {
        int red = singleShuffle((i1 >> 16) & 255,(i2 >> 16) & 255,p);
        int green = singleShuffle((i1 >> 8) & 255,(i2 >> 8) & 255,p);
        int blue = singleShuffle((i1) & 255,(i2) & 255,p);
        return (255 << 24) | (red << 16) | (green << 8) | blue;
    }
    public static void main(String[]args){
        U01A1 u= new U01A1();
    }
}