7. 【例6-1】 绘制直线、矩形和圆的简单图形/* 直线、矩形、圆形 */
import java.awt.*;
import javax.swing.*;
public class Example6_1 extends JFrame
{ Example6_1() {
setSize(300,400);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);}
public void paint(Graphics e){
e.setColor(Color.BLUE);
e.drawLine(50,50,120,120);//(int x1, int y1, int x2, int y2)
e.setColor(Color.red);
e.drawRect(50,50,70,70);//(int x, int y, int width, int height) 70,70为两个边长
e.setColor(Color.black);
e.drawLine(160,160,230,230);//(int x1, int y1, int x2, int y2)
e.drawRect(160,160,70,70);//(int x, int y, int width, int height) 70,70为两个边长
e.setColor(Color.green);
e.drawOval(160,160,90,90);//(int x, int y, int width, int height) x,y为切角坐标
}
public static void main(String args[]){
new Example6_1();} }
8. 【例6-2】 绘制一个多边形图形。核心语句:
public void paint(Graphics g)
{
int x[] = {80, 190, 150, 50};
int y[] = {80, 30, 170, 210};
int pts = x.length;
g.drawPolygon(x, y, pts);
//g.drawPolygon(x,y,4);
}
14. 6.1.2 Graphics类3、设置字体
其中name为逻辑字体名,style(风格)是Font.PLAIN(正常字体)、Font.BOLD(黑体)或Font.ITALIC(斜体)的组合,size是字号大小,字号越大字体越大。
我们可以用Graphics 类的setFont(Font f)方法来设置字体。 Font f = new Font(String name,int style,int size);
15. 【例6-4】编写程序以创建不同的风格和大小的可利用的逻辑字体。setSize(540,300);
public void paint(Graphics g)
String[] FONTS ={"Dialog","DialogInput","Monospaced","Serif","SansSerif"};
String TEXT = "左边是一个逻辑字体的示例";
{ for(int i = 0;i < FONTS.length;i ++)
{ g.setFont(new Font(FONTS[i],Font.PLAIN,12+2*i));
g.drawString(FONTS[i]+"(plain):"+TEXT,10,20*i+40); }
for(int i = 0;i < FONTS.length;i++)
{ g.setFont(new Font(FONTS[i],Font.BOLD+Font.ITALIC,14+2*i));
g.drawString(FONTS[i]+"(bold,italics):"+TEXT,10,20*i+180);
}}
16. 6.1.3 Java 2Dgraphics类还有一些不足,例如缺少改变线条粗细的方法。Graphics 2D可以解决这些问题。
创建Graphics2D对象:
public void paint (Graphics g) { Graphics2D g2 = (Graphics2D)g;}
(1)设置画笔形状
在Graphics类中线条是一个点宽,而在Graphics2D中可以通过BasicStroke类中的setStroke()方法来设置。其构造函数是 BasicStroke(float width, int cap, int join),其中:
17. 1、控制线条的粗细public BasicStroke(float width, int cap, int join);
width - 画笔线条粗细 ,可以是一个数值
cap – 线条两端的形状
join – 线条中角的处理
CAP_BUTT没有包头、 CAP_SQUARE方包头、CAP_ROUND圆包头
斜角连接JOIN_BEVEL、尖角连接JOIN_MITER和圆角连接JOIN_ROUND