Viết chương trình vẽ một số hình chữ nhật, tròn, trụ, lập phương với kích thước và màu sắc... API cho lập trình đồ hoạ bao gồm một tập rất nhiều lớp nhằm trợ giúp xây dựng các thành phần
Trang 1BÀI TẬP LỚN MÔN LẬP TRÌNH JAVA
Đề tài 6 : “Tìm hiểu về đồ họa trong Java: vẽ chữ, vẽ :
hình 2D và 3D Viết chương trình vẽ một số hình (chữ nhật, tròn, trụ, lập phương) với kích thước và màu sắc
Trang 2Nội dung chính
I Giới thiệu về hệ thống đồ hoạ của Java
1 Các khái niệm cơ bản
Trang 3III Vẽ hình 2D trong Java
1 Không gian người dùng và không gian thiết bị
2 Đồ họa với Graphics2D
3 Hệ toạ độ
4 Kẻ đường thẳng
5 Vẽ hình chữ nhật 2D
Trang 5I Giới thiệu về hệ thống đồ hoạ của Java
Thiết kết API cho lập trình đồ hoạ của Java là một ví dụ hoàn hảo về cách dùng lớp, sự kết thừa và giao diện API cho lập trình đồ hoạ bao gồm một tập rất nhiều lớp nhằm trợ giúp xây dựng các thành phần giao diện khác nhau như: cửa sổ, nút ấn, ô văn bản, menu, hộp kiểm…Một quan hệ kế thừa giữa các thành phần này được mô
tả như sau:
Trang 6I Giới thiệu về hệ thống đồ hoạ của Java
Trang 71 Các khái niệm cơ bản
1.1 Component
Component là một đối tượng có biểu diễn đồ họa được hiển thị trên màn hình mà người dùng có thể tương tác được Chẳng hạn như những nút nhấn (button), những
checkbox, những scrollbar,… Lớp Component là một
lớp trừu tượng là lớp cha của mọi lớp giao diện người dùng Lớp này cung cấp các thuộc tính, hành vi cơ bản nhất của tất cả các thành phần giao diện
Trang 81 Các khái niệm cơ bản
Trang 91 Các khái niệm cơ bản
1.6 FontMetrics:
Là một lớp trừu tượng dùng để xác định các thuộc tính của Font Tất cả các thành phần đồ hoạ trong thư viện Swing được nhóm trong gói javax.swing Đa số các
thành phần trong thư viện Swing đều có tiếp đầu ngữ là
‘J’, Ví dụ: một nút lệnh trong thư viện Swing có tên là
JButton, một memu có tên là JMenu
1.7 Layout Manager
Khung chứa container nhận các đối tượng từ bên
ngoài đưa vào và nó phải biết làm thế nào để tổ chức sắp xếp “chỗ ở” cho các đối tượng đó Mỗi đối tượng khung chứa đều có một bộ quản lý chịu trách nhiệm
thực hiện công việc đấy đó là bộ quản lý trình bày
(Layout Manager)
Trang 10II Vẽ chữ
1 Một số khái niệm liên quan
-Font: là 1 tập hoàn chỉnh các chữ cái, các con số, các dấu
câu, và các kí tự đặc biệt, theo một kiểu loại, định dạng (đậm, nét), hình dáng (thẳng hay nghiêng), kích cỡ phù hợp và có thể phân biệt sự khác nhau
+ Có ba loại phông chữ : font Bitmap, font PotScript và font
True Type Mỗi loại có hai phiên bản : font màn
hình(screen font) và máy in (printer font)
- Chân chữ hay đường nền (baseline): đường thẳng mà
mọi ký tự trong một chuỗi cùng nằm trên đó
- Thân chữ (ascent): Chiều cao từ chân chữ lên đến đầu
chữ
- Đuôi chữ (descent): Khoảng cách lớn nhất từ chân chữ
trở xuống của các ký tự Các chữ thường như g hay y thường có phần đuôi chiếm chiều cao này
- Khoảng hở (leading): Khoảng phân cách giữa hai chuỗi
với nhau
Trang 11II Vẽ chữ
2 Vẽ chữ
2.1 Các thư viện phục vụ cho vẽ chữ có trong java
+ java.awt.Font : Gồm các phông chữ có sẵn trong hợ
thống
+java.awt.font.TextLayout -> cho phép tạo kiểu chữ từ sự kết hợp các chuỗi, phông chữ và đặt các thuộc tính Sauk hi tạo ra đối tượng TextLayout không thể chỉnh sửa, nhưng nó có phương thức để bạn có thể truy cập
để bố trí phông chữ, dấu nháy , kiểm tra thong tin
+java.awt.font.FontRenderContext : gồm các thông tin để
đo và xác định vị trí văn bản khi nó được tạo ra
+java.awt.LineBreakMeasurer
Trang 12II Vẽ chữ
Phương thức drawstring
Public void drawstring(String str, int x, int y)
Str: là một chuỗi ta cần ghi ra
x,y: tọa độ để ghi, vị trí x,y được lấy theo đường chân chữ
+Chuỗi có thể suất phát từ đối tượng String hoặc tập một dãy các kí tự bằng một dãy các ký tự bằng hai phương thức sau: //Ghi ra một dãy các ký tự tại vị trí x, y bắt đầu từ ký tự offs
Trang 13frame.setVisible(true);
}
Trang 15}
Trang 16III Vẽ hình 2D trong Java
1 Không gian người dùng và không gian thiết bị:
Trong hầu hết môi trường đồ họa máy tính, mỗi pixel được đánh 1 số Nếu bạn vẽ 1 hình vuông bắt đầu ở
điểm (20, 20) thì góc trên trái của hình vuông sẽ bắt đầu
ở pixel thứ 20 từ trục trái của không gian vẽ và ở pixel thứ 20 từ trục trên của không gian vẽ Tọa độ lấy cách đều từ 2 trục được gọi là tọa độ Đề-Các Vị trí của
những đối tượng Java 2D cũng được chỉ
định.bằng.tọa,độ.này
Tuy nhiên, Java 2D định nghĩa tọa độ theo đơn vị (72 đơn vị bằng 1 inch), và việc hiển thị diễn ra trong mặt phẳng hypothetical được gọi là không gian người dùng
Trang 17III Vẽ hình 2D trong Java
2 Đồ họa với Graphics2D
Lớp Graphics cung cấp các methods đồ họa nhưng
không xây dựng các lớp ảnh
Lớp Graphics2D kế thừa lớp Graphics nhưng có xây
dựng các lớp mô tả ảnh và các phép biến hình …, có sử dụng hệ tọa độ thực
Trang 18III Vẽ hình 2D trong Java
3 Hệ toạ độ
Màn hình ta hiện thấy được mô phỏng như một hệ toạ
độ phẳng Descartes gồm các điểm (x, y) Trục tung của
hệ toạ độ này hướng xuống, góc trái trên cùng của màn hình được tính là (0, 0) Toạ độ các điểm tăng dần từ trái qua phải và từ trên xuống dưới Toạ độ lớn nhất có thể được nằm ở góc tận bên phải của màn hình và tuỳ thuộc vào độ phân giải của màn hình mà có thể mang các giá trị khác nhau, chẳng hạn với màn hình có độ phân giải 640x480 thì toạ độ này là (648,480) còn với độ phân giải 800x600 thì sẽ là (800,600)
Trang 19III Vẽ hình 2D trong Java
4 Kẻ đường thẳng
Phương thức cơ bản nhất của đối tượng đồ hoạ
Graphics dùng để vẽ một đường thẳng thật đơn giản
Chương trình vẽ đường thẳng (trang bên)
Kết quả:
Trang 21III Vẽ hình 2D trong Java
5 Vẽ hình chữ nhật 2D
Vẽ một hình chữ nhật (hay hình vuông) đòi hỏi ta phải biết toạ độ (x,y) góc trái trên của hình chữ nhật cùng có chiều rộng width và chiều cao height của nó Những
phương thức sau sẽ giúp ta vẽ hình chữ nhật với các dạng khác nhau:
Public void drawRect(int x, int y, int width, int height)
Phương thức này vẽ một hình chữ nhật với toạ độ đỉnh góc trái (x,y) với chiều rộng width, chiều cao height
Ví dụ để vẽ hình chữ nhật ở toạ độ (10,20) rộng 200
pixel cao 150 pixel ta thực hiện lệnh sau:
drawrect(10,20,200,150)
Chương trình vẽ hình chữ nhật:
Trang 23Kết quả:
Trang 24IV Vẽ hình 3D trong Java
Hình ảnh được xuất hiện có chiều cao , chiều rộng và chiều sâu gọi là 3 chiều – 3D ( three-
chiều rộng mà không có chiều sâu , gọi là 2
chiều – 2D ( two-dimensional )
Một điều khác nhau giữa hình ảnh 2D và 3D ở chỗ , những hình ảnh 2D dùng cho những hình ảnh mang những thông tin đơn giản và nhanh chóng , những hình 3D phức tạp hơn và chứa đựng nhiều thông tin hơn
Trang 25IV Vẽ hình 3D trong Java
Nhìn những tam giác trên Mỗi một tam giác có 03 cạnh
và 03 góc Bên tay phải là hình chóp - cấu trúc 3D gồm
04 mặt là hình tam giác Chú ý rằng nó có 05 đường và
06 góc để cho biết đó là hình chóp - gần gấp hai lần
những thông tin yêu cầu của hình tam giác
Trang 26IV Vẽ hình 3D trong Java
IV Vẽ hình 3D trong Java
Cách vẽ hình chữ nhật 3D không khác gì cách vẽ hình chữ nhật bình thường chỉ có điều ta cần cho biết thêm một đối số kiểu
Boolean để xác nhận xem hình chữ nhật sẽ được vẽ theo dạng 3D nào.
Có 2 cách vẽ , một sẽ làm cho đối tượng nổi lên(raised) hoặc hai
sẽ làm cho đối tượng có vẻ như chìm xuống
Sau đây là hai phương thức để vẽ hình chữ nhật 3D:
// Chỉ vẽ hình chữ nhật 3D không tô bên trong
Public void draw3DRect(int x, int y, int width, int height, Boolean raised)
// Vẽ hình chữ nhật 3D và tô bên trong
Public void fill3DRect(int x, int y, int width, int height, Boolean
raised)
Nếu raised=true hình chữ nhật sẽ ở dạng nổi còn raised=false hình chữ nhật sẽ ở dạng chìm.
Chương trình vẽ hình chữ nhật 3 chiều:
Trang 28IV Vẽ hình 3D trong Java
Kết quả:
Trang 29IV Vẽ hình 3D trong Java
Trang 30IV Vẽ hình 3D trong Java
}
}
Trang 31IV Vẽ hình 3D trong Java
Kết quả:
Trang 32TÀI LIỆU THAM KHẢO
Giáo trình lý thuyết và bài tập Java _ Trần Tiến Dũng
Bài giảng môn Lập trình Java – Ngô Công
Thắng
Đề cương bài giảng Java cơ sở _ Trường ĐH
Sư phạm kỹ thuật Hưng Yên Nhóm biên soạn Hoàng Trọng Thế, Nguyễn Duy Tân
Bài giảng lập trình java – Huỳnh Công Pháp, Khoa CNTT, ĐHNK
Và một số tài liệu tham khảo khác