import java.awt.*;
import javax.swing.*;
public class test{
MyCanvas palette;
JFrame mainJFrame;
double f(double x) {
return (Math.sin(2*x));
}
public class MyCanvas extends JPanel{
public void paint(Graphics g) {
double x0,x1,y0,y1,xd,yd;
double max=5.0;
int w,h,hw,hh;
w=getWidth();
h=getHeight();
hw=w/2; hh=h/2;
g.drawString("Sin[2x]",10,40);
g.setColor(Color.red);
g.drawString("0",hw+5,hh+12);
g.drawString(""+max,hw-20,80);
g.drawString(""+max,w-20,hh+12);
g.drawLine(0,hh,w,hh);
g.drawLine(hw,0,hw,h);
xd=2*max/w; //这段代码.
yd=hh/max; //这段代码.
g.setColor(Color.blue);
for (int x=0 ; x<w-1; x++) {
x0=-max+x*xd; y0=f(x0)*yd;//这段代码.
x1=x0+xd; y1=f(x1)*yd;//这段代码.
g.drawLine(x,(int)(hh-y0),x+1,(int)(hh-y1));
}
}
}
public test(){
mainJFrame=new JFrame("用JPanel画图示例");
palette=new MyCanvas();
mainJFrame.add(palette);
mainJFrame.setSize(300,300);
mainJFrame.setVisible(true);
mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args){
new test();
}
}如上述所见,画SIN函数曲线通过直接连线各个坐标点间的直线形成SIN曲线,它是如何在图版上模拟放大的?另外那几条不懂的语句的是不是把界面上的各个点放大?如何实现的,可以举例帮我分析下吗,谢谢了!!!
import javax.swing.*;
public class test{
MyCanvas palette;
JFrame mainJFrame;
double f(double x) {
return (Math.sin(2*x));
}
public class MyCanvas extends JPanel{
public void paint(Graphics g) {
double x0,x1,y0,y1,xd,yd;
double max=5.0;
int w,h,hw,hh;
w=getWidth();
h=getHeight();
hw=w/2; hh=h/2;
g.drawString("Sin[2x]",10,40);
g.setColor(Color.red);
g.drawString("0",hw+5,hh+12);
g.drawString(""+max,hw-20,80);
g.drawString(""+max,w-20,hh+12);
g.drawLine(0,hh,w,hh);
g.drawLine(hw,0,hw,h);
xd=2*max/w; //这段代码.
yd=hh/max; //这段代码.
g.setColor(Color.blue);
for (int x=0 ; x<w-1; x++) {
x0=-max+x*xd; y0=f(x0)*yd;//这段代码.
x1=x0+xd; y1=f(x1)*yd;//这段代码.
g.drawLine(x,(int)(hh-y0),x+1,(int)(hh-y1));
}
}
}
public test(){
mainJFrame=new JFrame("用JPanel画图示例");
palette=new MyCanvas();
mainJFrame.add(palette);
mainJFrame.setSize(300,300);
mainJFrame.setVisible(true);
mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args){
new test();
}
}如上述所见,画SIN函数曲线通过直接连线各个坐标点间的直线形成SIN曲线,它是如何在图版上模拟放大的?另外那几条不懂的语句的是不是把界面上的各个点放大?如何实现的,可以举例帮我分析下吗,谢谢了!!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货