1. Trang chủ
  2. » Công Nghệ Thông Tin

Đồ họa AWT trong Java pot

30 432 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 30
Dung lượng 1,57 MB

Nội dung

public void paintGraphics g{}  Phương thức: repaint dùng để vẽ lại hình ảnh thực chất là repaint gọi đến phương thức update sau đó gọi đến phương thức paint repaint int x, int y,i

Trang 1

§å häa AWT trong java

Học viện công nghệ bưu chính viễn thông C08CNTT2

Tháng 3/2010

http://www.mediafire.com/?hz7rf8jbvvnlnht

Trang 3

Lớp Graphics

đối tượng Graphics như cây cọ phết lên Frame, Canvas hay Applet.

public void paint(Graphics g){}

 Phương thức: repaint() dùng để vẽ lại hình ảnh (thực chất là

repaint() gọi đến phương thức update() sau đó gọi đến phương thức

paint() )

repaint ( int x, int y,i nt width, int height )

Trang 5

Lớp Graphics

1.Vẽ hình học:

Giới thiệu hệ tọa độ:

Vẽ hình chữ nhật:

drawRect(int x, int y,int width,int height)

fillRect(int x, int y,int width,int height)

clearRect(int x, int y,int width,int height)

Trang 6

drawOval (int x, int y, int width, int height)

fillOval (int x, int y, int width, int height)

+ Đường tròn: width= height

fill

(Height)

(x,y)

Trang 8

- Cung cấp khả năng tạo Polygon yển chuyển hơn Đa giác

được xem như 1 đối tượng

- Có thể thêm đỉnh nhờ phương thức addPoint

Polygon pg=new Polygon();

pg.addPoint(2,50);

g.drawPolygon(pg);

-Phương thức contains(int x,int y) để kiểm tra 1 điểm có nắm trong đa giác không

-Phương thức getBounds() cho biết phạm vi tối đa ma các đỉnh chiếm giữ (trả về kiểu Rectangle)

Trang 9

(height)

Draw Arc

Trang 11

- Khởi tạo Font: Font( String fontname, int style, int fontsize)

VD: Font f= new Font( “ VnArial , ” Font.BOLD + Font.ITALIC , 20 )

- Một số phương thức của lớp Font: getName, getStyle, getSize, isBold,

Trang 12

(black) XOR (green) = (0,0,0) (0,255,0)

(255,0,255)

Trang 13

Lớp Graphics

4.Vẽ ảnh:

 Lớp Graphics cung cấp phương thức drawImage() để vẽ ảnh đơn giản:

drawImage(Image img, int x, int y, ImageObserver Ob)

drawImage(Image img, int x, int y, Color bgcolor, ImageObserver Ob)

drawImage(Image img, int x, int y, int width, int height, ImageObserver Ob)

drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver Ob)

+ bgColor: Màu nền đối với ảnh trong suốt:

+ VD:

Image im=getToolkit().getImage("Untitled-1.png");

g.drawImage(im,50,50,im.getHeight(this),im.getWidth(this),

Color.darkGray,this);

+ ImageObserver Ob: Đối tượng

chịu trách nhiệm kiểm tra xem

ảnh đã sắn sàng để vẽ hay chưa

Thông thường là this.(this là thân

Applet hay Frame)

Trang 14

Color cl=new Color ( int Red, int Green, int Blue )

VD: Màu xanh lá cây: Color gr=new Color ( 0, 255, 0);

+ Theo giá trị % (có giá trị từ 0-1):

Color cl=new Color ( float Red, float Green, float Blue )

VD: Green: Color cl=new Color (0.0, 1.0, 0.0 )

+ Theo giá trị hexa (mã màu):

VD: Color a=new Color(0xffaf00);

ff=15*161+15*160=255

0xff 0xaf 0x00

Alpha

Trang 15

Lớp Graphics

5.Lớp Color (tt):

+ Khởi tạo màu theo màu cơ bản của lớp Color:

Color a=new Color(Color black);

Hoặc: Color a=Color black;

- Một số màu cơ bản : black, blue, cyan, darkGray, gray, green, lightGray, magetan, orange, pink, red, white, yellow

 Một số phương thức của lớp Color:

 int getRed: Trả về giá trị R (int).

 int getGreen: Trả về giá trị G (int).

 int getBlue: Trả về giá trị B (int).

 int getAlpha: Trả về giá trị Alpha (int).

Trang 17

Lớp Graphics 2D

đồ họa hơn hẳn lớp Graphics Chẳng hạn như: Graphics2D cho phép quy định chiều rộng bút vẽ, kiểu nét vẽ, các phương thức

xử lý hình, vẽ và tô màu loang, cho phép sử dụng Font chữ của máy cục bộ, hỗ trợ hệ tọa độ động, và 1 số thao tác biến đổi toạ độ Tuy nhiên để duy trì tính tương thích với Java 1.1, kiểu khai báo đối số của phương thức paintComponent vẫn sẽ là Graphics công khai là đồ thị Vì vậy bạn phải ép kiểu đối số của phương thức paintComponent thành Graphics2D trước khi sử dụng nó:

public void paint(Graphics g)

{

Graphics2D g2=(Graphics2D)g;

}

Trang 18

Lớp Graphics 2D

Các tính năng mới của Graphics2D:

 Đa dạng trong màu tô và mẫu tô: tô loang ( Gradient ), tô bằng mẫu ảnh (pattern ), tô màu ảnh trong suốt ( Transparent ).

 Sử dụng font đặc thù theo từng hệ điều hành.

 Thay đổi được độ dày của nét bút vẽ Các nét vẽ có thể dùng mẫu, cho phép xử lý các nét vẽ gấp khúc theo nhiều cách.

 Các phép biến đổi tọa độ.

 Hình vẽ (Shape) có thể là 1 đối tượng tự vẽ.

Trang 19

 QuadCurve2D.Double //Cung góc tư

Trang 20

Lớp Graphics 2D

1.Các dạng hình học trong Java2D (tt)

Line2D.Double:Khởi tạo: setLine( int x1, int y1, int x2, int y2 )

Arc2D.Double :Khởi tạo: setArc( x, y, w, h, angStart, angNum, closure)

Ellipse2D.Double: Khởi tạo: setFrame( x, y, w, h);

VD: public void paint(Graphics g)

{ Graphics2D g2=(Graphics2D)g; // Ep kieu cho doi tuong Graphics

Line2D.Double a=new Line2D.Double();

a.setLine(100,150,150,150); // Khoi tao Line

Arc2D.Double b=new Arc2D.Double();

b.setArc(50,50,90,90,20,90,2); // Khoi tao cung tron

Ellipse2D.Double c=new Ellipse2D.Double();

c.setFrame(20,20,80,80); // Khoi tao Elip

g2.setColor(Color.orange); // Doi mau

g2.fill(b); // Ve cung tron

g2.draw(a); // Ve Line

g2.draw(c); //Xem thu vung cat

g2.clip(c); // Cat bang hinh c

g2.setColor(Color.magenta); // Doi mau

g2.fillRect(10,50,50,50); // Ve hinh CN }

Trang 21

p.quadTo(x2, y2, x3,y3);

QuadCurve2D: Vẽ cung (Tương tự Quad

của GenrralPath)

Khởi tạo:

public void setCurve(x1, y1, x2, y2, x3, y4)

Hoặc: public void setCurve(Point p1, Point p2, Point p3)

CubicCurve2D: (Tương tự Curve của GenrralPath)

Trang 22

Lớp Graphics 2D

2.Thay đổi nét vẽ:

 Các phương thức draw của đối tượng Graphics đều có nét vẽ là 1 pixel

 Graphics2D có khả năng thay đổi độ dày của nét vẽ, đồng thời cũng có thể thay đổi được kiểu của nét vẽ

Thay đổi độ dày của nét vẽ:

 Ta dùng phương thức setStroke(Stroke s) : Như vậy ta phải tạo 1 đối tượng có cài đặt giao diện Stroke để truyền, lớp BasicStroke là lớp duy nhất cài giao diện đó:

Trang 23

Lớp Graphics 2D

2.Thay đổi nét vẽ:

Thay đổi kiểu của nét vẽ:

 Các phương thức khởi tạo nét vẽ với kiểu nét vẽ:

 Ngoài phương thức BasicStroke(foat penWidth) ta còn 1 số phương thức khởi tạo:

BasicStroke(float width, int cap, int join, float miterlimit, float dash[], float dash_phase)

- capStyle: Kiểu đầu mút nét vẽ (CAP_SQUARE, CAP_BUTT, CAP_ROUND)

- jonStyle: Kiểu nối (JOIN_MITER, JOIN_BEVEL, JOIN_ROUND)

- miterlimit: Giới hạn mũ nối

- dash[] : mảng chứa thông tin đứt gãy:

- dash_phase: điểm bắt đầu của nét.

VD: 20px liền, 30px đứt, 10px liền, 20px đứt

float A={20, 30, 10, 20, 40}

capStyle=0 jonStyle=0 capStyle=1jonStyle=1 capStyle=2jonStyle=2

Trang 24

Lớp Graphics 2D

3.Tô màu :

• Graphics2D có lớp phương thức setPaint(Paint x) thay cho setColor() của Graphics trước đây để tô màu:

• Các lớp con của lớp Paint:

+ Color: Màu đơn

+ GradientPaint: Tô loang

+ TexturePaint: Tô theo mẫu ảnh

GraientPaint: Tô loang.

GradientPaint( x1, y1, Color 1, x2, y2, Color 2 )

public void paint(Graphics g)

Trang 25

Lớp Graphics 2D

3.Tô màu :

TexturePaint: Tô theo mẫu ảnh.

TexturePaint ( BufferedImage a, Rectangle2D b)

public void paint(Graphics g)

Trang 26

Lớp Graphics 2D

4.Vẽ ảnh trong suốt:

• Để vẽ ảnh trong suốt ta dùng phương thức setComposite() của lớp Graphics2D:

• Dùng đối tượng AlphaComposite để truyền vào phương thức setComposite().

public void paint(Graphics g)

}

Trang 27

Lớp Graphics 2D

5.Biến đổi tọa độ:

• Java2D cho phép dịch, quay, co giãn, bóp méo 1 hình dễ dàng:

• Hàm biến đổi tọa độ của Graphics2D

• translate(int x,int y): Di chuyển gốc tọa độ đến (x,y)

• rotate(double a,int x, int y): Quay hệ tọa độ a, và di chuyển tâm quay đến tọa độ (x,y)

• scale(sx,sy): Phóng to, thu nhỏ với tỷ lệ sx,sy.

• shear(float shx, float shy) : Bóp méo 1 hình theo chiều ngang, dọc.

public void paint(Graphics g)

Trang 28

Lời kết:

Slide, Java còn có khả năng xử lý ảnh, tạo hiêu ứng chữ, mở Video… nâng cao hơn là Java3D, đó

là những đề tài khá phức tạp về đồ họa Thời gian

có hạn nên chúng tôi không thể nghiên cứu hết, rất mong được sự góp ý của thầy và các bạn !

Trang 29

Phụ lục:

*** Tài liệu tham khảo ***

• Java Tập1 – Nhà xuất bản lao động.

• OReilly Java Cookbook 2nd Edition.

Trang 30

Cảm ơn sự quan tâm theo dõi của thầy và các bạn !

THE END

Tháng 3/2010

http://www.mediafire.com/?hz7rf8jbvvnlnht

Ngày đăng: 07/07/2014, 04:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w