Bài giảng Kiến trúc máy tính - Chương 4 : Đồ họa máy tính - Nguyễn Đức Minh
Bạn đang xem tài liệu "Bài giảng Kiến trúc máy tính - Chương 4 : Đồ họa máy tính - Nguyễn Đức Minh", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_kien_truc_may_tinh_chuong_4_do_hoa_may_tinh_nguyen.pdf
Nội dung text: Bài giảng Kiến trúc máy tính - Chương 4 : Đồ họa máy tính - Nguyễn Đức Minh
- Chương 4: ĐỒ HỌA MÁY TÍNH 1. Đồ họa trên máy tính cá nhân a. Giới thiệu đồ hoạ trên máy tính b. Làm việc trong chế độ đồ họa 2. Lỗi đồ họa 3. Các hàm đồ họa a. Hàm cho một điểm ảnh và kích thước màn hình b. Hàm vẽ đường c. Hàm vẽ hình 4. Tô màu a. Đặt mẫu tô cho đường b. Đặt mầu tô c. Đặt mẫu tô cho hình d. Tô màu 5. Văn bản trong đồ họa. a. Các font chữ b. Hiển thị văn bản trên màn hình c. Căn lề
- 1. Đồ họa trên máy tính cá nhân a.Giới thiệu đồ hoạ trên máy tính . Chế độ làm việc văn bản . Chế độ làm việc đồ họa . Ngày nay, ứng dụng của các chương trình sử dụng đồ họa càng được mở rộng . Ngôn ngữ LTC đưa ra thư viện chứa các hàm cơ bản làm việc ở chế độ đồ họa có tính tương thích cao, có thể chạy trên nhiều cấu hình khác nhau. . Một số bộ điều khiển của màn hình CGA (Color Graphic Adapter), EGA (Enhanced Graphic Adapter) VGA (Video Graphic Adapter)
- 1. Đồ họa trên máy tính cá nhân b. Làm việc trong chế độ đồ họa – Trong chế độ đồ họa, màn hình chia ra nhiều điểm ảnh, tùy theo khả năng phần cứng – Để điều khiển màn hình với các bộ điều khiển khác nhau như EGA, CGA, người ta dùng các trình điều khiển. Các trình này nằm trong tệp có phần mở rộng là BGI – Các hàm đồ họa nằm trong thư viện
- 1. Đồ họa trên máy tính cá nhân b.Làm việc trong chế độ đồ họa –Khởi động đồ họa (chuyển từ văn bản sang đồ họa), chúng ta dùng hàm: •void initgraph(int *driver, int *mode, char *path) –Trong đó: • driver là số hiệu trình điều khiển đồ họa. Thường có giá trị mặc định là 0 – DETECT • mode là địa chỉ của số hiệu kiểu điều khiển đồ họa với các mức độ phân giải màn hình, bảng màu. Với giá trị mode = 0 thì sẽ tự tìm số hiệu thích hợp • Path: là đường dẫn tới địa chỉ có chứa chương trình điều khiển đồ họa
- 2. Lỗi đồ họa • Khi chuyển sang làm việc ở chế độ đồ họa, ngoài các lỗi từ cú pháp, chương trình còn có thể phát sinh một số lỗi đồ họa khác. • Để biết lỗi đồ họa, chúng ta dùng hàm int graphresult(). Hàm này sẽ trả về mã của lỗi. Tiếp theo, để biết được đó là lỗi gì ta dùng hàm – char *grapherrormsg (int codeerror) – Hàm này trả về các thông báo lỗi tương ứng.
- 2. Lỗi đồ họa – Một số lỗi thông dụng như sau 0 grOK Không có lỗi -1 grNoInitGraph Trình ĐH không được cài -2 grNotDetected Không tìm được PC tương thích -3 grFileNotFound Không tìm thấy tt divice driver -7 grNoFloodMem Không đủ bộ nhớ để tô theo vết dầu loang .
- 3. Các hàm đồ họa a. Hàm cho một điểm ảnh và kích thước màn hình – Hàm lấy màu của điểm ảnh • unsigned getpixel (int x, int y) • Giá trị màu trả về là một số không dấu • x, y là tọa độ của màn hình – Hàm vẽ điểm ảnh • void putpixel (int x, int y, int color) – Hàm lấy chiều rộng, chiều cao của màn hình • int getmaxx(void): Lấy chiều rộng của màn hình • int getmaxy(void): Lấy chiều cao của màn hình
- 3. Các hàm đồ họa b. Hàm vẽ đường, đoạn thẳng – Vẽ một đoạn thẳng • void line(int x1, int y1, int x2, int y2) • x1, y1 là tọa độ điểm đầu • x2, y2 là tọa độ điểm cuối – Di chuyển đến tọa độ mới • moveto(int x, int y); Vẽ từ điểm hiện tại tới một điểm mới • void lineto(int x, int y) • x, y là tọa độ điểm đích
- 3. Các hàm đồ họa c. Hàm vẽ hình – Hình chữ nhật • void retangle(int left, int top, int right, int bottom) – Hình đa giác: cho phép vẽ những đường gấp khúc đi qua những cặp điểm x,y. Để vẽ hình này cần một mảng 1 chiều các điểm có kiểu nguyên để thành từng cặp tọa độ điểm. • void drawpoly(int n, int *P) với n là số đỉnh, P là các cặp điểm – Hình tròn • void circle(int x, int y, int radius) • x, y là tâm, radius là bán kính
- 3. Các hàm đồ họa c. Hàm vẽ hình – Hình elip • void ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius) • x, y là tâm • stangle, endangle là góc bắt đầu và kết thúc • xradius, yradius là bán kính theo x và bán kính theo y – Hình hộp • void bar3d(int left, int top, int right, int bottom, int depth, int topflag) • depth chiều sâu và topflag là xác định nếu hình có nắp
- 4. Tô màu a. Đặt mẫu tô cho đường - Hàm void setlinestyle(style, patrern, thick) - Trong đó: - int style: kiểu của đường với các giá trị như sau: 0 SOLID_LINE Nét đậm 1 DOTTED_LINE Nét chấm 2 CENTER_LINE Ghạch chấm 3 DASHED_LINE Nét đứt 4 USERBIT_LINE Kiểu do người dùng định nghĩa
- 4. Tô màu a. Đặt mẫu tô cho đường - Hàm void setlinestyle(style, pattern, thick) - Trong đó: - Pattern là mẫu tô khi style = 4 - Thick là độ dày và nó có giá trị như sau 1 NORM_WIDTH Dày 1 điểm ảnh 3 THICK_WIDTH Dày 3 điểm ảnh
- 4. Tô màu b. Đặt màu tô - Hàm đặt màu nền - void setbkcolor (int color) - Hàm để đặt mầu tô cho đường - void setcolor (int color) - Các giá trị màu và tên màu tùy thuộc vào kiểu đồ họa CGA, EGA, VGA - Giá trị màu có thể là hằng ký tự: BLACK, RED, WHITE, YELLOW, EGA_BLACK, EGA_BLUE, CGA_YELLOW
- 4. Tô màu c. Đặt mẫu tô cho hình - Hàm đặt mẫu tô cho hình - void setfillstyle (pattern, color) - Các giá trị mà pattern có thể nhận từ 0 tới 12 với các cách tô khác nhau. EMPTY_FILL 0 Màu nền SOLID_FILL 1 Màu đặc SLASH_FILL 4 Gạch chéo dày HATCH_FILL 7 Sọc dừa thưa WIDE_DOT_FILL 10 Chấm thưa
- 4. Tô màu d. Tô màu - Môt số phương pháp tô màu - Tô theo vết dầu loang - Tô theo phương pháp dựng rào - Để tô màu, ta dùng hàm - void floodfill(int x, int y, int border) - Với x, y là tọa độ điểm, border là màu của đường biên
- 5. Văn bản trong đồ họa a. Các font chữ - Hàm void settextstyle(int font, int direction, int charsize) - font chứa font cần dùng, thường có giá trị là 0, tức là bộ font cài sẵn - direction là hướng có giá trị 0 tức là từ trái qua phải, 1 từ dưới đáy lên - charsize là kích thước font b. Hiển thị văn bản trên màn hình - Hàm cho phép hiển thị văn bản tại vị trí hiện tại: void outtext(char *chuoi) - Hàm cho phép hiển thị văn bản tại một vị trí xác định: void outtextxy(int x, int y, char *chuoi) c. Căn lề: - Hàm void settextjustify (int horiz, int vert) cho phép căn lề với các giá trị - horiz căn theo chiều ngang với các giá trị 0 - trái, 1- giữa, 2 – phải - vert căn theo chiều đứng với các giá trị 0 – đáy, 1- giữa, 2 – đỉnh