Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
163,5 KB
Nội dung
PHỤ LỤC HƯỚNG DẪN SỬ DỤNG THƯ VIỆN ĐỒ HỌA TRONG BC MỘT SỐ LƯU Ý CHUNG Yêu cầu tối thiểu phải có tập tin điều khiển hình EGAVGA.BGI (Thông thường tệp thường nằm thư mục \BC\BGI cài đặt) Để dùng thư viện hàm đồ họa cần có dòng lệnh : #include đặt mục chọn Graphics library ON ([x]) menu Options/Linker/Libraries Đặt Model Large mục chọn Options/Linker/Code generation… Không nên dùng hàm liên quan đến hình chế độ văn printf, scanf, … dùng chế độ đồ họa Khi cần tham khảo cú pháp, cách sử dụng hàm đồ họa nào, đưa trỏ tên hàm chương trình sau nhấn tổ hợp phím CTRL+F1 Muốn tham khảo danh sách toàn hàm thư viện đồ họa nhấn tổ hợp phím CTRL+F1 dòng chữ graphics.h KHỞI TẠO VÀ ĐÓNG CHẾ ĐỘ ĐỒ HỌA Nhóm hàm ý nghóa sử dụng Tên hàm initgraph closegraph Ý nghóa Khởi tạo đóng chế độ đồ họa Thông thường việc khởi tạo đồ họa viết dạng hàm graphdefaults Đặt thiết lập đồ họa giá trò mặc đònh bao gồm vò trí trỏ, bảng màu (palette color), màu nền, màu vẽ, mẫu tô (fill pattern), kiểu tô (fill style), … graphresult Trả mã lỗi thao tác đồ họa sau không thực grapherrormsg Trả trỏ tới chuỗi thông báo tương ứng với mã lỗi cho trước (Dùng hàm sau có mã lỗi để biết thao tác đồ họa thực không thành công) detectgraph Xác đònh trình điều khiển thiết bò chế độ đồ họa để dùng Tham khảo getgraphmode, getdrivername, getmodename, getmaxmode, getmoderange, setgraphmode, restorecrtmode, registerbgidriver, registerbgifont, installuserdriver, setgraphbufsize… Xây dựng hàm khởi tạo chế độ đồ họa #include #include #include #include void InitGraph(void) { int gdriver = DETECT, gmode, errorcode; /* Goi ham khoi tao che do hoa voi duong dan den tap tin BGI la thu muc hien hanh */ initgraph(&gdriver, &gmode, ""); /* Lay ket qua cua thao tac khoi tao */ errorcode = graphresult(); if (errorcode != grOk) // Thao tac khoi tao gap loi { // In thong bao loi man hinh printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); //Ngung han chuong trinh } } Cấu trúc chương trình đồ họa thông thường void main (void) { … InitGraph(); // Khoi tao che do hoa // Cac thao tac hoa tiep theo sau day … closegraph(); // Ngung lam viec tren che do hoa … } Chương trình minh họa Mô tả CT : Phát sinh ngẫu nhiên đường thẳng với màu tùy ý hình Chương trình kết thúc người dùng nhấn phím // Khai bao cac tap tin INCLUDE #include #include #include #include #include // Khai bao cac bien toan cuc int MaxX, MaxY; // Chieu rong va chieu cao toi da cua man hinh int MaxColors; // So mau toi da // Khai bao cac ham dung chuong trinh // Ham khoi tao che do hoa void InitGraph(void) { int gdriver = DETECT, gmode, errorcode; /* Goi ham khoi tao che do hoa voi duong dan den tap tin BGI la thu muc hien hanh */ initgraph(&gdriver, &gmode, ""); /* Lay ket qua cua thao tac khoi tao */ errorcode = graphresult(); if (errorcode != grOk) // Thao tac khoi tao gap loi { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); //Ngung han chuong trinh } // Lay cac thong tin ve chieu rong va chieu cao toi da cua che do hoa dang dung MaxX = getmaxx(); MaxY = getmaxy(); // Lay thong tin ve so mau toi da MaxColors = getmaxcolor() + 1; } // Ham phat sinh ngau nhien cac duong thang voi mau y void LineDemo(void) { int x1, y1, x2, y2; // Toa diem dau va diem cuoi int color; // Mau ve duong thang cleardevice(); // xoa man hinh { // Phat sinh ngau nhien toa duong thang x1 = random(MaxX); y1 = random(MaxY); x2 = random(MaxX); y2 = random(MaxY); // Phat sinh ngau nhien mau ve duong thang color = random(MaxColors); // Goi ham dat mau ve duong thang setcolor(color); // Goi ham hoa thuc hien viec ve duong thang line(x1, y1, x2, y2); } while (!kbhit()); // Vong lap ket thuc nguoi dung nhan phim bat ki } // Ham chinh cua chuong trinh void main (void) { randomize(); // Khoi tao bo phat sinh so ngau nhien InitGraph(); // Khoi tao che do hoa // Cac thao hoa LineDemo(); getch(); closegraph(); // Ngung lam viec tren che do hoa } HỆ THỐNG TỌA ĐỘ Nhóm hàm ý nghóa sử dụng Tên hàm Ý nghóa getmaxy Trả chiều rộng (theo x) chiều cao (theo y) tối đa chế độ hình dùng getx Trả tọa độ hành trỏ getmaxx gety getviewsettings Lấy thông tin viewport hành Thông tin lưu kiểu struct viewporttype {int left, top, right, bottom, clip} cleardevice Xóa toàn hình đồ họa màu đưa trỏ vò trí (0, 0) hình clearviewport Xóa toàn viewport đưa trỏ vò trí (0,0) viewport setviewport Thiết lập viewport cho thao tác đồ họa (viết, vẽ, tô, ) VẼ ĐIỂM, ĐƯỜNG, VÙNG Nhóm hàm ý nghóa sử dụng Tên hàm Ý nghóa putpixel Vẽ hình pixel vò trí xác đònh getpixel Trả màu pixel vò trí cho trước Tên hàm Ý nghóa moveto Di chuyển vò trí trỏ hành line Vẽ đoạn thẳng circle Vẽ đường tròn, ellipse ellipse rectangle Vẽ hình chữ nhật, đa giác drawpoly getlinesettings setlinestyle Trả về/thiết lập kiểu (style), mẫu tô (pattern), bề rộng (thickness) dùng cho việc vẽ đường nói chung (đường thẳng, đa giác, hình chữ nhật ) Với hàm getlinesettings, thông tin trả biến có cấu trúc struct linesettingstype setcolor Trả / đặt màu vẽ hành Màu vẽ dùng cho việc vẽ điểm (pixel), đường, setwritemode Đặt getcolor cách vẽ đường COPY_PUT hay XOR_PUT Hàm thường làm việc với line, lineto, linerel, rectangle, drawpoly Tham khaûo moverel, lineto, linerel, arc, sector, pieslice, setaspectratio, getaspectratio, getmaxcolor, getbkcolor, setbkcolor, getpalette, setallpalette, getdefaultpalette, setrgbpalette, getpalettesize Một số điểm cần lưu ý Các lệnh setfillstyle ảnh hưởng đến đường hàm line, linerel, lineto, rectangle, drawpoly, Nếu dùng chế độ vẽ XOR_PUT, việc vẽ hai lần liên tiếp cho kết vẽ xóa đối tượng Chương trình minh họa // Ham minh hoa cac kieu duong thang (linestyle) void LineStyleDemo(void) { int x1 = 50, y1 = 50, y2 = MaxY-y1, Step = 30; struct linesettingstype LineInfo; cleardevice(); // Luu thong tin ve duong cu getlinesettings(&LineInfo); setcolor(GREEN); // Ve duong voi dinh dang mac dinh, rong la pixel for (int style=SOLID_LINE; style