Đồ họa máy tính - Chương 2 doc

35 351 3
Đồ họa máy tính - Chương 2 doc

Đ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

Đồ họa máy tính - Khoa CNTT - ĐHSPHN Chương II: Công cụ đồ họa Turbo Pascal (TP) Giới thiệu - Thiết bị phần cứng điều khiển việc hiển thị hình ảnh lên hình có tên Video Card (chúng ta hay gọi “card hình”) - Có nhiều loại Card hình với khả mạnh yếu khác nhau, loại cần driver (trình điều khiển) riêng Bảng sau file driver TP File driver CGA HERC.BGI EGAVGA.BGI Kiểu Video card IBM CGA , hiển thị màu HERCULES MONOCHROME, màu VGA đại đa số card hình Có 16 màu Độ phân giải 640 * 480 Chúng ta dùng loại mạnh Phải làm để khởi tạo chế độ đồ họa ? Chúng ta lập trình đồ họa TP Muốn cần phải: - Có file: EGAVGA.BGI, GRAPH.TPU (thư viện chứa lệnh vẽ đồ họa) file TP Đặt chúng thư mục (nếu khơng phải lập đường dẫn cho GRAPH.TPU Option/Directory/Unit directory cho EGAVGA.BGI InitGraph) Đặt lệnh khởi tạo chế độ đồ họa (InitGraph) vào chương trình Ví dụ: Cách đơn giản hay dùng để khởi tạo đồ họa Uses Graph; Var đ/n gd,gm: integer; sẵn Begin xâu rỗng gd:=detect; InitGraph(gd,gm,”); /* Các lệnh đồ họa vẽ, xóa */ CloseGraph; /* kết thúc đồ họa, quay chế độ hình văn bình thường */ End Vì lại “đơn giản hay dùng nhất” ? - Khơng cần gõ vị trí tệp BGI - Không cần nhớ bảng giá trị chế độ hình (có khoảng 10 cặp giá trị khác tương ứng với chế độ hình khác EGA, HERCULES, VGA ) http://www.ebook.edu.vn Đồ họa máy tính - Khoa CNTT - ĐHSPHN - Ln ln khởi tạo chế độ mạnh VGA (16 màu, độ phân giải 640 * 480) Trong phần ta giả thiết chế độ đồ họa VGA Chỉ để tham khảo: bảng loại graphics card chế độ đồ họa tương ứng GraphDriver CGA EGA VGA HercMono có tổng cộng giá trị GraphDriver khác GraphMode CGA0 CGAHi EGALo EGAHi VGALo VGAMed VGAHi HercMonoHi có tổng cộng 30 giá trị GraphMode khác Số dòng, cột 320 * 200 640 * 200 640 * 200 640 * 350 640 * 200 640 * 350 640 * 480 720 * 348 Chúng ta dùng loại mạnh Hệ trục tọa độ hình (0,0) (639,0) (0,479) (639,479) Trong chế độ đồ họa, phải làm việc với hệ trục tọa độ khác thường: 1) Trục tung Oy quay xuống (hệ trục Decac nghịch) 2) giá trị tọa độ phải số nguyên 3) Nếu tọa độ vượt khoảng (0,639) hoành độ (0,479) tung độ, ta vẽ khơng hiển thị hình Giải thích: 1) Do cấu tạo hình, ta phải chấp nhận 2) Màn hình chia thành nhiều vng nhỏ (pixel) xếp theo dịng cột hình vẽ 3) Giả sử ta vẽ đoạn thẳng AB, có đoạn CD nằm hình hiển thị http://www.ebook.edu.vn Đồ họa máy tính - Khoa CNTT - ĐHSPHN B D C Màn hình A Chú ý: khơng cần nhớ giá trị 640 480 TP có hàm GetMaxX GetMaxY, chúng trả lại giá trị lớn hoành độ tung độ mode đồ họa thời: GetMaxX = 639 ; GetMaxY = 479 ; 639,0 0,0 1,0 2,0 0,1 0,2 điểm ảnh ô vuông 0,479 Bảng màu Với mode đồ họa VGA, bảng màu gồm 16 màu đánh số từ đến 15 bảng sau Ta dùng số thứ tự tên số màu Giá trị số Tên số Black Blue Green Cyan Red Magenta Brown LightGray DarrkGray LightBlue http://www.ebook.edu.vn Màu Đen Xanh da trời Xanh Xanh cẩm thạch Đỏ Tía Nâu Xám nhạt Xám đậm Xanh da trời nhạt Đồ họa máy tính - Khoa CNTT - ĐHSPHN 10 11 12 13 14 15 LightGreen LightCyan LightRed LightMagenta Yellow White Xanh nhạt Xanh cẩm thạch nhạt Đỏ tươi Tía nhạt Vàng Trắng Vẽ điểm PutPixel(x,y,c); /* x,y : integer ; c: word (kiểu số nguyên dương) */ Vẽ điểm ảnh tọa độ (x,y) với màu c, GetPixel(x,y):word Hàm GetPixel trả lại số nguyên dương màu điểm ảnh tọa độ (x,y), nói cách khác cho biết màu pixel(x,y) màu Ví dụ: Tơ tồn hình màu đỏ Uses Graph; Var gd,gm: integer; i,j:integer; Begin gd:=detect; InitGraph(gd,gm,”); for i:=0 to GetMaxX for j:=0 to GetMaxY PutPixel(i,j,red) ; Readkey; /* Gặp readkey chương trình dừng lại để ta quan sát hình Xem xong ta bấm phím để qua lệnh */ CloseGraph; End Những hằng, biến chương trình thay giá trị tương đương mà không làm thay đổi chương trình ? Viết chương trình tơ phần tư hình (phía bên phải) màu xanh da trời Chương trình lấp kín hình cách tơ theo dịng hay cột ? http://www.ebook.edu.vn Đồ họa máy tính - Khoa CNTT - ĐHSPHN Ví dụ: vẽ lưới điểm nhấp nháy uses crt,graph; var gd,gm,i,j:integer; x,y:integer; begin gd:=detect; initgraph(gd,gm,''); randomize; /* khởi tạo sinh số ngẫu nhiên */ repeat Hàm trả lại số màu x:=random(100); y:=random(100); có (16) if GetPixel(x,y) 0 then Putpixel(x,y,0) else PutPixel(x,y,random(GetmaxColor)); delay(2); Until Keypressed; closegraph; end Hàm GetPixel làm chức ví dụ ? Thử thay đổi giá trị tham số hàm delay() random() quan sát kết Ví dụ: Vẽ bầu trời đơn giản uses crt,graph; var gd, gm, i : integer; BEGIN gd := 0; initgraph(gd,gm,'C:\TP\BGI'); for i := to 1000 putpixel(random(640),random(480),random(15)+1); readkey; END Hãy phối hợp kỹ thuật ví dụ ( hàm random, vòng lặp Repeat, lệnh GetPixel để tạo bầu trời đẹp Ví dụ: Vẽ đồ thị hàm số y=sin(x) Uses crt,graph; Var tx,ty,gd,gm,i,j:integer; d,x,y:real; Begin gd:=detect; initgraph(gd,gm,'c:\tp\bgi'); setviewport(getmaxX div 2,getmaxY div 2,getmaxX,getmaxY,clipoff); http://www.ebook.edu.vn Đồ họa máy tính - Khoa CNTT - ĐHSPHN d:=0.001; x:=0; tx:=20; ty:=40; while x=640-r) then x := r; {nếu bánh xe đến mép bên phải quay lại bên trái} x := x + dx; if a < then a := a + 360; a := a - da; {quay ngược chiều dương nên phải trừ} until keypressed; END http://www.ebook.edu.vn 27 Đồ họa máy tính - Khoa CNTT - ĐHSPHN Trong Procedure banhxe(), dx,dy tọa độ tương đối đầu nan hoa hệ tọa độ ? (gốc tọa độ đâu ? trục Oy hướng ?) Trong procedure banhxe, 360 div n góc ? có dấu trừ lệnh dy :=round(r* sin(goc * pi/180)); tọa độ tâm bánh xe đâu ? Tại phải gán da:=round(dx/r*180/pi); thay vào đó, gán giá trị cụ thể 3,6,9 độ cho góc quay da kết ? Hãy sửa chương trình để bánh xe lăn ngược lại chạm đến biên trái/phải Hãy dùng kỹ thuật XorPut để xóa bánh xe procedure banhxe Ví dụ: Vẽ bánh xe (2) uses crt,graph; var gd,gm:integer; r,x,y,direct,buoc:integer; gia_so_goc,goc:real; procedure ve_banh_xe; var x1,y1,x2,y2,x3,y3:integer; begin x1:=x+round(r*cos(goc));y1:=y-round(r*sin(goc)); x2:=x+round(r*cos(goc+2*pi/3));y2:=y-round(r*sin(goc+2*pi/3)); x3:=x+round(r*cos(goc-2*pi/3));y3:=y-round(r*sin(goc-2*pi/3)); Circle(x,y,r); line(x,y,x1,y1);line(x,y,x2,y2);line(x,y,x3,y3); delay(30); setcolor(0); Circle(x,y,r); line(x,y,x1,y1);line(x,y,x2,y2);line(x,y,x3,y3); {xoa} delay(30); goc:=goc-gia_so_goc*direct; setcolor(yellow); end; begin direct:=1; buoc:=5; gd:=detect; initgraph(gd,gm,'c:\tp\bgi'); x:=100; goc:=0;r:=30; y:=200; gia_so_goc:=buoc/r; setcolor(yellow); repeat ve_banh_xe; if (r> x+direct*buoc) or (x+direct*buoc > getmaxX-r) then direct:=-direct; x:=(x+direct*buoc); until Keypressed; closegraph; http://www.ebook.edu.vn 28 Đồ họa máy tính - Khoa CNTT - ĐHSPHN end Ý nghĩa biến r,x,y,direct,buoc, gia_so_goc, goc ? Nếu muốn bánh xe lăn nhanh / to phải thay đổi giá trị biến Ví dụ: Vẽ quỹ đạo chuyển động mặt trời, trái đất mặt trăng uses crt,graph; var gd,gm,x,y,x1,y1,da,da1,r,r1,goc,goc1 : integer; procedure hinhtron(x,y,r,c : integer); {vẽ hình trịn có màu c} var goc,dx,dy,i : integer; begin SetColor(c); circle(x,y,r); SetFillStyle(1,c); FloodFill(x,y,c); end; BEGIN gd := 0; initgraph(gd,gm,'C:\TP\BGI'); SetViewPort(320,240,600,400,false); {chuyển gốc toạ độ góc} goc := 0; goc1 := 0; {goc góc chuyển động Trái đất, goc1 Mặt trăng} da :=360 div 360;da1 := 360 div 30; {Trái đất quay 1o lần, tương ứng năm 360 ngày } hinhtron(0,0,50,lightred); {vẽ Mặt trời} repeat x := round(240*cos(goc*pi/180)); {toạ độ tương đối Trái đất với Mặt trời} y :=-round(200*sin(goc*pi/180)); {chú ý quỹ đạo hình elip} http://www.ebook.edu.vn 29 Đồ họa máy tính - Khoa CNTT - ĐHSPHN hinhtron(x,y,20,lightblue); {vẽ Trái đất} x1 := round(60*cos(goc1*pi/180));{toạ độ tương đối Mặt trăng so với Trái đất} y1 :=-round(50*sin(goc1*pi/180)); hinhtron(x+x1,y+y1,8,yellow); {vẽ Mặt trăng} delay(60); hinhtron(x,y,20,0); {xoá cách vẽ màu nền} hinhtron(x+x1,y+y1,8,0); if goc < then goc := goc + 360; {cập nhật góc chuyển động} goc := goc - da; if goc1 < then goc1 := goc1 + 360; goc1 := goc1 - da1; until keypressed; END Ví dụ: VẼ CÁC ĐƯỜNG CONG TRONG MẶT PHẲNG 2D uses crt,graph; var gd, gm, xo, yo, w, h : integer; x1,y1,x2,y2, xtl, ytl : real; (* Khởi tạo tham số cửa sổ khung nhìn *) procedure khoitao_cuaso; begin xo := 20; yo := 40; w := 600; h := 400; xtl := 50; ytl := 50; {chọn trước tỉ lệ ngang dọc, cho nhau} x2 := w/xtl/2; x1 := -x2; {căn cửa sổ để tâm gốc toạ độ} y2 := h/ytl/2; y1 := -y2; end; {Các hàm chuyển toạ độ thực thành toạ độ hình} function tox(x : real): integer; begin tox := xo + round((x-x1)*xtl); end; function toy(y : real): integer; begin toy := yo + round((y2-y)*ytl); end; {Thủ tục vẽ đoạn thẳng mặt phẳng thực 2D} procedure Line2D(x1,y1,x2,y2: real); begin Line(tox(x1),toy(y1),tox(x2),toy(y2)); end; {Thủ tục vẽ trục toạ độ} http://www.ebook.edu.vn 30 Đồ họa máy tính - Khoa CNTT - ĐHSPHN procedure vetruc; var i : integer; x : string; begin Line2D(x1,0,x2,0); {vẽ trục x} Line2D(x2-0.2,+0.1,x2,0); {vẽ hình mũi tên trục x} Line2D(x2-0.2,-0.1,x2,0); Line2D(0,y1,0,y2); {vẽ trục y} Line2D(+0.1,y2-0.2,0,y2); {vẽ hình mũi tên trục y} Line2D(-0.1,y2-0.2,0,y2); SetColor(lightgreen); SetTextJustify(1,1); for i := round(x1) + to round(x2) - {vạch ghi toạ độ trục x} if i then begin str(i,x); {vạch i nguyên, chuyển số thành chữ} outtextxy(tox(i),toy(-0.4),x); {để vẽ chữ lên hình} Line2D(i,-0.1,i,0.1); {vẽ đoạn thẳng làm vạch} end; for i := round(y1) + to round(y2) - if i then begin str(i,x); outtextxy(tox(-0.4),toy(i),x); Line2D(-0.1,i,0.1,i); end; end; {Vẽ đường cong hàm số y = sinx, x = x1 -> x2} procedure duongsin; var x,y,a,b,dx : real; i,n : integer; begin setcolor(yellow); a := x1; b := x2; n := 100; dx := (b-a)/n; x := a; y := sin(x); moveto(tox(x),toy(y)); {dùng hàm toX, toY để chuyển toạ độ thực thành toạ độ hình} for i := to n begin x := x + dx; y := sin(x); lineto(tox(x),toy(y)); end; end; {Vẽ đường cong tham số y = cos3t, y = sin5t, t= 2pi} procedure thamso; var t,x,y,a,b,dt : real; i,n : integer; begin setcolor(lightred); a := 0; b := 2*pi; n := 100; dt := (b-a)/n; http://www.ebook.edu.vn 31 Đồ họa máy tính - Khoa CNTT - ĐHSPHN t := a; x := cos(3*t) ; y := sin(5*t); moveto(tox(x),toy(y)); for i := to n begin t := t + dt; x := cos(3*t) ; y := sin(5*t); lineto(tox(x),toy(y)); end; end; {Vẽ đường cong toạ độ cực r = 3cos3p, p= 2pi} procedure tdcuc; var r,p,x,y,a,b,dp : real; i,n : integer; begin setcolor(13); a := 0; b := 2*pi; n := 100; dp := (b-a)/n; p := a; r := 3*cos(3*p); x := r*cos(p) ; y := r*sin(p); {công thức đổi toạ độ cực sang toạ độ Đề 2D} moveto(tox(x),toy(y)); for i := to n begin p := p + dp; r := 3*cos(3*p); x := r*cos(p) ; y := r*sin(p); lineto(tox(x),toy(y)); end; end; BEGIN gd := 0; initgraph(gd,gm,'C:\TP\BGI'); khoitao_cuaso; vetruc; duongsin; thamso; tdcuc; readkey; END Ví dụ: MINH HOẠ CÁC PHÉP BIẾN ĐỔI 2D uses crt,graph; var gd, gm, xo, yo, w, h, n : integer; x1,y1,x2,y2, xtl, ytl : real; x,y : array[1 4] of real; procedure khoitao_cuaso; begin gd := 0; initgraph(gd,gm,'C:\TP\BGI'); xo := 20; yo := 40; w := 600; h := 400; xtl := 30; ytl := 30; x2 := w/xtl/2; x1 := -x2; y2 := h/ytl/2; y1 := -y2; end; http://www.ebook.edu.vn 32 Đồ họa máy tính - Khoa CNTT - ĐHSPHN function tox(x : real): integer; begin tox := xo + round((x-x1)*xtl); end; function toy(y : real): integer; begin toy := yo + round((y2-y)*ytl); end; procedure Line2D(x1,y1,x2,y2: real); begin Line(tox(x1),toy(y1),tox(x2),toy(y2)); end; procedure vetruc; var i : integer; x : string; begin Line2D(x1,0,x2,0); Line2D(x2-0.2,+0.1,x2,0); Line2D(x2-0.2,-0.1,x2,0); Line2D(0,y1,0,y2); Line2D(+0.1,y2-0.2,0,y2); Line2D(-0.1,y2-0.2,0,y2); SetColor(lightgreen); SetTextJustify(1,1); for i := round(x1) + to round(x2) - if i then begin str(i,x); outtextxy(tox(i),toy(-0.4),x); Line2D(i,-0.1,i,0.1); end; for i := round(y1) + to round(y2) - if i then begin str(i,x); outtextxy(tox(-0.4),toy(i),x); Line2D(-0.1,i,0.1,i); end; end; (* Khởi tạo toạ độ đỉnh hình chữ nhật*) procedure khoitao_hcn; begin n := 4; x[1] := 1; y[1] := 1; x[2] := 1; y[2] := 3; x[3] := 5; y[3] := 3; x[4] := 5; y[4] := 1; http://www.ebook.edu.vn 33 Đồ họa máy tính - Khoa CNTT - ĐHSPHN end; (*Thủ tục vẽ hình chữ nhật*) procedure VeHCN(c : integer); begin SetColor(c); MoveTo(tox(x[1]), toy(y[1])); LineTo(tox(x[2]), toy(y[2])); LineTo(tox(x[3]), toy(y[3])); LineTo(tox(x[4]), toy(y[4])); LineTo(tox(x[1]), toy(y[1])); end; (* Tịnh tiến HCN theo vector (a,b) *) procedure tinhtien(a,b : real); var i : integer; begin for i := to n begin x[i] := x[i] + a; y[i] := y[i] + b; end; end; (* Tịnh tiến HCN theo tỉ lệ (Sx,Sy) *) procedure codan(Sx,Sy : real); var i : integer; begin for i := to n begin x[i] := Sx*x[i]; y[i] := Sy*y[i]; end; end; (* Tịnh tiến HCN theo góc a, đo radian *) procedure Quay(a : real); var i : integer; cosa,sina,tx,ty : real; begin cosa := cos(a); sina := sin(a); for i := to n begin tx := x[i] * cosa - y[i] * sina; ty := x[i] * sina + y[i] * cosa; x[i] := tx; y[i] := ty; end; end; BEGIN khoitao_cuaso; khoitao_hcn; vetruc; VeHCN(14); readkey; tinhtien(-3,-2); {tịnh tiến HCN để tâm HCN gốc toạ độ} http://www.ebook.edu.vn 34 Đồ họa máy tính - Khoa CNTT - ĐHSPHN VeHCN(13); readkey; codan(1.2,2.4); {co dãn để HCN trở thành hình vng :D} VeHCN(12); readkey; quay(pi/4); {Quay HCN góc pi/4} VeHCN(11); readkey; END Ví dụ: Vẽ đường sin quay quanh gốc tọa độ uses crt,graph; var gd, gm, xo, yo, w, h : integer; x1,y1,x2,y2, xtl, ytl : real; (* CÁC THỦ TỤC HỆ ĐỒ HOẠ 2D *) procedure khoitao_cuaso; begin xo := 20; yo := 40; w := 600; h := 400; xtl := 30; ytl := 30; x2 := w/xtl/2; x1 := -x2; y2 := h/ytl/2; y1 := -y2; end; function tox(x : real): integer; begin tox := xo + round((x-x1)*xtl); end; function toy(y : real): integer; begin toy := yo + round((y2-y)*ytl); end; procedure Line2D(x1,y1,x2,y2: real); begin Line(tox(x1),toy(y1),tox(x2),toy(y2)); end; procedure vetruc; var i : integer; x : string; begin SetColor(14); Line2D(x1,0,x2,0); Line2D(x2-0.2,+0.1,x2,0); Line2D(x2-0.2,-0.1,x2,0); Line2D(0,y1,0,y2); Line2D(+0.1,y2-0.2,0,y2); Line2D(-0.1,y2-0.2,0,y2); SetColor(lightgreen); SetTextJustify(1,1); for i := round(x1) + to round(x2) - http://www.ebook.edu.vn 35 Đồ họa máy tính - Khoa CNTT - ĐHSPHN if i then begin str(i,x); outtextxy(tox(i),toy(-0.4),x); Line2D(i,-0.1,i,0.1); end; for i := round(y1) + to round(y2) - if i then begin str(i,x); outtextxy(tox(-0.4),toy(i),x); Line2D(-0.1,i,0.1,i); end; end; {Vẽ đường sin y = sinx, x = -pi -> pi, quay góc} procedure quay(x,y,a:real; var tx,ty : real); begin tx := x * cos(a) - y * sin(a); ty := x * sin(a) + y * cos(a); end; procedure duongsin(goc : real); var x,y,a,b,dx,tx,ty : real; i,n : integer; begin setcolor(15); a := -2*pi; b := 2*pi; n := 50; dx := (b-a)/n; x := a; y := sin(x); quay(x,y,goc,tx,ty); moveto(tox(tx),toy(ty)); for i := to n begin x := x + dx; y := sin(x); quay(x,y,goc,tx,ty); lineto(tox(tx),toy(ty)); end; end; BEGIN gd := 0; initgraph(gd,gm,'C:\TP\BGI'); khoitao_cuaso; vetruc; duongsin(0); duongsin(pi/4); duongsin(pi/2); duongsin(3*pi/4); readkey; END Ví dụ: Vẽ bầu trời Uses crt,graph; Var gd,gm:integer; http://www.ebook.edu.vn 36 Đồ họa máy tính - Khoa CNTT - ĐHSPHN s:array[1 100] of pointType; n,i,j:integer; procedure star(a,b:integer); {một ngơi lóe sáng} var i:integer; begin for i:=2 to 10 begin setcolor(random(GetMaxColor)); circle(a,b,i); delay(100); setcolor(0); circle(a,b,i); end; end; Begin gd:=detect; initgraph(gd,gm,'c:\tp\bgi'); setcolor(Yellow); n:=100; Randomize; for i:=1 to n {n lên} begin delay(50); s[i].x:=random(GetmaxX); s[i].y:=random(GetmaxY); putpixel(s[i].x,s[i].y,yellow); end; i:=0;j:=0; {các ngơi lóe sáng} repeat i:=i mod n +1; j:=j mod 10 +1; if j 10 then putpixel(s[i].x,s[i].y,0) else star(s[i].x,s[i].y); delay(50); s[i].x:=random(GetmaxX); s[i].y:=random(GetmaxY); putpixel(s[i].x,s[i].y,yellow); until keypressed; closeGraph; End Ví dụ: Vẽ hộp chuyển động theo điều khiển người dùng { Hộp vuông chuyển động theo phương ngang, chạm vào biên nảy ngược lại Nếu người dùng bấm phím mũi tên chiều với chiều chuyển động hộp hộp tăng tốc độ, ngược lại giảm tốc độ Bấm phím mũi tên : quỹ đạo hộp hạ xuống / nâng lên } Uses crt,graph; http://www.ebook.edu.vn 37 Đồ họa máy tính - Khoa CNTT - ĐHSPHN VAR gd,gm:integer; canh,buoc,direct,x,y,d:integer; ch:char; Procedure hop(x,y:integer); begin rectangle(x-canh,y-canh,x+canh,y+canh);delay(d); rectangle(x-canh,y-canh,x+canh,y+canh); end; BEGIN gd:=detect; initgraph(gd,gm,'c:\tp\bgi'); x:=100;y:=100; setwritemode(xorput); d:=50; direct:=1; buoc:=2; canh:=10; Repeat repeat hop(x,y); if (01 then dec(buoc); { hãm phanh } end else inc(buoc); { tăng tốc } end; end; Until ch=#27; closegraph; END http://www.ebook.edu.vn 38 ... x} Line2D(x 2- 0 .2, +0.1,x2,0); {vẽ hình mũi tên trục x} Line2D(x 2- 0 .2 ,-0 .1,x2,0); Line2D(0,y1,0,y2); {vẽ trục y} Line2D(+0.1,y 2- 0 .2, 0,y2); {vẽ hình mũi tên trục y} Line2D (-0 .1,y 2- 0 .2, 0,y2); SetColor(lightgreen);... Line2D(x 2- 0 .2, +0.1,x2,0); Line2D(x 2- 0 .2 ,-0 .1,x2,0); Line2D(0,y1,0,y2); Line2D(+0.1,y 2- 0 .2, 0,y2); Line2D (-0 .1,y 2- 0 .2, 0,y2); SetColor(lightgreen); SetTextJustify(1,1); for i := round(x1) + to round(x2) - if i... Line(tox(x1),toy(y1),tox(x2),toy(y2)); end; procedure vetruc; var i : integer; x : string; begin SetColor(14); Line2D(x1,0,x2,0); Line2D(x 2- 0 .2, +0.1,x2,0); Line2D(x 2- 0 .2 ,-0 .1,x2,0); Line2D(0,y1,0,y2); Line2D(+0.1,y 2- 0 .2, 0,y2);

Ngày đăng: 22/07/2014, 09:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan