1. Trang chủ
  2. » Giáo án - Bài giảng

Giới thiệu khái niệm đồ hoạ máy tính

27 991 1
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Giới thiệu khái niệm đồ hoạ máy tính
Tác giả Nguyễn Thanh Tùng
Trường học Đại học Sư phạm Hà Nội
Chuyên ngành Công nghệ thông tin
Thể loại Bài giảng
Thành phố Hà Nội
Định dạng
Số trang 27
Dung lượng 353,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ưu điểm của chế độ đồ hoạ là: hiển thị được hình ảnh và các đối tượng có độ chi tiết cao, phổmàu rộng, cho phép hiển thị các kí tự có dạng font khác nhau.... Thường dùng với ảnh số, vide

Trang 1

BÀI 1 GIỚI THIỆU

I GIỚI THIỆU VỀ ĐHMT

1 Ngành Đồ hoạ Máy tính

Đồ hoạ máy tính (Computer Graphics) là một nhánh của khoa học máy tính, nghiên cứu cácphương pháp, kỹ thuật và công cụ xử lý đồ hoạ (lưu trữ, thể hiện, biến đổi, tăng chấtlượng…)

Những ứng dụng chính của đồ hoạ máy tính:

 Giao diện người dùng đồ hoạ (GUI)

 Xử lý ảnh (Photoshop)

 Thiết kế kỹ thuật (các hệ thống CAD như AutoCAD)

 Dựng hoạt hình (Flash MX, Director)

 Mô phỏng và dựng hình 3D (Maya, 3D Studio Max)

 Video game (trò chơi điện tử)

2 Môn học Đồ hoạ Máy tính

Môn học Đồ hoạ Máy tính dành cho hệ đào tạo tại chức có thời lượng 45 tiết, nhằm hai mụctiêu chính:

- Cung cấp những khái niệm, kỹ thuật và phương pháp cơ bản của ngành Đồ hoạ Máy tính

- Tạo cơ hội cho sinh viên được thực hành lập trình đồ hoạ trên một môi trường đồ hoạ.Chúng tôi chọn môi trường đồ hoạ BGI của Turbo Pascal 7.0 vì tính đơn giản, dễ sử dụng vàngôn ngữ Pascal quen thuộc với người học nhất

Thời lượng môn học được chia thành 30 tiết lý thuyết và 15 tiết thực hành

II MỘT SỐ KHÁI NIỆM

1 Chế độ hiển thị

Chế độ hiển thị là khái niệm về cách thức máy tính hiển thị kết quả của quá trình xử lý thôngtin và quá trình tương tác giữa người và máy trên thiết bị ra Có hai chế độ hiển thị:

Chế độ ký tự (text mode) là chế độ hiển thị mà phần tử hiển thị cơ bản là kí tự Màn hình

được chia thành các hàng và các cột xác định (80x25), giao điểm của các hàng và các cột tạothành các ô Mỗi ô hiển thị được 1 kí tự Do đó phần tử bé nhất có thể hiển thị được trên mànhình là kí tự

Chế độ kí tự có các ưu điểm là tốn ít bộ nhớ, xử lí và hiển thị rất đơn giản và nhanh Nhượcđiểm của chế độ này là chỉ hiển thị được các kí tự, không hiển thị được hình ảnh và các đốitượng có độ chi tiết cao, phổ màu rộng, các kí tự chỉ có một dạng font duy nhất

Chế độ đồ hoạ (graphic mode) là chế độ hiển thị mà phần tử hiển thị cơ bản là điểm ảnh Màn

hình cũng được chia thành các hàng và các cột, giao điểm của các hàng và các cột tạo thànhcác ô, mỗi ô hiển thị được 1 điểm ảnh So với chế độ kí tự thì số dòng và số cột trong chế độ

đồ hoạ lớn hơn rất nhiều (ví dụ 800 x 600), do đó 1 điểm ảnh rất nhỏ so với 1 kí tự

Ưu điểm của chế độ đồ hoạ là: hiển thị được hình ảnh và các đối tượng có độ chi tiết cao, phổmàu rộng, cho phép hiển thị các kí tự có dạng font khác nhau Ngược lại nhược điểm của chế

độ đồ hoạ là đòi hỏi nhiều bộ nhớ và năng lực xử lí

2 Đồ hoạ bitmap và đồ hoạ vector

Trang 2

Đồ hoạ bitmap là phương pháp biểu diễn dữ liệu đồ hoạ trong đó các đối tượng đồ hoạ được

mô tả dưới dạng ma trận các điểm ảnh Đồ hoạ bitmap phù hợp với các đối tượng có độ chitiết cao, màu sắc phong phú Nhược điểm của đồ hoạ bitmap là không giữ được độ nét khi cogiãn ảnh và rất tốn bộ nhớ Thường dùng với ảnh số, video số…

Đồ hoạ vector là phương pháp biểu diễn dữ liệu đồ hoạ trong đó các đối tượng đồ hoạ từ phần

tử cơ bản là đoạn thẳng và những đối tượng xây dựng từ đoạn thẳng như đa giác, đường gấpkhúc, đường cong… Đồ hoạ vector tốn ít bộ nhớ, giữ được độ nét khi co giãn nhưng khôngphù hợp để mô tả các đối tượng phức tạp hoặc phổ màu rộng, thường dùng cho hình vẽ,logo…

3 Điểm ảnh và độ phân giải

Điểm ảnh là phần tử nhỏ nhất hiển thị được trên thiết bị hiển thị hoặc cũng là phần tử bé nhấtdùng để mô tả đối tượng đồ hoạ Tuỳ theo kiểu đồ hoạ hoặc thiết bị đồ hoạ mà ta có các thuậtngữ khác nhau mô tả điểm ảnh

 pixel (picture element) là thuật ngữ mô tả điểm ảnh trong đồ hoạ bitmap

 point là thuật ngữ mô tả điểm ảnh trong đồ hoạ vector

 dot là đơn vị nhỏ nhất mà thiết bị hiển thị (màn hình, máy in,…) hiển thị được

Độ phân giải biểu thị khả năng hiển thị và độ nét của chế độ đồ hoạ, hoặc đối tượng hoặc thiết

bị đồ hoạ Độ phân giải càng cao thì khả năng hiển thị càng lớn hoặc độ nét càng lớn Cónhiều cách mô tả độ phân giải:

 Số cột x số dòng: mô tả màn hình đồ hoạ được chia thành bao nhiêu cột và bao nhiêudòng (từ đó suy ra số pixel và kích thước của mỗi pixel) Thường dùng mô tả kíchthước ảnh số, độ phân giải màn hình Ví dụ nói độ phân giải màn hình là 800x600 cónghĩa là màn hình được chia thành 800 cột, 600 dòng và có 800 x 600 = 480.000 điểmảnh

 Số pixel tối đa mà thiết bị đồ hoạ có thể lưu trữ, thường dùng mô tả độ phân giải củamáy ảnh số Chẳng hạn máy ảnh số 3 mega pixel, 5 mega pixel… Từ số điểm ảnh tối

đa ta có thể ước lượng được kích thước tối đa của ảnh Chẳng hạn máy ảnh 3MP cóthể chụp được ảnh có độ phân giải 2000x1500 (trong khi đó độ phân giải thôngthường của màn hình là 800x600)

 dpi (dot per inch): số dot tạo được trên mỗi inch (thường dùng cho máy in hoặc máyquét ảnh) Độ nét của trang in hoặc ảnh quét phụ thuộc vào dpi Các thông số thườngdùng cho máy in laser là 300 dpi hoặc 600 dpi Từ tham số dpi ta cũng có thể suy rađược kích thước ảnh Chẳng hạn nếu ta quét 1 tấm ảnh tức là 5x4 inch với độ phângiải 300 dpi thì kích thước ảnh ta có là 1500x1200 điểm ảnh

4 Hệ toạ độ và phép chiếu

Hệ toạ độ dùng để xác định vị trí các đối tượng hoặc điểm ảnh, nhờ đó ta thực hiện được cácthao tác đồ hoạ (chẳng hạn để vẽ một đoạn thẳng ta cần chỉ ra toạ độ của 2 điểm đầu mút củađoạn thẳng đó) Có 3 loại hệ toạ độ khác nhau:

Hệ toạ độ hiển thị là hệ tọa độ xác định vị trí các điểm ảnh trên thiết bị hiển thị Do

hạn chế bởi độ phân giải và do đặc điểm của đồ hoạ bitmap, hệ toạ độ hiển thị sử dụng

số nguyên, có trục y hướng xuống dưới và chỉ sử dụng các giá trị toạ độ hữu hạn Ví

dụ nếu độ phân giải là 800x600 thì tất cả các điểm ảnh đều có giá trị toạ độ x là sốnguyên từ 0 đến 799, toạ độ y từ 0 đến 599

Hệ toạ độ thế giới là hệ toạ độ xác định vị trí các đối tượng đồ hoạ khác nhau trong

một thế giới (mặt phẳng, không gian) chung Hệ toạ độ thế giới sử dụng số thực, các

Trang 3

giá trị toạ độ không bị giới hạn và trục y hướng lên trên như hệ toạ độ trong toán học.

Hệ toạ độ thế giới có thể có 2 chiều (2D) hoặc 3 chiều (3D)

Hệ toạ độ đối tượng là hệ toạ độ dùng mô tả kích thước của đối tượng đồ hoạ và vị trí

tương đối của các thành phần tạo nên đối tượng đó

Khi muốn hiển thị đối tượng đồ hoạ lên thiết bị đồ họa ta cần thực hiện ánh xạ giữa toạ độ đối

tượng, toạ độ thế giới và toạ độ hiển thị Quá trình ánh xạ đó gọi là phép chiếu.

III BIỂU DIỄN MÀU

1 Các chế độ màu sắc

Đồ hoạ máy tính xử lý 3 chế độ màu sắc khác nhau:

 Đơn sắc: chỉ có 2 màu là màu nền và màu nổi (có thể là đen và trắng, xanh vàtrắng…) Được dùng phổ biến để mô tả ảnh nhị phân, ma trận kí tự…

 Đa mức xám (grayscale): dùng các màu xám đậm nhạt khác nhau (trải từ đen đếntrắng) để mô tả sắc độ (giống như ảnh chụp đen trắng) Dùng phổ biến cho kết xuấttrên máy in

 Màu (color): dùng các màu sắc tự nhiên (đen, trắng, xanh, đỏ, tím, vàng…) Số lượngmàu sử dụng dao động từ 16 màu đến 16 triệu màu hoặc hơn

Trong đồ hoạ máy tính mỗi điểm ảnh sẽ mang một màu duy nhất

2 Phân tích và tổng hợp màu

Màu sắc của ánh sáng phụ thuộc vào bước sóng của ánh sáng Mỗi màu trong tự nhiên đều cóthể phân tích và tổng hợp từ một số màu cơ bản Thường trong đồ hoạ người ta sử dụng 3 màu

cơ bản là đỏ (Red), xanh lá cây (Green) và xanh da trời (Blue)

Phân tích một màu là xác định màu đó được tạo thành từ 3 màu cơ bản với các thành phầnbao nhiêu Để xác định thành phần màu đỏ trong một màu nào đó, ta chiếu ánh sáng màu đóqua một kính lọc màu đỏ rồi đo cường độ ánh sáng sau khi đi qua kính lọc Làm tương tự nhưthế để xác định thành phần 2 màu còn lại

Ngược lại, ta tổng hợp một màu bằng cách chiếu các nguồn sáng đơn sắc với cường độ thíchhợp (tương ứng với thành phần chúng ta phân tích được) để tạo nên màu đó

3 Số hoá màu

Trong máy tính, tất cả các dữ liệu đều phải số hoá để xử lý Màu sắc trong đồ hoạ máy tínhcũng được số hoá thành các con số nhị phân Độ sâu màu là số bit của số nhị phân biểu diễn

màu Nếu độ sâu màu là d thì số màu khác nhau có thể biểu diễn được là 2 d Ví dụ nếu ta dùng

24 bit để biểu diễn màu cho một điểm ảnh thì ta có 224 (hơn 16 triệu) màu khác nhau

Có hai phương pháp số hoá màu: số hoá trực tiếp và số hoá theo chỉ số

Số hoá màu trực tiếp ta số hoá mỗi màu bằng cách mô tả sắc độ của từng thành phần R,G,Btương ứng với màu đó Chẳng hạn trong chế độ màu 24 bit, ta dùng 8 bit cho mỗi màu cơ bản,như vậy có 256 mức độ khác nhau mô tả cường độ của từng màu cơ bản đó

Trong trường hợp độ sâu màu không lớn, người ta dùng phương pháp biểu diễn màu theo chỉ

số Chẳng hạn với độ sâu màu 8 bit (tương ứng với 28 = 256 màu), người ta sẽ có một bảngmàu (palette) gồm 256 mục, mỗi mục mô tả thành phần RGB của một màu và giá trị màu củamỗi điểm ảnh sẽ là chỉ số của mục mô tả màu tương ứng

4 Các hệ màu

Trang 4

Ngoài hệ màu RGB, trong đồ hoạ máy tính còn sử dụng một số hệ màu khác như HSV,CMYK.

5 Vùng đệm ảnh (frame buffer) và bộ nhớ đồ hoạ

Bộ nhớ đồ hoạ (Video RAM) là nơi chứa các thông tin mô tả từng pixel của màn hình đồ hoạ,thường là nằm trên card video Nếu độ phân giải của màn hình là M cột x N dòng và độ sâumàu là d bit thì bộ nhớ đồ hoạ có kích thước ít nhất là M x N x d (bit)

Vùng đệm ảnh là vùng nhớ lưu trữ tạm thời dữ liệu đồ hoạ bitmap trong quá trình xử lý Vùngđệm ảnh thường được chia thành nhiều khung ảnh, mỗi khung mô tả một ảnh bitmap Đôi khingười ta cũng gọi bộ nhớ đồ hoạ (nơi chứa dữ liệu đồ hoạ bitmap được hiển thị trên màn hình)

Ngược lại, thiết bị ra kết xuất mềm cho phép cập nhật kết quả hiển thị một cách nhanh chóng

và không hạn chế Thiết bị ra kiểu này phổ biến nhất là màn hình Hiện tại có 2 công nghệmàn hình đang được sử dụng rộng rãi:

 Màn hình CRT: thực hiện việc hiển thị hình ảnh bằng cách phóng tia âm cực lên mànhình huỳnh quang, tạo ra các điểm sáng (như nguyên tắc của TV) Để vẽ toàn bộ mànhình, máy sẽ vẽ từng điểm, từng dòng (scan line) Sau khi vẽ xong toàn bộ màn hình,kích thích huỳnh quang ngừng thì điểm sáng tương ứng không còn sáng nữa, máy lại

vẽ lại Số lần máy vẽ lại toàn bộ màn hình trong một giây gọi là tần số làm tươi(refresh rate) Tần số này càng cao thì hình ảnh càng nét và màn hình không có hiệntượng rung

 Màn hình LCD: mỗi điểm ảnh là một phần tử hiển thị tinh thể lỏng Mỗi tinh thể nàyđược một mạch điện riêng điều khiển Do đó máy có thể trực tiếp bật sáng hay tắt mộtđiểm ảnh bất kì

Ngoài màn hình còn có các thiết bị ra kết xuất mềm khác như máy chiếu (projector)…

Trang 5

không tiện cho việc di chuyển dữ liệu Để giải quyết vấn đề này người ta có thể truyền dữ liệuqua hệ thống mạng hoặc sử dụng các thiết bị lưu trữ cơ động hơn như đĩa quang hay đĩa FlashUSB, thẻ nhớ.

Các loại đĩa quang phổ biến là CD và DVD Ưu điểm của đĩa quang là gọn nhẹ, rất cơ động

và có các thiết bị đọc rất phổ biến Dung lượng của các đĩa CD từ 650 MB đến 700 MB, dunglượng của DVD có thể lên đến 4.7 GB Nhược điểm của đĩa quang là chỉ đọc (không ghi xoáđược) Cũng có những loại đĩa quang có thể ghi-xoá được nhưng không phổ biến và cần cácthiết bị đọc-ghi đắt tiền Ngoài ra đĩa quang cũng dễ bị hỏng do va đập, trầy xước…

Đĩa Flash USB hiện đang được dùng ngày một phổ biến do sự gọn nhẹ, tính cơ động và khảnăng ghi xoá tuỳ ý Dung lượng của đĩa Flash USB ngày một tăng (128MB, 256MB,512MB…)

Thẻ nhớ cũng là một loại thiết bị lưu trữ đang dần phổ biến, chủ yếu sử dụng cho các thiết bịnhỏ gọn như máy ảnh kĩ thuật số, điện thoại di động… Với máy tính thì thẻ nhớ ít được sửdụng hơn do đòi hỏi phải có những thiết bị đọc chuyên dụng

4 Bộ điều khiển đồ hoạ

Bộ điều khiển đồ hoạ (video controller) phụ trách việc hiển thị hình ảnh trên màn hình, thựchiện các thao tác đồ hoạ như vẽ hoặc xoá màn hình, thay đổi màu sắc… Bộ điều khiển đồ hoạ

có thể nằm trên một card video rời hoặc được chế tạo sẵn trên mainboard (thường gọi làonboard)

Để lưu trữ thông tin hình ảnh cần hiển thị trên màn hình, bộ điều khiển đồ hoạ làm việc trựctiếp với phần bộ nhớ chuyên biệt là bộ nhớ đồ hoạ (Video RAM) Nếu bộ điều khiển đồ hoạnằm trên card rời thì trên card cũng lắp sẵn VRAM (và thường có tốc độ nhanh hơn RAM hệthống rất nhiều) Ngược lại, nếu bộ điều khiển đồ hoạ là onboard thì sẽ sử dụng một phần củaRAM hệ thống làm VRAM (do đó khả năng và tốc độ sẽ thấp hơn so với card rời)

Bộ điều khiển đồ hoạ thực hiện các thao tác đồ hoạ bằng các thay đổi các thông tin trongVRAM Nội dung của VRAM sẽ được các bộ chuyển đổi biến thành tín hiệu chuyển tới mànhình để thực hiện việc hiển thị

Các bộ điều khiển đồ hoạ hiện đại còn có thêm các chức năng xử lí 3D như tính toán phépchiếu, tạo bóng, phủ vân bề mặt…

5 Các thiết bị xử lí khác

Bộ xử lí (CPU) là thiết bị thực hiện tất cả các thao tác xử lí dữ liệu đồ hoạ (video controller cơbản chỉ thực hiện các thao tác liên quan đến hiển thị) Các CPU hiện đại cũng có những tậplệnh chuyên dành cho xử lí 3D (tập lệnh MMX, tập lệnh 3D Now!)

Bộ nhớ chính (RAM) là nơi lưu trữ các dữ liệu đồ hoạ cần thiết trong quá trình xử lí CPUkhông đọc dữ liệu đồ hoạ trực tiếp từ thiết bị lưu trữ (đĩa cứng, đĩa CD…) mà chúng được đưavào RAM trước đó

Trang 6

BÀI 2 ĐỒ HOẠ TRONG TURBO PASCAL 7.0

I, GIỚI THIỆU VỀ MÔI TRƯỜNG

1 Các file và thư viện cần thiết để lập trình đồ hoạ trên môi trường Turbo Pascal 7.0

Để lập trình và thực thi các chương trình đồ hoạ trong TP, ta phải có đầy đủ các tập tin sau:

TURBO.EXE và TURBO.TPL: là các file tối thiểu để chạy môi trường lập trình của

Turbo Pascal Nếu file TURBO.TPL chưa được sửa lỗi (gây ra lỗi 200 khi sử dụngunit CRT) ta cần cập nhật file TURBO.TPL đã sửa lỗi để sử dụng được đồ hoạ

GRAPH.TPU: file chứa unit Graph, là thư viện đồ hoạ, chứa các lệnh, các hàm và

các định nghĩa khác cho lập trình đồ hoạ trong TP Để sử dụng thư viện Graph, ta

phải có khai báo uses Graph ở đầu chương trình.

 Các tập tin *BGI chứa các trình điều khiển của card màn hình Thường các card màn

hình hiện nay đều hỗ trợ chuẩn VGA, do đó ta chỉ cần file EGAVGA.BGI.

Ngoài ra nếu muốn trình bày hình ảnh đồ hoạ đẹp hơn, ta cần thêm các tập tin *.CHR chứacác font chữ vector (GOTH.CHR là font chữ Gothic, LITT.CHR là font chữ Small,SANS.CHR là font chữ Sans-Serif, TRIP.CHR là font chữ Triplex)

Nếu TP được cài đặt theo tham số chuẩn thì 2 file TURBO.EXE và TURBO.TPL nằm trong

thư mục C:\TP\BIN, file GRAPH.TPU trong thư mục C:\TP\UNITS, các file *.BGI và

*.CHR nằm trong thư mục C:\TP\BGI Do đó trong các chương trình đồ hoạ, người ta

thường dùng đường dẫn chuẩn đến trình điều khiển đồ hoạ là C:\TP\BGI.

2 Khởi tạo môi trường đồ hoạ

Mặc định môi trường Turbo Pascal hoạt động ở chế độ văn bản, các chương trình được viếttrên Turbo Pascal cũng có giao diện mặc định ở chế độ văn bản Muốn viết chương trình đồhoạ trên môi trường Pascal thì ta phải khởi tạo chế độ đồ hoạ cho màn hình Lệnh khởi tạochế độ đồ hoạ trong Turbo Pascal là:

InitGraph(Gd,Gm:Integer;Path:String);

Trong đó:

 Gd: Biến kiểu integer chỉ định card màn hình Do các card màn hình thông dụng hiệnnay đều hỗ trợ chế độ VGA nên ta chỉ cần đặt Gd :=Detect để máy tính tự chọn chế độthích hợp

 Gm: Biến kiểu integer chỉ mode màn hình, thực chất là xác định độ phân giải và độsâu màu Tuy nhiên ta đặt Gd là Detect nên không cần thiết phải khai báo Gm, máytính sẽ tự xác định loại card cho màn hình và thiết lập mode màn hình có độ phân giải

và độ sâu màu lớn nhất tương ứng với loại card màn hình đó

 Path: Biến kiểu string chỉ định đường dẫn vào thư mục chứa các tập tin *.BGI Nếutập tin nằm trong thư mục hiện hành thì có thể khai báo Path là ' ' Ta cũng thườngdùng đường dẫn mặc định là C:\TP\BGI

Trong một số trường hợp việc khởi tạo đồ họa có thể không thành công (không tìm thấydriver, driver không tương thích card màn hình, không đủ bộ nhớ ) Để kiểm tra việc khởi tạo

đồ hoạ có thành công không, ta có thể dùng hàm GraphResult Nếu GraphResult = GrOK thìquá trình khởi tạo đồ hoạ là thành công

Muốn ngắt chế độ đồ hoạ để trở lại chế độ văn bản, ta dùng lệnh CloseGraph Tuy nhiên nếu

ta không dùng lệnh đó thì khi kết thúc chương trình, Turbo Pascal cũng tự động chuyển vềchế độ văn bản

Trang 7

Chương trình ví dụ sau khởi tạo chế độ đồ hoạ, nếu khởi tạo thành công thì sẽ vẽ một đoạnthẳng chéo màn hình, ngược lại sẽ có một thông báo lỗi.

if GraphResult <> GrOk then begin

writeln('Loi do hoa, khong khoi tao duoc!!');

Hệ toạ độ của Turbo Pascal là hệ toạ độ màn hình dùng mô tả vị trí các điểm ảnh (toạ độnguyên, hữu hạn) Sau khi khởi tạo, gốc toạ độ có toạ độ (0,0) là điểm trái trên của màn hình

Khung nhìn

Để thay đổi gốc toạ độ ta có thể sử dụng lệnh thiết lập khung nhìn Khung nhìn là một hìnhchữ nhật có các cạnh song song với các trục toạ độ nơi ta giới hạn vị trí kết xuất Khung nhìnđược dùng vào 2 mục đích:

 Giới hạn các thao tác đồ hoạ trong một khu vực xác định của màn hình đồ hoạ chứkhông phải trên toàn bộ màn hình Việc này nhằm mục đích bảo vệ hình ảnh củanhững vùng khác hoặc tăng tốc độ các lệnh tô màu hoặc xoá màu

Trang 8

 Tạo một hệ toạ độ tạm thời giúp cho việc xử lí các tham số toạ độ đơn giản hơn (chẳnghạn xác định gốc mới cho phép ta vẽ các đối tượng theo toạ độ tương đối với 1 điểmnào đó chứ không cần xác định toạ độ tuyệt đối trên màn hình).

Lệnh thiết lập khung nhìn:

SetViewPort(x1,y1,x2,y2: integer; clip: boolean)

Trong đó (x1,y1), (x2,y2) lần lượt là toạ độ của đỉnh trên trái và dưới phải của hình chữ nhật

ta muốn thiết lập làm khung nhìn Các giá trị của x1,y1,x2,y2 phải là số nguyên nằm trong độphân giải màn hình (ví dụ, nếu độ phân giải là 640x480 thì ta phải chọn 0x1x2639,0y1y2479) Tham số clip mô tả thao tác cắt xén với khung nhìn: nếu clip là true thì tachỉ được vẽ trong hình chữ nhật được thiết lập làm khung nhìn, các đối tượng vẽ đều bị cắtxén bởi các cạnh hình chữ nhật Nếu clip là false thì ta có thể vẽ trên toàn bộ màn hình và cácđối tượng không bị cắt xén Như vậy, nếu ta dùng khung nhìn với mục đích tạo hệ toạ độ tạmthời cho dễ thao tác vẽ thì nên đặt tham số clip là false, ngược lại nếu muốn giới hạn vùngmàn hình cần vẽ thì nên đặt clip là true

Ví dụ, để chuyển gốc toạ độ ra giữa màn hình, ta có thể dùng lệnh:

SetViewPort(320, 240, 600, 400, false);

Chú ý là sau khi thiết lập khung nhìn, gốc toạ độ sẽ là điểm (x1,y1) và các thao tác vẽ tiếptheo đều sử dụng toạ độ theo gốc mới đó (ngoại trừ lệnh SetViewPort luôn sử dụng toạ độtuyệt đối) Ví dụ, sau khi thiết lập khung nhìn bằng lệnh SetViewPort trên, lệnh vẽ tại điểm(0,0) sẽ là thực hiện tại điểm (320,240) theo toạ độ màn hình

Con trỏ đồ hoạ

Trong chế độ văn bản có một vị trí gọi là con trỏ (cursor) hay điểm nhắc được biểu thị bằngmột điểm sáng nhấp nháy, là vị trí là nơi thực hiện các thao tác xử lí, chẳng hạn các kí tự đượcnhập từ bàn phím sẽ được hiện ra ở vị trí điểm nhắc Tương tự như vậy, trong chế độ đồ hoạcũng có một vị trí gọi là con trỏ đồ hoạ, là vị trí sẽ diễn ra các thao tác đồ hoạ nếu không mô

tả rõ toạ độ Chẳng hạn nếu ta dùng lệnh OutText để viết ra một chuỗi kí tự mà không mô tảtoạ độ thì xâu kí tự đó sẽ hiện ra ở con trỏ đồ hoạ Chỉ khác là con trỏ đồ hoạ không nhấpnháy cũng không hiển thị bằng một điểm sáng nhấp nháy như con trỏ trong chế độ văn bản

* Các thao tác với con trỏ đồ hoạ:

Để di chuyển con trỏ đồ hoạ đến một vị trí trên màn hình đồ hoạ, ta dùng lệnh MoveTo Toạ

độ của vị trí đó phụ thuộc vào khung nhìn (là toạ độ tính tương đối theo khung nhìn)

MoveTo(x,y: integer)

Trang 9

Để xác định vị trí hiện tại của con trỏ đồ hoạ, ta có 2 hàm GetX và GetY, mỗi hàm trả lại giátrị hoành độ và tung độ tương ứng của con trỏ đồ hoạ.

2 Màu sắc

Màu sắc trong hệ đồ hoạ của TP phụ thuộc vào card màn hình và trình điều khiển Vào thờigian TP 7.0 được xây dựng (1990-1992) thì công nghệ phần cứng còn chưa phát triển Do đóchế độ đồ hoạ cao nhất mà TP7.0 có trình điều khiển làm việc được là chế độ VGA chuẩn640x480x16 màu Chế độ này có độ sâu màu là 4 bit nên cần bộ nhớ đồ hoạ tối thiểu là640x480x4bit = 156300B = 156 KB

Màu sắc trong TP là màu được mô tả bằng chỉ số, tức là mỗi màu trong 16 màu là một sốnguyên nằm trong miền từ 0 đến 15 Bảng sau mô tả chỉ số và tên màu trong TP:

Black 0 Màu đen Blue 1 Màu xanh lơ Green 2 Màu xanh lá cây Cyan 3 Màu thiên thanh Red 4 Màu đỏ Magenta 5 Màu đỏ tươi Brown 6 Màu nâu LightGray 7 Màu xám sáng DarkGray 8 Màu xám tối LightBlue 9 Màu xanh sáng LightGreen 10 Màu xanh lá cây sáng LightCyan 11 Màu thiên thanh sáng LightRed 12 Màu đỏ sáng LightMagenta 13 Màu đỏ tươi sáng Yellow 14 Màu vàng White 15 Màu trắng

Các thao tác để xử lý màu sắc trong TP:

* Thiết lập màu vẽ:

SetColor(c : word)

Tham số c là tham số mô tả màu cần thiết lập, có thể nhận giá trị từ 0 đến 15 hoặc các tênhằng số màu mô tả trong bảng trên Lệnh SetColor thiết lập màu để vẽ các đối tượng là đườngnét (đoạn thẳng, đường tròn, cung…) hoặc chữ Sau khi dùng lệnh SetColor với màu c, tất cảcác lệnh vẽ đường hoặc vẽ chữ sau đó đều dùng màu c cho các đối tượng được vẽ cho đến khi

có một lệnh SetColor tiếp theo thiết lập một màu vẽ khác Sau khi khởi tạo đồ hoạ màu vẽmặc định là màu trắng (white 15)

* Thiết lập màu nền:

SetBkColor(c : word)

Trang 10

Màu nền trong TP tương ứng với màu 0 (mặc định là màu đen – black) Khi thực hiện cácthao tác xoá màn hình (ClearDevice) hoặc xoá khung nhìn (ClearViewPort) thì toàn bộ vùng

bị xoá sẽ được tô màu là màu nền

* Thiết lập màu tô:

Lệnh SetColor chỉ thiết lập màu cho các đối tượng là đường nét hoặc chữ Với các đối tượngđặc như hình chữ nhật, một vùng kín, để tô màu ta cần dùng lệnh sau để thiết lập:

SetFillStyle(t: word;c : word)

Trong đó tham số c là màu cần thiết lập để tô, t là tham số mô tả mẫu tô (pattern) Có thêmtham số mẫu tô là vì không phải lúc nào cũng tô đối tượng theo kiểu màu đặc mà có thể muốn

tô đối tượng theo các mẫu khác như: gạch ngang, gạch chéo, chấm chấm… Các mẫu khácnhau mà TP hỗ trợ khi tô màu như sau:

3 Các lệnh vẽ điểm

Điểm ảnh (pixel) là đối tượng nhỏ nhất được hiển thị trên màn hình đồ hoạ Từ các điểm ảnh

ta có thể xây dựng các hình đồ hoạ phức tạp hơn Mô tả một điểm ảnh ta cần thông tin về vịtrí (toạ độ) và màu sắc

* Vẽ điểm ảnh

Lệnh PutPixel dùng để vẽ một điểm ảnh lên màn hình đồ hoạ

PutPixel(x,y: integer; color: word)

Tham số x,y mô tả toạ độ của điểm ảnh, tham số color mô tả màu sắc của điểm ảnh

Trong đó (x1,y1) là toạ độ một điểm, (x2,y2) là toạ độ điểm còn lại

Khi vẽ theo toạ độ tương đối, ta chỉ cần mô tả toạ độ một điểm, điểm còn lại chính là vị trícủa con trỏ đồ hoạ Sau khi thực hiện thao tác xong, TP sẽ chuyển con trỏ đồ hoạ đến điểmcòn lại

Lệnh LineTo(x,y) dùng để vẽ một đoạn thẳng từ vị trí con trỏ đồ hoạ hiện tại đến điểm (x,y),sau khi vẽ xong thì chuyển con trỏ đồ hoạ đến điểm (x,y)

Trang 11

Màu sắc của lệnh vẽ đoạn thẳng được chọn bằng lệnh SetColor Ta cũng có thể chọn các tham

số khác để vẽ đoạn thẳng: kiểu nét vẽ (liên tục, chấm, gạch…), độ dày nét vẽ… bằng lệnhSetLineStyle

SetLineStyle(Ls,Pt,Tk: Word);

Trong đó ý nghĩa của các tham số như sau:

Ls xác định kiểu đường bằng các hằng đã định nghĩa trong thư viện UnitGraph như sau:

 SolidLn=0: Đường nét liền

 DottedLn=1: Đường nét đứt quãng

 CenterLn=2: Đường nét chỉ vẽ ở tâm

 DashedLn=3: Đường nét sọc

 UserBitLn=4: Đường nét do người dùng định nghĩa

Pt xác định mẫu vẽ Nếu ta chọn Ls=4 thì Pt là một số nguyên kiểu word chỉ mẫu nét vẽ do

chúng ta định nghĩa Trong đó bit 1 của Pt tương ứng với pixel sẽ được vẽ, bit 0 tương ứngvới pixel không được vẽ

Tk: Xác định độ dày của đường nét, có thể chọn Tk bằng các hằng đã định nghĩa trong thưviện đồ hoạ:

 NormWidth=1

 ThickWidth=3

5 Các lệnh vẽ hình chữ nhật

Có 2 kiểu vẽ hình chữ nhật trong TP: vẽ hình chữ nhật chỉ có đường viền và vẽ hình chữ nhật

có tô màu bên trong

Để vẽ hình chữ nhật chỉ có khung, ta dùng lệnh Rectangle Màu sắc của đường viền do lệnhSetColor đặt Các tham số của lệnh Rectangle mô tả toạ độ của 2 đỉnh chéo nhau của hình chữnhật

Rectangle(x1,y1,x2,y2:Integer);

Để vẽ hình chữ nhật có tô màu ta dùng lệnh Bar Màu sắc của đường viền do lệnh SetColorthiết lập, kiểu tô và màu tô của hình chữ nhật do lệnh SetFillStyle thiết lập Các tham số cũngxác định 2 đỉnh chéo nhau của hình chữ nhật

Bar(x1,y1,x2,y2:Integer);

Ngoài ra ta có thể dùng lệnh Bar3D vẽ khối hình hộp chữ nhật

Bar3D(x1,y1,x2,y2, dep:Integer; nap : boolean);

Trong đó tham số depth mô tả bề dày của hình hộp và tham số nap là true thì sẽ vẽ hình hộp

có nắp, là false thì là hình hộp hở

6 Vẽ đa giác

Tương tự như vẽ hình chữ nhật: có 2 lệnh vẽ đa giác trong TP, một lệnh là DrawPoly để vẽ đagiác không tô màu và lệnh FillPoply để vẽ đa giác có tô màu

DrawPoly(Np: Word; Var P);

FillPoly(Np: Word; Var P);

Trong đó:

Np là số nguyên kiểu Word chỉ số đỉnh của đa giác Với lệnh DrawPoly để vẽ được đa

giác khép kín ta phải thêm đỉnh cuối là đỉnh giả có toạ độ trùng với đỉnh đầu tiên nên

Trang 12

Np phải là số đỉnh đa giác + 1 Ví dụ như muốn vẽ tam giác thì Np phải bằng 4 Lệnh

FillPoly thì không cần

P là một mảng có Np phần tử kiểu PointType (đã được định nghĩa trong UnitGraph)

mô tả toạ độ các đỉnh của đa giác

7 Vẽ cung tròn và đường tròn, cung ellipse

Lệnh vẽ cung tròn:

Arc(x,y:Integer; g1,g2,R: Word);

Lệnh này dùng để vẽ một cung tròn có toạ độ tâm là (x,y), bán kính R, góc bắt đầu là g1, góckết thúc là g2 Góc tính theo chiều lượng giác (ngược chiều kim đồng hồ) dùng đơn vị là độ.Lệnh vẽ cung tròn có tô màu:

PieSlice(x,y:Integer; g1,g2,R: Word);

Tương tự lệnh Arc, lệnh này dùng để vẽ một cung tròn có tô màu (theo thiết lập màu vẽ vàmàu tô hiện tại) có toạ độ tâm là (x,y), bán kính R, góc bắt đầu là g1, góc kết thúc là g2.Lệnh vẽ đường tròn tâm (x,y) và bán kính là R

vị là độ Nếu g2 = g1 + 360 thì ta được một đường ellipse khép kín

Lệnh vẽ hình ellipse có tô màu:

Trong đó st là xâu chữ cần hiển thị

Nếu muốn hiển thị chữ ở vị trí bất kì ta có thể dùng lệnh OutTextXY:

OutTextXY(x,y: integer; St:String);

Trong đó x,y là điểm sẽ hiển thị xâu chữ st

Muốn có các kiểu chữ khác nhau (font chữ, hướng, kích cỡ), ta có thể dùng lệnh sau để thiếtlập (phải thiết lập trước khi gọi các lệnh OutText, OutTextXY):

SetTextStyle(Ft,Dr,Sz: Word);

Thủ tục này dùng để chọn kiểu chữ, trong đó:

 Ft là kiểu chữ, Ft có các giá trị từ 0 đến 9 Trong đó 0 là font bitmap 8x8 mặc định

 Dr là hướng chữ, Dr=0 thì chữ được hiển thị theo chiều ngang từ trái sang phải, Dr=1 chữ

sẽ được hiển thị theo chiều dọc từ trên xuống dưới

 Sz là kích thước của chữ, có giá trị từ 1 đến 10

Trang 13

Ta cũng có thể thiết lập vị trí căn chữ, tức là căn chỉnh vùng sẽ hiển thị chữ so với điểm mô tả

vị trí hiển thị (điểm (x,y) trong lệnh OutTextXY, vị trí con trỏ đồ hoạ trong lệnh OutText).SetTextJustify(ngang, doc: word)

Trong đó các giá trị hợp lệ cho các tham số ngang và doc như sau:

Hằng số (cho hướng ngang) Giá trị Ý nghĩa

LeftText 0 Chữ sẽ hiển thị từ trái sang phải, bắt đầu từ điểm

mô tả hiển thị (căn trái)

CenterText 1 Chữ được hiển thị sao cho điểm mô tả hiển thị

nằm ở giữa vùng chữ (căn giữa)

RightText 2 Chữ sẽ hiển thị từ trái sang phải, kết thúc ở điểm

mô tả hiển thị (căn phải)

Hằng số (cho hướng dọc) Giá trị Ý nghĩa

TopText 0 Chữ sẽ hiển thị từ trên xuống dưới, ở phía dưới

điểm mô tả hiển thị

CenterText 1 Chữ được hiển thị sao cho điểm mô tả hiển thị

nằm ở giữa vùng chữ (căn giữa)

BottomText 2 Chữ sẽ hiển thị từ trên xuống dưới, ở phía trên

điểm mô tả hiển thị

Mặc định căn chữ được thiết lập là LeftText, TopText, tức là chữ được hiển thị từ điểm mô tảsang phải và xuống dưới Đôi khi ta có thể thiết lập căn chữ là CenterText, CenterText để hiểnthị chữ sao cho điểm mô tả hiển thị là tâm của vùng hiển thị chữ

9 Tô loang màu

Ta đã có những lệnh tô màu cho các hình hình học đơn giản (hình chữ nhật, hình tròn…) Cónhững lúc ta cần tô màu 1 vùng bất kì (ví dụ tam giác, hình trăng khuyết…) Một vùng nhưthế có thể xác định bằng một đường biên khép kín TP có lệnh FloodFill để tô màu một vùngnhư thế Chỉ cần xác định được màu của đường biên và một điểm nằm trong vùng cần tô.FloodFill(x,y:Integer,Color: Word);

Tham số (x,y) mô tả một điểm nằm trong vùng cần tô, tham số color mô tả màu của đườngbiên Nếu đường biên không khép kín thì quá trình tô sẽ loang màu ra toàn màn hình Chú ýlệnh FloodFill tiện dùng nhưng tốc độ không cao

10 Lưu trữ ảnh

Đôi khi ta có nhu cầu phải lưu một vùng màn hình vào bộ nhớ bên ngoài và đưa vùng đã lưutrở lại màn hình, chẳng hạn khi vẽ mô phỏng chuyển động, khi lát nền màn hình… TP cungcấp cho chúng ta một số công cụ để thực hiện các công việc đó

Để xác định dung lượng bộ nhớ cần thiết để lưu trữ một vùng nào đó của màn hình (bắt buộcphải là hình chữ nhật), ta dùng hàm ImageSize

ImageSize(x1,y1,x2,y2:integer): word;

Hàm ImageSize cho kết quả là số byte cần thiết để lưu trữ vùng hình chữ nhật có toạ độ chobởi 2 điểm (x1,y1) và (x2,y2) Giá trị của hàm này được dùng để cấp phát bộ nhớ động dùngcho việc sao chép vùng màn hình tương ứng bằng lệnh GetMem:

GetMem(var P:Pointer; sz: word);

Ngày đăng: 31/05/2013, 00:20

TỪ KHÓA LIÊN QUAN

w