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
Trang 1JAVA 2D
GV: Vũ Đình Hồng Khoa: CNTT – TỨD
Trang 3Graphics 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ự
Trang 4 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 )
Trang 5Color 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
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
Trang 6Phươ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()
Trang 7public 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 ){
Trang 8Font 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ỡ
Trang 9public 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.
Trang 10Thao 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.
Trang 11public 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.
Trang 12Class 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.
Trang 13Drawing 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).
Trang 14 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
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.
Trang 15public 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,
Trang 16 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.
Trang 17Vẽ 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
Trang 18Vẽ 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.
Trang 19Phươ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.
Trang 20Phươ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.
Trang 22Vẽ 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.
Trang 23Phươ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
Trang 24Phươ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
Trang 25Phươ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
Trang 26Phươ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
Trang 27Phươ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
Trang 29Java2D API
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
Trang 30Java2D 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;
Trang 31Ví dụ
// draw 2D ellipse filled with a blue-yellow gradient
// draw 2D rectangle in red
Trang 32Q & A