Giáo trình Java 2D
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
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
File đính kèm:
- Giáo trình Java 2D.pdf