Tài liệu tham khảo giáo trình Tin học đại cương dùng cho khối A do Đỗ Thị Mơ chủ biên - Bộ môn công nghệ phần mềm gồm 2 phần chia làm 13 chương - Phần 2 Ngôn ngữ lập trình TURBO PASCAL - Chương 7 Đồ họa và âm thanh
CHƯƠNG VII ðỒ HOẠ VÀ ÂM THANH 1- ðồ hoạ 1.1 - Khái niệm chung Màn hình máy vi tính có nhiều loại khác nhau, máy AT-386, AT-486, AT586 thường dùng loại hình VGA (Video Graphic Adapter), TVGA (Top of VGA) SVGA (Supper VGA), loại hình dùng hai chế ñộ: chế ñộ TEXT - hiển thị văn chế ñộ GRAPHIC - hiển thị ñồ hoạ Trong chế độ TEXT hình chia thành 25 dịng 80 cột, viết kín hình ta viết 2000 ký tự Chúng ta thay đổi chế độ phân giải để viết 25 dòng x 40 cột 80 dòng x 50 cột Muốn vẽ hình, tơ màu hình ta phải chuyển sang chế ñộ ñồ hoạ, chế ñộ hình xem ma trận điểm, tuỳ thuộc độ phân giải ta có ma trận 640x480 ñiểm 1024x720 ñiểm Mỗi ñiểm hình gọi Pixel tức phần tử ảnh ( Picture Element ), ta hồn tồn chủ động việc thay đổi màu sắc, cường ñộ sáng ñiểm ñể tạo tranh theo ý muốn Vị trí điểm hình biểu diễn hai toạ độ: Hồnh ñộ Tung ñộ, gốc toạ ñộ (0,0) ñiểm góc bên trái hình cịn điểm góc bên phải có toạ độ 639,479 Muốn chuyển sang làm việc chế ñộ ñồ hoạ, thư mục hành (thư mục chứa chương trình Pascal) phải có tệp GRAPH.TPU, *.BGI *.CHR Lời gọi đơn vị chương trình đồ hoạ phải đặt đầu chương trình sau từ khố USES ví dụ 43 Ví dụ 43 Program Ve_hinh; Uses GRAPH; 1.2 - Khởi ñộng chế ñộ ñồ hoạ Trong phần thân chương trình cần phải đưa vào thơng báo kiểu hình, chế độ đồ hoạ (MODE) tương ứng Những người làm tin học ứng dụng thường không quan tâm ñến thông số dễ lúng túng cần khai báo ðể khắc phục nhược điểm Turbo Pascal có sẵn thủ tục khởi tạo chế ñộ ñồ hoạ Initgraph(var GD,GM: Integer, DP:string[n]); Khi gọi thủ tục với tham số hợp lệ Initgraph tự xác định kiểu hình Mode đồ hoạ tối ưu Người lập trình tự khai báo tham số GD, GM (Trong GD: Graph Driver - số ngun xác định kiểu hình; GM: Graph Mode - số nguyên xác ñịnh Mode ñồ hoạ) Trước hết phần khai báo biến tham số phải khai thuộc kiểu Integer, sau phần thân chương trình phải chọn giá trị thích hợp cho kiểu hình Mode đồ hoạ Thơng thường khơng biết xác kiểu hình Mode ñồ hoạ máy tính ñang sử dụng nên gặp lúng túng khai báo Trong trường hợp tốt ñể Pascal tự xác ñịnh giúp tham số Nếu sau từ khoá Begin phần thân chương trình khai báo 177 Trường ðại học Nơng nghiệp - Giáo trình Tin học ñại cương - 177 GD:= DETECT; Initgraph hiểu phải tự xác định kiểu hình Mode đồ hoạ cho đạt kết tối ưu Nói chung trừ trường hợp ñặc biệt, không nên tự xác ñịnh thơng số làm Bảng cho biết giá trị tham số GD,GM ñộ phân giải hình ba loại hình có, loại thơng dụng VGA Bảng Kiểu hình Mode đồ hoạ Tên CGA Giá trị EGA IBM8514 VGA Tên CGAC0 CGAC1 CGAC2 CGAC3 CGACHi EGALO EGAHi IBM8514L O IBM8514Hi VGALO VGAMed VGAHi ðộ phân giải Giá trị 1 320x200 320x200 320x200 320x200 640x200 640x200 640x350 640x480, 256 màu 1024x768, 256 màu 640x200 640x350 640x480 Ví dụ 44 trình bày cách sử dụng thủ tục Initgraph để thiết kế chương trình vẽ đường trịn có tâm hình bán kính 50 Pixel Các tham số GD,GM Pascal tự xác ñịnh, tệp ñiều khiển ñồ hoạ ñặt thư mục TP ñĩa cứng C Ví dụ 44 Program Ve_hinh_tron; Uses graph; Var GD,DM: Integer; BEGIN GD:= detect; Initgraph(GD,GM,'C:\tp\bgi'); If graphresult grok then halt(1); Circle(320,240,50); Readln; CloseGraph; END Nếu muốn tự khai báo GD GM (Ví dụ: hình VGA, kiểu ñồ hoạ ñộ phân giải cao, tệp tin ñồ hoạ chứa thư mục TP5 ñĩa A) bỏ lệnh GD:=DETECT Và viết lại đoạn đầu ví dụ 44 sau: 178 Trường ðại học Nơng nghiệp - Giáo trình Tin học đại cương - 178 GD:=VGA; GM:=VGAHi; INITGRAPH(GD,GM,'C:\TP\BGI'); Chú ý: Có thể thay tên hình giá trị tương ứng có bảng Tham số DP ( Driver Path ) ñường dẫn tới thư mục chứa tệp điều khiển kiểu hình đồ hoạ, ví dụ ñược khai 'c:\tp\bgi' nghĩa ổ ñĩa C thư mục TP, cịn BGI tệp khiển Trong trường hợp khơng khai báo cho DP, nghĩa để chuỗi rỗng '' Pascal tự tìm tệp điều khiển đồ hoạ thư mục chủ (là nơi mà Pascal ñược khởi ñộng) 1.3 - Kiểm tra lỗi ñồ hoạ Dòng thứ ví dụ 44 If graphresult grok then halt(1); Là câu lệnh kiểm tra lỗi ñồ hoạ Việc kiểm tra thực thơng qua hàm hàm graphresult Lỗi đồ hoạ thường phát sinh khơng tìm thấy trình điều khiển đồ hoạ, khai báo khơng tham số GD, GM, DP Nếu phát lỗi hàm Graphresult nhận giá trị cho bảng sau, giá trị ứng với chuỗi ký tự: Bảng lỗi hàm Graphresult Giá trị Hằng chuỗi ý nghĩa Grok Tốt, khơng có lỗi -1 Grnoinitgraph Khơng tìm thấy đơn vị đồ hoạ -2 Grnotdetected Khơng có phần cứng đồ hoạ -3 GrFilenotfound Khơng tìm thấy tệp ñiều khiển hình ñồ hoạ -4 GrInvalidDriver Trình ñiều khiển hỏng, khơng hợp lệ -5 GrNoloadMem Bộ nhớ động (RAM) bị thiếu -6 GrNoscanMem Khơng thực việc kiểm tra nhớ -7 GrNoFloodMem -8 GrFontNoFound Khơng tìm thấy tệp chứa font chữ -9 GrNoFontMem Khơng đủ nhớ ñể nạp Font chữ -10 GrInvalidMode Kiểu ñồ hoạ khơng hợp lệ -11 GrError Lỗi đồ hoạ (tổng quát ) -12 GrIOError Lỗi ñường nhập, xuất ñồ hoạ -13 GrInvalidFont Kiểu chữ không hợp lệ -14 GrInvalidFontNum Số hiệu kiểu chữ không hợp lệ Như giá trị hàm Graphresult khác Grok nghĩa có lỗi chương trình bị dừng lệnh Halt(1), cịn tốt tiếp tục làm việc 179 Trường ðại học Nông nghiệp - Giáo trình Tin học đại cương - 179 1.4 - Một số thủ tục để vẽ hình * MOVETO(x,y) : Di chuyển trỏ ñến toạ ñộ x,y (x hồnh độ, y tung độ) x,y giá trị kiểu Integer, với hình VGA 0