Giáo trình Đồ họa trong Pascal - Chương 1: Màn hình của máy tính - Bài 1: Bài mở đầu
I. Đối tượng nghiên cứu và ứng dụng của kỹ thuật đồ hoạ
1. Đối tượng nghiên cứu của kỹ thuật đồ hoạ
Từ khi máy tính ra đời các ứng dụng phi số ngày càng rộng rãi, một trong các ứng dụng là xử lý thông tin bằng hình ảnh. Trong lĩnh vực xử lý thông tin hình ảnh lại được chia thành 2 lĩnh vực:
- Kỹ thuật đồ hoạ
- Xử lý ảnh
Trong khi xử lý ảnh quan tâm đến cách thu nhận, khôi phục lưu trữ các hình ảnh (các hình ảnh này có thể có từ bất kỳ nguồn nào như video, camera.) thì kỹ thuật đồ hoạ tập trung vào vấn đề sử dụng máy tính để tạo ra hình ảnh. Rõ ràng kỹ thuật đồ hoạ và xử lý ảnh đều xử lý thông tin hình ảnh cho nên nó có quan hệ rất mật thiết với nhau nhưng mục đích nghiên cứu của chúng rất khác nhau
2. Ứng dụng của kỹ thuật đồ hoạ
Kỹ thuật đồ hoạ có ứng dụng rất rộng rãi từ khi tốc độ máy tính tăng, khả năng hiển thị của màn hình tốt, khả năng lưu trữ thông tin tăng. Kỹ thuật đồ hoạ được sử dụng trong 2 lĩnh vực chính:
- Vẽ kỹ thuật
- Mô phỏng
CHƯƠNG 1 MÀN HÌNH CỦA MÁY TÍNH $1. BÀI MỞ ĐẦU I. Đối tượng nghiên cứu và ứng dụng của kỹ thuật đồ hoạ 1. Đối tượng nghiên cứu của kỹ thuật đồ hoạ Từ khi máy tính ra đời các ứng dụng phi số ngày càng rộng rãi, một trong các ứng dụng là xử lý thông tin bằng hình ảnh. Trong lĩnh vực xử lý thông tin hình ảnh lại được chia thành 2 lĩnh vực: - Kỹ thuật đồ hoạ - Xử lý ảnh Trong khi xử lý ảnh quan tâm đến cách thu nhận, khôi phục lưu trữ các hình ảnh (các hình ảnh này có thể có từ bất kỳ nguồn nào như video, camera....) thì kỹ thuật đồ hoạ tập trung vào vấn đề sử dụng máy tính để tạo ra hình ảnh. Rõ ràng kỹ thuật đồ hoạ và xử lý ảnh đều xử lý thông tin hình ảnh cho nên nó có quan hệ rất mật thiết với nhau nhưng mục đích nghiên cứu của chúng rất khác nhau 2. Ứng dụng của kỹ thuật đồ hoạ Kỹ thuật đồ hoạ có ứng dụng rất rộng rãi từ khi tốc độ máy tính tăng, khả năng hiển thị của màn hình tốt, khả năng lưu trữ thông tin tăng. Kỹ thuật đồ hoạ được sử dụng trong 2 lĩnh vực chính: - Vẽ kỹ thuật - Mô phỏng II. Màn hình máy vi tính 1. Các chế độ làm việc Màn hình là nơi thể hiện các thông tin, nó phản ảnh các kết quả tính toán, xử lý. Thông tin hiển thị có thể ở dạng văn bản, có thể ở dạng hình ảnh, tương ứng với các dạng thông tin cần hiển thị màn hình có 2 chế độ làm việc: Chế độ văn bản (Text mode) Chế độ đồ hoạ (Graphics mode) Ở chế độ văn bản màn hình được chia thành 80 cột, 25 dòng, mỗi ô là giao của các dòng các cột tạo thành hộp ký tự (text box) Ở chế độ đồ hoạ màn hình được chia thành số dòng, số cột lớn hơn tuỳ thuộc vào chất lượng của màn hình, số cột x số dòng y gọi là độ phân giải của màn hình, người ta dựa vào phân giải và số màu mà màn hình có thể hiển thị để phân chia màn hình thành các loại khác nhau như - MDA (Monochrome Display Adapter) - CGA (Color Graphics Adapter) - EGA (Enhance Graphics Adapter) - VGA (Video Graphics Array) - SVGA (Supper Video Graphics Array) Mỗi màn hình có thể hoạt động ở một chế độ nào đó tuỳ thuộc vào chất lượng của màn hình - hiện nay các màn hình của họ PC có các chế độ sau tính theo hệ cơ số 16. Riêng Mode từ 13 trở đi chỉ dùng cho VGA trở lên Dưới đây là bảng các mode của màn hình Mode (Hexa) Chế độ Độ phân giải Số lượng màu 0 text 40x25 16 1 text 40x25 16 2 text 80x25 16 3 text 80x25 16 4 graph 320x200 4 5 graph 320x200 4 6 graph 320x200 2 7 text 80x25 16 D graph 320x200 16 E graph 640x200 16 F graph 640x350 16 10 graph 640x350 16 11 graph 640x480 2 12 graph 640x480 16 13 graph 320x200 256 100 graph 640x400 256 101 graph 640x480 256 102 graph 800x600 16 103 graph 800x600 256 104 graph 1024x768 16 105 graph 1024x768 256 Dưới đây để phục vụ cho mục đích đồ hoạ chúng ta chỉ khảo sát các chế độ đồ hoạ 16 và 256 màu. Để thiết lập chế độ đồ hoạ ta dùng thủ tục sau đây Procedure set_mode(mode: integer); Var R : registers; Begin R.ax:=$4f02; R.bx:=mode; intr($10,R); End; Còn để đọc Mode màn hình ta dùng hàm sau đây Function Get_mode: integer; Var R : registers; Begin R.ax:=$4f03; intr($10,R); Get_mode:=R.bx; End; Ví dụ : Đặt chế độ màn hình Program Set_Get_Mode; Uses crt,Graph,dos; Var R : registers; mode,gd,gm : Integer; Procedure set_mode(mode: integer); Begin R.ax:=$4f02; R.bx:=mode; intr($10,R); End; Function Get_mode: integer; Begin R.ax:=$4f03; intr($10,R); Get_mode:=R.bx; End; Begin mode:= Get_mode; gd:=0; Set_mode(mode); directvideo:=false; Writeln('mode la : ',Get_mode); InitGraph(gd,gm,' '); directvideo:=false; Writeln('mode la : ',Get_mode); Readkey; Set_mode(mode); End. 2. Hệ toạ độ hiển thị trên màn hình Khi thực hiện các chế độ đồ hoạ người ta quy ước gắn trên màn hình hệ toạ độ Decac theo quy ước sau: Trục X gọi là tọa độ cột, Y gọi là toạ độ hàng Ô có toạ độ X,Y là đơn vị đồ hoạ nhỏ nhất gọi là pixel - một pixel trên màn hình là hình ảnh của một điểm trong hệ toạ độ thực. Khó khăn cơ bản trong kỹ thuật đồ hoạ vi tính là người ta phải sử dụng các pixel có toạ độ nguyên để biểu diễn tất cả các điểm trong hệ toạ độ thực Số pixel có được trên màn hình phụ thuộc vào độ phân giải của màn hình Ví dụ: CGA: 320x200 EGA: 640x350 VGA: 640x480 3. Nguyên tắc tạo màu của màn hình: Để thể hiện màu của mỗi pixel trên màn hình người ta sử dụng 3 màu cơ bản: Red, Green, Blue. Loại màn hình tạo màu theo 3 màu cơ bản trên gọi là loại màn hình RGB. Từ 3 màu cơ bản này người ta tạo ra các màu khác bằng cách thay đổi cường độ sáng (Intensity) của các màu cơ bản trên Chẳng hạn để có 16 màu từ 3 màu cơ bản trên người ta sử dụng 4 bit, 3 bit ứng với 3 màu cơ bản, một bit dùng để thay đổi cường độ sáng theo bảng sau: Color Itensity bit Red bit Green bit Blue bit IRGB Value Black 0 0 0 0 0000 Blue 0 0 0 1 0001 Green 0 0 1 0 0010 Cyan 0 0 1 1 0011 Red 0 1 0 0 0100 Magenta 0 1 0 1 0101 Brown 0 1 1 0 0110 White 0 1 1 1 0111 Gray 1 0 0 0 1000 Bright Blue 1 0 0 1 1001 Bright green 1 0 1 0 1010 Bright Cyan 1 0 1 1 1011 Bright Red 1 1 0 0 1100 Bright magenta 1 1 0 1 1101 Yellow 1 1 1 0 1110 Bright White 1 1 1 1 1111 Để tạo ra 256 màu trên màn hình VGA có 3 nhóm bit kích hoạt, mỗi nhóm gồm 6 bit để thay đổi cường độ sáng của 3 màu cơ bản, các nhóm bit này được tạo thành 3 byte riêng biệt Ví dụ: Blue Green Red Value Black 00 00 00 00 Bright While 3F 3F 3F $3F3F3F Rõ ràng với cách tổ hợp này với màn hình VGA có thể tạo được 64 x 64 x 64 =262.144 màu khác nhau, màn hình VGA cho phép hiển thị cùng một lúc 256 màu trong số 262.144 màu có thể Số màu có thể hiển thị của một pixel phụ thuộc vào số bit dùng để biểu diễn nó Bit/pixel Số màu 1 2 2 4 4 16 8 264 4. Bộ nhớ màn hình (Display memory) Bộ nhớ màn hình là vùng bộ nhớ dùng để chứa dữ liệu trực tiếp hiện ra màn hình, dữ liệu trong bộ nhớ màn hình thay đổi sẽ trực tiếp thay đổi trên màn hình Ở chế độ văn bản (text mode) bộ nhớ chủ dành cho bộ nhớ màn hình được bắt đầu từ địa chỉ B800:0000 Ở chế độ đồ hoạ (graphics mode) bộ nhớ chủ dành cho bộ nhớ màn hình được bắt đầu từ địa chỉ A000:0000 Với màn hình VGA kích thước chuẩn của bộ nhớ màn hình là 256Kb Bộ nhớ màn hình có 2 cách tổ chức Tổ chức dạng gói (packed format) Tổ chức dạng mảng (bit plane) Trong cách tổ chức dạng gói cả bộ nhớ màn hình là một mảng một chiều, mọi phần từ của mảng là 1 byte Trong cách tổ chức bit plane bộ nhớ của màn hình được tổ chức logic thành các mảng hai chiều. Trong các chế độ đồ hoạ 16 màu bộ nhớ màn hình được tổ chức thành 4 mảng gọi là 4 bit plane đánh số từ 0 đến 3 Tất cả các bit plane đều được truy nhập từ cùng một địa chỉ A000 Người lập trình có thể truy nhập vào các bit plane bằng các lệnh thông qua cổng hoặc bằng các ngắt của Rom Bios Chỉ có thể đọc/ghi một byte trên cùng một bit plane. Một byte trên một bit plane chứa thông tin của 8 pixel lân cận theo hàng ngang Muốn đọc thông tin của một pixel nào đó ta phải đọc 4 byte và tách 4 bit plane từ 4 byte này. Còn muốn ghi một pixel ta phải ghi 4 byte và do đó cũng có nghĩa là phải ghi 8 pixel. 5. Trang màn hình (Display page) Trang màn hình là vùng bộ nhớ màn hình ứng với lượng thông tin hiển thị trên một màn hình. Vì vùng bộ nhớ màn hình chuẩn đạt tới 256Kb trong khi lượng thông tin để hiển thị trên một màn hình lại nhỏ hơn, để tạo ra tốc độ hiển thị nhanh, bộ nhớ màn hình cho phép tổ chức thành từng trang màn hình, các trang được đánh số từ 0 trở đi. Trang được hiển thị trên màn hình gọi là trang đang làm việc (active page). Tuỳ thuộc vào chế độ làm việc của màn hình mà bộ nhớ màn hình có số trang khác nhau. Dưới đây là số trang ở một số mode của EGA/VGA Mode độ phân giải số trang số màu kích thước ký tự D 320*200 8 16 8*8 E 640*200 4 16 8*8 10 640*350 2 16 8*14 12 640*480 1 16 8*16 - Chúng ta có thể tự hạn chế về số trang cho mỗi chế độ của màn hình. Ví dụ: - Mode E có tất cả 128000 pixel/page. Vì 8 pixel ứng với một byte trên một bit plane do đó cần 16000 byte/bit plane/ page - một trang cần 64000 byte xấp xỉ 64 kb. Do vậy tối đa chỉ có thể hiển thị được 4 trang. - Mode D: có 64000 pixel/ page. Vì pixel ứng với một byte trên một bit plane do đó cần 8000 byte/ bit plane/ page - một trang cần 32000 byte xấp xỉ 32kb/page do đó tối đa chỉ có thể có 8 trang. - Người ta cũng có thể biết được địa chỉ đầu của mỗi trang trong từng chế độ làm việc của màn hình. Mode D: A000 - A1F3F A200 - A3F3F A400 - A5F3F A600 - A7F3F A800 - A9F3F AA00 - ABF3F AC00 - ADF3F AE00 - AFF3F Mode E: A000 - A3E7F A400 - A7E7F A800 - ABE7E AC00 - AFE7E
File đính kèm:
- BAI1.doc