Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 19

Bài 8: Lập trình đồ họa

Lập trình đồ họa với Java


• Java cung cấp một hệ thống thư viện đồ sộ
giúp cho việc phát triển các ứng dụng đồ họa 2
chiều, qua đó chúng ta có thể phát triển giao
diện đồ họa người dùng, game, hiệu ứng
chuyển động, các ứng dụng đa phương tiện và
nhiều lĩnh vực khác nhau.
• Sử dụng lớp Graphics trong phương thức paint
của các Container.
Cấu trúc cơ bản lập trình đồ họa

public class DrawMethod extends JFrame {


public DrawMethod() {
setTitle("Drawing Method Demo");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(200, 200, 400, 300);

setVisible(true);
}

@Override
public void paint(Graphics g) {
// Nội dung cần vẽ
}
}
Các đối tượng hình học trong Graphics
• Chuỗi:
– Graphics.drawString(String str, int xCoor, int yCoor);

• Đoạn thẳng:
– Graphics.drawLine(int x1, int y1, int x2, int y2): vẽ một đoạn thẳng từ
điểm đầu tới điểm cuối. Có thể dùng phương thức này để vẽ điểm.

• Đường Oval (tròn):


– drawOval(int xCoor, int yCoor, int width, int height);
– fillOval(int xCoor, int yCoor, int width, int height);
Các đối tượng hình học trong Graphics
• Hình chữ nhật:
– drawRect(int xCoor, int yCoor, int width, int height);
– fillRect(int xCoor, int yCoor, int width, int height);

• Hình chữ nhật có góc tròn:


– drawRoundRect(int xCoor, int yCoor, int width, int height,
int arcWidth, int arcHeight);
– fillRoundRect (int xCoor, int yCoor, int width, int height,
int arcWidth, int arcHeight);
Các đối tượng hình học trong Graphics
• Đường gấp khúc:
– drawPolyline(int xArray[ ], int yArray[ ], int totalPoints);

• Đa giác:
– drawPolygon(int x[ ], int y[ ], int numPoints);
– fillPolygon(int x[ ], int y[ ], int numPoints);
Hệ thống màu
• Java sử dụng màu RGB
• Bảng các giá trị màu
Element Range
Red 0-255
Green 0-255
Blue 0-255
• Cú pháp:
– new Color(int red, int green, int blue);
– setColor(Color c);
Hệ thống màu
• Các màu thông dụng
Color Red Green Blue
White 255 255 255
Light Gray 192 192 192
Gray 128 128 128
Dark Gray 64 64 64
Black 0 0 0
Pink 255 175 175
Orange 255 200 0
Yellow 255 255 0
Magenta 255 0 255
Font chữ
• Gói java.awt package cung cấp bởi lớp
‘Font’
• Hàm dựng:
– Font f1 = new Font("Arial", Font.ITALIC, 16);
– g.setFont(f1);
FontMetrics
• Đo các ký tự khác nhau hiển thị trong các
font khác nhau.
• Các phương thức thông dụng:
– getHeight()
– stringWidth(String str)
MouseEvent
• Thông thường, các ứng dụng đồ họa thường đi
với các sự kiện chuột
• Interface MouseListener có các method:
– void mouseClicked(MouseEvent e)
– void mousePressed(MouseEvent e)
– void mouseReleased(MouseEvent e)
– void mouseEntered(MouseEvent e)
– void mouseExited(MouseEvent e)
MouseEvent
• Interface MouseMotionListener có các method:
– void mouseDragged(MouseEvent e)
– void mouseMoved(MouseEvent e)
• Lớp MouseEvent:
– getX(), getY()
– getClickCount()
– getButton()
Bài tập
• Xây dựng chương trình đánh cờ caro sử dụng
chuột
Bài 9: Xử lý đa luồng
Thread
• Thread là luồng xử lý
• Các chương trình đã học đơn giản là các xử lý
đơn luồng (single thread)
• Trong java, có có cơ chế đồng thời xử lý nhiều
công việc cùng một lúc (xử lý đa luồng, multi
thread)
Tạo Thread
• Khi chạy chương trình chính, có 1 thread được
thực hiện. Ta có thể thêm các Thread mới.
• Có 2 cách tạo Thread:
– Cách 1: Kế thừa lớp Thread
– Cách 2: Implement interface Runnable
Cách 1: Kế thừa lớp Thread

class MyThread extends Thread {


public void run() {
//Các lệnh cần xử lý
}
}
Ví dụ
class MyThread extends Thread {
public void run() {
for(int i = 0; i < 100; i++) {
System.out.println("MyThread Method ("+i+")");
}
}
}
public class SimpleThreadTest {
public static void main(String[] args) {
MyThread t = new MyThread();
t.start();

for(int i = 0; i < 100; i++) {


System.out.println("SimpleThreadTest Method("+i+")");
}
}
}

You might also like