Giới thiệu
Trong phần này, chúng ta sẽ tìm hiểu tổng quan về
một số khả năng của Java cho vẽ hình hai chiều.
1) Graphics Contexts and Graphics Objects
2) Color Control
3) Font Control
4) Drawing Lines, Rectangles and Ovals
5) Drawing Arcs
6) Drawing Polygons and Polylines
7) Java2D API
32 trang |
Chia sẻ: phuongt97 | Lượt xem: 597 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu AVA 2D - Vũ Đình Hồng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
JAVA 2D
GV: Vũ Đình Hồng
Khoa: CNTT – TỨD
Giới thiệu
Trong phần này, chúng ta sẽ tìm hiểu tổng quan về
một số khả năng của Java cho vẽ hình hai chiều.
1) Graphics Contexts and Graphics Objects
2) Color Control
3) Font Control
4) Drawing Lines, Rectangles and Ovals
5) Drawing Arcs
6) Drawing Polygons and Polylines
7) Java2D API
Graphics Contexts and Graphics Objects
Ngữ cảnh java cho phép vẽ đồ họa trên màn hình. Một
đối tượng đồ họa quản lý một ngữ cảnh đồ họa và lấy
ra điểm ảnh trên màn hình đại diện cho văn bản và các
đối tượng đồ họa khác (như đường, bầu dục, hình chữ
nhật và hình đa giác khác).
Các đối tượng đều có phương pháp để vẽ, thao tác
font chữ, màu sắc và thao tác tương tự.
Lớp Component là superclass cho rất nhiều tầng lớp trong gói
java.awt
Khởi đầu của 1 paint method là:
public void paint( Graphics g )
paint method không nên ghi đè, bởi vì nó thực hiện một số
nhiệm vụ phụ thuộc vào hệ thống Nếu người lập trình cần gọi lại
phương thức thì có câu lệnh sau:
public void repaint()
public void update( Graphics g )
Color Control
Lớp màu cho phép thay đổi các giá trị
RGB để thiết lập màu cho đối tượng
Color constant Color RGB value
public final static Color ORANGE orange 255, 200, 0
public final static Color YELLOW yellow 255, 255, 0
public final static Color BLACK black 0, 0, 0
public final static Color WHITE white 255, 255, 255
public final static Color GRAY gray 128, 128, 128
public final static Color RED red 255, 0, 0
public final static Color BLUE blue 0, 0, 255
Phương pháp tạo màu
public Color( int r, int g, int b )
Tạo ra một màu sắc dựa trên màu đỏ, xanh lá cây và màu xanh thành phần thể hiện
như số nguyên 0-255.
public Color( float r, float g, float b )
Tạo ra một màu sắc dựa trên màu đỏ, xanh lá cây và màu xanh thành phần thể hiện là
các giá trị từ 0,0 đến 1,0.
public int getRed()
Trả về một giá trị giữa 0 và 255 đại diện cho nội dung màu đỏ.
public int getBlue()
public int getGreen()
public Color getColor()
Trả về một đối tượng màu đại diện cho màu sắc hiện tại cho các bối
cảnh đồ họa.
public void setColor( Color c )
Thiết lập màu hiện hành cho các bản vẽ với bối cảnh đồ họa.
Ví dụ: public void paint( Graphics g ){
super.paint( g );
g.setColor( new Color( 255, 0, 0 ) );
g.filloval( 25, 25, 100, 20 );
g.drawString( "RGB: " + g.getColor(), 130, 40 ); } }
Sử dụng phương pháp hộp chọn màu
Font Control
public final static int PLAIN
Hằng số đại diện cho một font plain.
public final static int BOLD
Đại diện cho một style font chữ đậm.
public final static int ITALIC
Đại diện cho một style font chữ nghiêng.
public Font( String name, int style, int size )
Tạo ra một đối tượng Font với các font chỉ định, kiểuvà kích cỡ.
public int getStyle()
Trả về một giá trị số nguyên cho thấy cách của phông chữ hiện hành.
public int getSize()
Trả về một giá trị số nguyên cho biết kích thước phông chữ hiện hành.
public String getName()
Trả về tên font hiện hành như một chuỗi.
Thao tác trên font
public Font getFont()
Trả về một tham chiếu đối tượng đại diện cho font chữ hiện hành.
public void setFont( Font f )
Thiết lập phông chữ hiện hành gồm các font chữ, kiểuvà kích
thước xác định bởi các tham chiếu đối tượng Font f.
public int getAscent()
Trả về một giá trị đại diện cho đi lên của một font ở điểm.
public int getDescent()
Trả về một giá trị đại diện cho các hậu duệ của một font ở điểm
public int getLeading()
Trả về một giá trị đại diện cho hàng đầu của một phông chữ trong
điểm.
public int getHeight()
Trả về một giá trị đại diện cho chiều cao của một phông chữ trong
điểm.
Class FontMetrics
Class FontMetrics là phương pháp cho việc thu thập số liệu font gồm height,
leading, ascent, baseline, descent.
• public FontMetrics getFontMetrics()
Trả về FontMetrics cho đối tượng Font bản vẽ hiện hành.
Drawing Lines, Rectangles and Ovals
public void drawLine( int x1, int y1, int x2, int y2 )
Vẽ 1 đường giữa các điểm (x1, y1) và điểm (x2, y2).
public void drawRect( int x, int y, int width, int height )
Vẽ hình chữ nhật có chiều rộng và chiều cao quy định. Góc trên
trái của hình chữ nhật có tọa độ (x, y).
public void fillRect( int x, int y, int width, int height )
Vẽ hình chữ nhật đặc với chiều rộng và chiều cao quy định. . Góc
trên trái của hình chữ nhật có tọa độ (x, y).
public void clearRect( int x, int y, int width, int height )
Vẽ hcnđặc trong màu nền hiện hành. Góc trên trái của hình chữ nhật
có tọa độ (x, y).
public void drawRoundRect( int x, int y, int width, int height,
int arcWidth, int arcHeight )
Vẽ hcn có góc tròn trong màu hiện. arcWidth và arcHeight xác định làm
tròn của các góc
public void fillRoundRect( int x, int y, int width, int height,
int arcWidth, int arcHeight )
Vẽ hcn có góc tròn cong trong màu sắc hiện tại. arcWidth và arcHeight
xác định độ tròn của các góc.
public void draw3DRect( int x, int y, int width, int height,
boolean b )
Vẽ hcn 3 chiều trong màu sắc hiện tại. Góc trên trái của hình chữ
nhật có tọa độ (x, y). Hcn nổi lên khi b là true và lõm khi b là false.
public void fill3DRect( int x, int y, int width, int height,
boolean b )
Vẽ hcn đặc 3 chiều trong màu hiện hành. Góc trên trái của hình chữ
nhật có tọa độ (x, y). Hcn nổi lên khi b là true và lõm khi b là false.
public void draw3DRect( int x, int y, int width, int height,
boolean b )
Vẽ hcn 3 chiều trong màu sắc hiện tại. Góc trên trái của hình chữ
nhật có tọa độ (x, y). Hcn nổi lên khi b là true và lõm khi b là false
public void drawOval( int x, int y, int width, int height )
Vẽ hình bầu dục trong màu sắc hiện tại góc trên bên trái của hình chữ
nhật là ranh giới ở tọa độ (x, y).
public void fillOval( int x, int y, int width, int height )
Vẽ hình bầu dục đặctrong màu hiện hành với quy định chiều rộng và
chiều cao. Góc trên bên trái của hình chữ nhật là ranh giới ở tọa độ (x,
y). Các chạm hình bầu dục tất cả bốn cạnh của hình chữ nhật ranh
giới ở trung tâm của mỗi bên.
Vẽ vòng cung
Một vòng cung được vẽ như là một phần của một
hình bầu dục. Góc của vòng cung được đo bằng độ.
Vòng cung quét từ một góc bắt đầu bởi số góc theo quy
định của vòng cung. Góc vòng cung xác định tổng số độ
cung quét.
Vẽ vòng cung (tt)
Vòng cung mà quét ngược chiều kim đồng hồ được
đo bằng độ dương. Hình bên phải cho thấy một
vòng cung quét từ số 0 độ đến -110 độ. Vòng cung
mà quét cùng chiều kim đồng hồ được đo bằng độ
âm. Khi vẽ một vòng cung, bạn chỉ định một hình
chữ nhật ranh giới cho một hình bầu dục. Các vòng
cung sẽ quét dọc theo một phần của hình bầu dục
này.
Phương thức để vẽ vòng cung
không tô
public void drawArc(int x, int y, int width, int height, int
startAngle, int arcAngle)
Vẽ 1 vòng cung giới hạn bởi đỉnh trên trái
hình chữ nhật có tọa độ (x,y) với chiều rộng
và chiều cao đã được người dùng khai báo
trong cú pháp. Các đoạn vòng cung được vẽ
bắt đầu từ startAngle và độ quét là
arcAngle.
Phương thức để vẽ vòng cung có
tô
public void fillArc(int x, int y, int width, int height, int
startAngle, int arcAngle)
Vẽ và tô 1 vòng cung giới hạn bởi đỉnh trên
trái hình chữ nhật có tọa độ (x,y) với chiều
rộng và chiều cao đã được người dùng khai
báo trong cú pháp. Các đoạn vòng cung
được vẽ bắt đầu từ startAngle và độ quét là
arcAngle.
Ví dụ
// start at 0 and sweep 360 degrees
g.setColor( Color.YELLOW );
g.drawRect( 15, 35, 80, 80 );
g.setColor( Color.BLACK );
g.drawArc( 15, 35, 80, 80, 0, 360 );
// start at 0 and sweep 110 degrees
g.setColor( Color.YELLOW );
g.drawRect( 100, 35, 80, 80 );
g.setColor( Color.BLACK );
g.drawArc( 100, 35, 80, 80, 0, 110 );
Vẽ Polygons và Polylines
Những đa giác thì đều có dạng bao gồm
các phân đoạn đường thẳng. Polylines là
một chuỗi các điểm kết nối.
Phương thức để vẽ đa giác
public void drawPolygon( int xPoints[], int yPoints[],
int points )
Vẽ một hình đa giác. Mỗi điểm trên trục x được quy
định trong mảng xPoints và các điểm trên trục y được
quy định trong mảng yPoints. Đối số cuối cùng xác định
số điểm. Phương pháp này rút ra một đa giác khép kín.
Nếu điểm cuối cùng là khác nhau từ điểm đầu tiên, đa
giác được đóng lại bằng một đường kết nối các điểm
cuối đến điểm đầu tiên.
Phương thức để vẽ đa giác (tt)
public void drawPolyline( int xPoints[], int yPoints[], int
points )
Vẽ một chuỗi các đường kết nối. Mỗi điểm trên trục x
được quy định trong mảng xPoints và điểm trên trục y
được quy định trong mảng yPoints. Đối số cuối cùng
xác định số điểm. Nếu điểm cuối cùng là khác nhau từ
điểm đầu tiên, polyline không phải là đóng lại.
Phương thức để vẽ đa giác (tt)
public void fillPolygon( int xPoints[], int yPoints[], int
points )
Vẽ một hình đa giác tô. Mỗi điểm trên trục x được quy
định trong mảng xPoints và các điểm trên trục y được
quy định trong mảng yPoints. Đối số cuối cùng xác định
số điểm. Phương pháp này rút ra một đa giác khép kín.
Nếu điểm cuối cùng là khác nhau từ điểm đầu tiên, đa
giác được đóng lại bằng một đường kết nối các điểm
cuối đến điểm đầu tiên.
Phương thức để vẽ đa giác (tt)
public void drawPolygon( Polygon p )
Vẽ các đa giác đã được quy định.
public void fillPolygon( Polygon p )
Vẽ các đa giác tô đã được quy định.
public Polygon()
Cấu trúc của một đối tượng đa giác mới. Các đa giác
không chứa bất kỳ điểm nào.
Phương thức để vẽ đa giác (tt)
public Polygon( int xValues[], int yValues[], int
numberOfPoints )
Cấu trúc một đối tượng đa giác mới. Các đa giác có
numberOfPoints bên, với mỗi điểm bao gồm một giá trị
x và giá trị y.
public void addPoint( int x, int y )
Thêm 1 điểm gồm x và y vào đa giác.
Ví dụ
super.paint( g ); // call superclass's paint method
int xValues[] = { 20, 40, 50, 30, 20, 15 };
int yValues[] = { 50, 50, 60, 80, 80, 60 };
Polygon polygon1 = new Polygon( xValues, yValues, 6 );
g.drawPolygon( polygon1 );
Polygon polygon2 = new Polygon();
polygon2.addPoint( 165, 135 );
polygon2.addPoint( 175, 150 );
polygon2.addPoint( 270, 200 );
polygon2.addPoint( 200, 220 );
polygon2.addPoint( 130, 180 );
g.fillPolygon( polygon2 );
Java2D API
Java2D API cung cấp đồ họa cao cấp 2 chiều cho người
lập trình, người mà yêu cầu các thao tác đồ họa chi tiết
và phức tạp. API bao gồm tính năng vẽ đường thẳng,
văn bản, hình ảnh trong gói java.awt, java.awt.image,
java.awt.color, java.awt.font,
java.awt.geom,java.awt.print và
java.awt.image.renderable.
Java2D API (tt)
Vẽ với các API Java2D được thực hiện với một thể
hiện của Graphics2D (gói java.awt), mà là một phân
lớp đồ họa trừu tượng của lớp. Trong thực tế, thực tế
đối tượng sử dụng để vẽ trong mỗi phương pháp sơn
là một ví dụ của một phân lớp của Graphics2D đó là
thông qua phương pháp vẽ và truy cập thông qua các
đồ họa siêu lớp. Để truy cập tính năng Graphics2D,
chúng ta phải bỏ các tham chiếu để vẽ đồ họa thông
qua vào một tham chiếu Graphics2D như:
Graphics2D g2d = ( Graphics2D ) g;
Ví dụ
super.paint( g ); // call superclass's paint method
Graphics2D g2d = ( Graphics2D ) g; // cast g to Graphics2D
// draw 2D ellipse filled with a blue-yellow gradient
g2d.setPaint( new GradientPaint( 5, 30, Color.BLUE, 35, 100,
Color.YELLOW, true ) );
g2d.fill( new Ellipse2D.Double( 5, 30, 65, 100 ) );
// draw 2D rectangle in red
g2d.setPaint( Color.RED );
g2d.setStroke( new BasicStroke( 10.0f ) );
g2d.draw( new Rectangle2D.Double( 80, 30, 65, 100 ) );
Q & A
Các file đính kèm theo tài liệu này:
- ava_2d_vu_dinh_hong.pdf