java写的圆(能自适应程序窗口)
2008年09月11日 星期四 下午 03:49
这几天对曲线感兴趣,所以搞了一些。下面贴上我写的圆,各位指点指点。。。。
import java.applet.*;
import java.awt.*;
import java.math.*;
public class mycircle extends Applet {
public void paint(Graphics g){
int width=getWidth(),height=getHeight(); //获取当前程序窗口的大小
if(width>height)width=height;
int r=2*width/5; //让半径自适应窗口大小
g.setColor(Color.red); //背景设为红色
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.black); //画笔设为黑色
for(int thita=0;thita*3.14/1500<6.29;thita++){
int x=(int)(r*Math.cos(thita*3.14/100))+getWidth()/2, //根据圆心角thita的变化,给横坐标和纵坐标赋值
y=(int)(r*Math.sin(thita*3.14/100))+getHeight()/2; //圆心的位置也自适应居中。
g.drawLine(x,y,x,y); //画圆。也可以用drawString()打印一个英语的句号(.),效果差不多。
}
}
}
//下面的语句是为了在命令行情况下用appletviewer编译时可以找到这个类的一句话,不要删掉!
//<applet code=mycircle width=300 height=200></applet>
-----------------------------------------
附上截图:
解释得很清楚了,有问题大家交流交流。。。
如果把上述代码再改一下么变成下面。。。
import java.applet.*;
import java.awt.*;
import java.math.*;
public class mycircle extends Applet {
public void paint(Graphics g){
int width=getWidth(),height=getHeight(); //获取当前程序窗口的大小
int rx=2*width/5,ry=2*height/5;//让半径自适应窗口大小
g.setColor(Color.red); //背景设为红色
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.black); //画笔设为黑色
for(int thita=0;thita*3.14/1500<6.29;thita++){
int x=(int)(rx*Math.cos(thita*3.14/100))+getWidth()/2, //根据圆心角thita的变化,给横坐标和纵坐标赋值
y=(int)(ry*Math.sin(thita*3.14/100))+getHeight()/2; //圆心的位置也自适应居中。
g.drawLine(x,y,x,y); //画圆。也可以用drawString()打印一个英语的句号(.),效果差不多。
}
}
}
//下面的语句是为了在命令行情况下用appletviewer编译时可以找到这个类的一句话,不要删掉!
//<applet code=mycircle width=300 height=200></applet>
那么这个小程序就变成了很以在圆和椭圆之间连续变化的一个图形了,随着程序窗口的变化,该图形就会改变。。下面贴图。。
呵呵,我想大家都明白其中的道理,所以我就不多说了。。。
2008年09月11日 星期四 下午 03:49
这几天对曲线感兴趣,所以搞了一些。下面贴上我写的圆,各位指点指点。。。。
import java.applet.*;
import java.awt.*;
import java.math.*;
public class mycircle extends Applet {
public void paint(Graphics g){
int width=getWidth(),height=getHeight(); //获取当前程序窗口的大小
if(width>height)width=height;
int r=2*width/5; //让半径自适应窗口大小
g.setColor(Color.red); //背景设为红色
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.black); //画笔设为黑色
for(int thita=0;thita*3.14/1500<6.29;thita++){
int x=(int)(r*Math.cos(thita*3.14/100))+getWidth()/2, //根据圆心角thita的变化,给横坐标和纵坐标赋值
y=(int)(r*Math.sin(thita*3.14/100))+getHeight()/2; //圆心的位置也自适应居中。
g.drawLine(x,y,x,y); //画圆。也可以用drawString()打印一个英语的句号(.),效果差不多。
}
}
}
//下面的语句是为了在命令行情况下用appletviewer编译时可以找到这个类的一句话,不要删掉!
//<applet code=mycircle width=300 height=200></applet>
-----------------------------------------
附上截图:
解释得很清楚了,有问题大家交流交流。。。
如果把上述代码再改一下么变成下面。。。
import java.applet.*;
import java.awt.*;
import java.math.*;
public class mycircle extends Applet {
public void paint(Graphics g){
int width=getWidth(),height=getHeight(); //获取当前程序窗口的大小
int rx=2*width/5,ry=2*height/5;//让半径自适应窗口大小
g.setColor(Color.red); //背景设为红色
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.black); //画笔设为黑色
for(int thita=0;thita*3.14/1500<6.29;thita++){
int x=(int)(rx*Math.cos(thita*3.14/100))+getWidth()/2, //根据圆心角thita的变化,给横坐标和纵坐标赋值
y=(int)(ry*Math.sin(thita*3.14/100))+getHeight()/2; //圆心的位置也自适应居中。
g.drawLine(x,y,x,y); //画圆。也可以用drawString()打印一个英语的句号(.),效果差不多。
}
}
}
//下面的语句是为了在命令行情况下用appletviewer编译时可以找到这个类的一句话,不要删掉!
//<applet code=mycircle width=300 height=200></applet>
那么这个小程序就变成了很以在圆和椭圆之间连续变化的一个图形了,随着程序窗口的变化,该图形就会改变。。下面贴图。。
呵呵,我想大家都明白其中的道理,所以我就不多说了。。。