1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Lập trình bằng Turbo Pascal part 9 potx

28 477 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 309,16 KB

Nội dung

Lập trình bằng Turbo Pascal var Gd, Gm: integer; { Gd = Graphic Device } begin Gd:= detect; { Gm = Graphic Mode } InitGraph(Gd, Gm,' đờng dẫn \BGI'); if graphresult <> grOk then begin write ( 'lỗi khởi tạo đồ hoạ'); halt(1); end; end; 1.2.2 GiảI thích ý nghĩa. Các tham số trong thủ tục InitGraph: Gd, Gm l hai tham biến, nhận các giá trị l các hằng số nguyên, đợc định nghĩa trong Unit Graph. Gd, Gm có thể nhận các giá trị no v ý nghĩa của chúng có thể tham khảo trong Unit Graph. Tham số đờng dẫn \ BGI: phải thay bằng đờng dẫn cụ thể đến th mục BGI trong máy của mình. Có thể để cho Turbo Pascal tự phát hiện vỉ mn hình v chọn chế độ đồ họa thích hợp nhất. Đó l cách khởi tạo tự động, bằng cách đặt Gd:= Detect nh trong ví dụ trên. Lúc ny không cần gán giá trị cho Gm. Trong trờng hợp nắm vững thiết bị mn hình hiện có v các chế độ đồ hoạ tơng ứng, ta có thể gán trực tiếp giá trị cho Gd, Gm. Ví dụ: Gd:= VGA; Gm:= VGAHi ; Initgraph(Gd,Gm,'C:\TP\BGI' ); Lu ý không đợc viết trực tiếp Initgraph(VGA, VGAHi,'C:\TP\BGI'); Nh thế sai cú pháp vì các Gd, Gm l tham biến chứ không phải tham trị. Sau khi gọi thủ tục khởi tạo đồ hoạ cần kiểm tra kết quả xem việc khởi tạo có thnh công hay không thông qua gọi hm GraphResult. GraphResult: l hm có sẵn trong Unit Graph. GraphResult trả về kết quả l một số nguyên. Đó l mã lỗi khởi tạo đồ hoạ. Bảng sau đây cho biết giá trị v ý nghĩa của các mã lỗi đồ hoạ. Giá trị số Tên hằng Y nghĩa 0 -1 -2 -3 grOk grNoInitgraph grNotDetected grFileNotFound thnh công cha khởi tạo đợc không có phần cứng; không có các tệp điều khiẻn đồ hoạ. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 217 Lập trình bằng Turbo Pascal 1.2.3 Đóng thủ tục đồ hoạ Dùng thủ tục chuẩn CloseGraph. Thủ tục CloseGraph không có tham số. CloseGraph; Tác dụng: - Khôi phục lại chế độ hiển thị ban đầu của mn hình trớc khi gọi khởi tạo đồ hoạ; - Giải phóng bộ nhớ đã cấp trên heap lm vùng nhớ đệm đồ hoạ; - Giải phóng vùng nhớ chứa các trình điều khiển thiết bị, các font chữ nếu đã xin cấp phát thông qua sử dụng các thủ tục GraphGetMem, GraphFreeMem. 1.3 Một chơng trình đồ hoạ đơn giản Chơng trình sau đây khởi tạo chế độ đồ hoạ v vẽ một đờng chéo mu vng trên mn hình nền mu xanh. program ve_hinh; uses crt,graph; BEGIN KhoiTaoDoHoa; SetBkColor(blue); SetColor(yellow); Moveto(0,0); Lineto(GetmaxX, GetmaxY); repeat until keypressed; closeGraph; END. Ta có thể bổ xung thêm vo thân chơng trình các thủ tục vẽ hình chữ nhật, đờng tròn , đổi mu nét vẽ Rectangle(100,100,200,200); SetColor(red); circle(200,150,50); 1.4 Màu sắc, kiểu nét vẽ, kiểu tô nền. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 218 Lập trình bằng Turbo Pascal Trong chơng trình trên ta gặp hai thủ tục SetBKColor v SetColor. Đó l hai thủ tục đặt mu nền v mu nét vẽ. Ta có thể chọn các mu sắc khác nhau, thay đổi cả bộ mu đang dùng thông qua các thủ tục thiết lập mu sắc. Chơng trình trên sẽ vẽ các đoạn thẳng, đờng tròn bằng nét liền thông thờng. Ta có thể thay đổi để nét vẽ thnh đờng đậm hơn, đờng đứt quãng, đờng chấm gạch, chấm chấm Đó l kiểu nét vẽ hay Line Style. Thủ tục SetLineStyle cho phép thay đổi kiểu nét vẽ. Một vấn đề khác l tô mu bên trong một đờng biên đóng kín, ví dụ nh hình chữ nhật, hình tròn Ta có thể tô mu bằng một mu khác vơí mu đờng biên (l mu nét vẽ) v khác với mu nền của ton mn hình. Hơn nữa có thể trang trí phần bên trong ny bằng các mẫu trang trí khác nhau nh các chấm điểm rải đều, các đờng thẳng song song, hình ô lới Đó l các mẫu nền hay FillPatern. Các thủ tục SetFillPatern, SetFillStyle cho phép chọn các mẫu tô khác nhau. Có thể hạn chế các thao tác đồ hoạ trong một khung hình chữ nhật gọi l ViewPort. Khái niệm ViewPort có phần giống nh Window trong chế độ văn bản. Tất cả những vấn đề trên sẽ đợc trình by kĩ hơn trong phần môi trờng đồ hoạ. 2. Các thủ tục đồ hoạ thờng dùng. Trong Unit Graph có hng chục thủ tục vẽ các hình khác nhau. Tên gọi của các thủ tục ny khá gợi tả nên việc sử dụng chúng không mấy khó khăn. Dới đây sẽ điểm lại những thủ tục hay dùng. Mỗi thủ tục sẽ đợc trình by ngắn gọn nội dung gồm: tên, danh sách tham số v công dụng vắn tắt. Nghĩa l cung cấp giao diện v chức năng để cho ngời lập trình biết m sử dụng. Chi tiết hơn cần tham khảo Unit Graph. 2.1 Di chuyển, vẽ một điểm, một đoạn thẳng. MoveTo (X,Y: integer); Đặt bút vẽ tại điểm có toạ độ (X,Y); Lu ý trên mn hình đồ hoạ không có con chạy nhấp nháy tại vị trí hiện tại. PutPixel(X,Y: integer; Color: word); Vẽ một điểm có mu Color tại vị trí X,Y. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 219 Lập trình bằng Turbo Pascal GetPixel(X,Y: integer): word; Trả lại mu của điểm có toạ độ X,Y. Các thủ tục vẽ đoạn thẳng. LineTo (X,Y: integer); Kẻ đoạn thẳng từ vị trí hiện tại đến điểm X,Y. Sau khi vẽ, vị trí của bút vẽ l X,Y. Line (X1, Y1, X2, Y2); Kẻ đoạn thẳng từ điểm X1,Y1 đến điểm X2,Y2. Sau khi vẽ, vị trí bút l X2,Y2. LineRel (Dx, Dy) ; Kẻ đoạn thẳng từ X,Y đến X+Dx, Y+Dy. 2.2 Các thủ tục vẽ hình. Rectangle (X1,Y1, X2, Y2: integer ); Vẽ hình chữ nhật, không tô mu trong ruột. X1,Y1 l góc trên tráI, X2,Y2 l góc dới phải. Bar(X1,Y1,X2,Y2: integer ); Vẽ hình chữ nhật v tô mu trong ruột bằng mu vẽ. Bar3D(X1, Y1, X2, Y2: Integer; Depth: Word; Top: Boolean); Vẽ hình hộp khối chữ nhật 3-chiều, có tô bên trong theo mẫu v mu xác định bởi SetFillStyle hoặc SetFillPattern. Depth l độ sâu tính bằng số điểm ảnh. Nếu Top l TopOn thì hình hộp có cả nắp bên trên. Nếu TopOff thì không có nắp. Lựa chọn TopOff để có thể xếp chồng vi hộp mu sắc khác nhau tạo biểu đồ hình hộp đứng. Độ sâu hay dùng l 25% của độ rộng, ví dụ Bar3D(X1, Y1, X2, Y2, (X2 - X1 + 1) div 4, TopOn); DrawPoly(NumPoints: Word; var PolyPoints); Vẽ đờng gấp khúc khép kín, dùng mu v nét vẽ hiện hnh. NumPoints l số đỉnh, PolyPoints l mảng các đỉnh. Một đỉnh gồm hai toạ độ X,Y. Circle (X,Y: integer; R: word ) ; Vẽ đờng tròn tâm X,Y bán kính R. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 220 Lập trình bằng Turbo Pascal Arc (X,Y; Integer; StAngle, EndAngle, Radius; Word); Vẽ một cung tròn có bán kính Radius v tâm l (X,Y), bắt đầu từ góc StAngle (start angle) kết thúc tại góc EndAngle. Các số đo góc StAngle, EndAngle tính theo độ. Ellipse(X, Y: Integer; StAngle, EndAngle: Word; XRadius, YRadius: Word); Vẽ cung ellipse bắt đầu từ góc StAngle (start angle), kết thúc tại góc EndAngle, với hai bán trục l Xradius, Yradius v (X,Y) l tâm. PieSlice(X, Y: Integer; StAngle, EndAngle, Radius: Word); Vẽ v tô nền hình quạt có bán kính Radius, tâm tại (X,Y), bắt đầu từ góc StAngle, kết thúc tại góc EndAngle. Khác với Arc chỉ vẽ ra một cung cong, thủ tục ny vẽ ra hình quạt vì có tô nền bên trong. Sector(X,Y: Integer; StAngle,EndAngle, XRadius, YRadius: Word); Vẽ v tô nền một hình quạt ellipse. (X, Y) l tâm, XRadius v YRadius l hai bán trục, bắt đầu từ góc StAngle, kết thúc tại góc EndAngle. 2.3 Tỷ lệ biểu kiến. Khi tỷ lệ biểu kiến giữa hai trục X,Y không phải l 1:1 thì đờng tròn có thể trở thnh ellipse, hình vuông có thể thnh hình chữ nhật. Có thể thay đổi tỷ lệ ny, co giãn hai trục thích hợp để khắc phục điều đó GetAspectRatio(var Xasp, Yasp: Word): Word; Lấy tỷ lệ biểu kiến hiện hnh giữa hai chiều X,Y trên mn hình đồ hoạ. Hm trả về Xasp / Yasp. SetAspectRatio(Xasp, Yasp: Word); Thay đổi tỷ lệ biểu kiến mặc định. Phục vụ cho vẽ hình tròn, hình vuông. Nếu hình tròn bị méo có thể hoặc chỉnh phần cứng hoặc l chỉnh bằng tỷ lệ biểu kiến sử dụng SetAspectRatio. Ví dụ: uses Graph; var Xasp, Yasp: Word; XSideLength, YSideLength: Integer; begin KhoiTaoDoHoa; GetAspectRatio(Xasp, Yasp); XSideLength:= 20; {Chỉnh tỷ lệ trục Y theo tỷ lệ biểu kiến} YSideLength:= Round( (Xasp / Yasp) * XSideLength); Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 221 Lập trình bằng Turbo Pascal {Vẽ hình thực sự "vuông"} Rectangle(0, 0, XSideLength, YSideLength); Readln; CloseGraph; end. 2.4 Viết chữ ra màn hình đồ hoạ Trong chế độ đồ hoạ chỉ cho phép in xâu kí tự ra mn hình. Không thể dùng các thủ tục Write để viết trực tiếp các kiểu giá trị số ra mn hình nh đối với chế độ văn bản. Do đó phải sử dụng các hm, thủ tục chuyển đổi giá trị số thnh xâu kí số, ví dụ Str(Val, St). Trên mn hình đồ hoạ, vị trị hiện tại của bút vẽ gọi l CP - current pointer - sẽ ở tại một điểm ảnh no đó. Khác với chế độ văn bản có con chạy mn hình nhấp nháy, CP trong chế độ đồ hoạ không hiển thị trên mn hình. Vị trị ny sẽ thay đổi sau mỗi thủ tục đồ hoạ. Cần tìm hiểu để biết sự di chuyển của bút vẽ đối với từng thủ tục. CP liên quan đến một số thủ tục m không chỉ rõ toạ độ bắt đầu của thao tác đồ hoạ. OutText(TextString: String); In xâu kí tự TextString ra mn hình, bắt đầu từ vị trí CP. OutTextXY(X,Y: Integer; TextString: String); In xâu kí tự TextString ra mn hình bắt đầu từ vị trí (X,Y). TextString l xâu kí tự cần in ra. Nếu dùng font vec tơ thì xâu kí tự bị cắt bớt khi quá di, vợt quá khung của Viewport. Nếu sử dụng font bitmap thì TextString quá di sẽ không đợc in ra. Mặc định l dùng font bitmap. Các thủ tục trình by dới đây sẽ thiết lập cách thức in ra xâu kí tự: theo hớng nằm ngang hay thẳng đứng, căn lề trái, phải, kích thớc con chữ SetTextJustify(Horiz, Vert: Word); Xác lập cách căn vị trí dòng chữ cho các thủ tục OutText , OutTextXY. Các tham số Horiz, Vert có thể nhận các giá trị hằng số nh trong bảng dới Horiz - Hớng nằm ngang Vert - Hớng thẳng đứng Tên hằng Giá trị Tên hằng Giá trị Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 222 Lập trình bằng Turbo Pascal L eftText CenterText RightText 0 1 2 B ottomText CenterText TopText 0 1 2 Vị trị ban đầu của CP lấy lm mốc. Ví dụ, sau 2 lệnh TextJustify(CenterText, CenterText); OutTextXY(100, 100, 'ABC'); thì vị trí (100, 100) sẽ l ở chính giữa chữ B. Mặc định l SetTextJustify(LeftText, TopText). Nếu tham số có giá trị không hợp lệ, GraphResult sẽ trả về một mã lỗi grError v cách căn vị trí không thay đổi. SetTextStyle(Font, Direction: Word; CharSize: Word); Xác định phong cách (Style) hiển thị chữ ra mn hình. Style gồm kiểu chữ, hớng, kích thớc. Tên hằng Giá trị Y nghia Về font chữ DefaultFont TriplexFont SmallFont SansSerifFont GothicFont Về hóng viết HorizDir VertDir Về kích thớc UserCharSize 0 1 2 3 4 1 0 1 10 8x8 font bitmap font vectơ (Stroked font) " " " Từ trái sang phải Từ dới lên trên L hệ số phóng to lên Ví dụ: Chơng trình dới đây sẽ in ra 4 dòng chữ, Size = 1 với kích thớc 1, Size = 2 với kích thớc 2, Size = 3 với kích thớc 3, Size = 4 với kích thớc 4. uses Graph; var Y, Size: Integer; Begin KhoiTaoDoHoa; Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 223 Lập trình bằng Turbo Pascal Y:= 0; for Size:= 1 to 4 do begin SetTextStyle(DefaultFont, HorizDir, Size); OutTextXY(0, Y, 'Size = ' + Chr(Size + 48)); {48 l mã của số 0 } Inc(Y, TextHeight('H') + 1); end; Readln; CloseGraph; end. 3. Các thủ tục về môi trờng đồ hoạ 3.1 Các thủ tục thiết lập màu. 3.1.1 Bảng tên mu Tên mu v các giá trị số tơng ứng: Tên hằng Mô tả Giá trị số Black Blue Green Cyan Red Margenta Brown LightGray DarkGray LightBlue LightGreen LightCyan LightRed LightMargenta Yellow White Đen Xanh Xanh lá cây Cốm thạch Đỏ Tía Nâu Xám nhạt Xám đậm Xanh nhạt Xanh lá cây nhạt Cẩm thạch nhạt Đỏ nhạt Tía nhạt Vng Trắng 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 3.1.2 Bảng mu Palette. Bảng mu l tập hợp các mu ta có thể vẽ lên mn hình. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 224 Lập trình bằng Turbo Pascal Một bảng mu xác định bởi: - Số lợng mu. - Bộ những mu gì. Ví dụ: - Bảng mu CGA0 (bảng mu số 0 dùng cho mn hình CGA): có 4 mu. Các mu l: mu nền, LightGreen, LightRed, Yellow. - Bảng mu CGA1 (bảng mu số 1 dùng cho mn hình CGA): có 4 mu. Các mu l: mu nền, LightCyan, LightMargenta, White. Trong Unit Graph có định nghĩa sẵn kiểu Palette để thể hiện các thông tin về bảng mu. PaletteType = Record size: byte; colors: array [0 maxColor-1] of shortInt; end; Trong đó quy ớc mu nền l Palette.Colors[0], mu số 0 trong bộ mu. SetAllPalette (var PaletteName); Thay đổi sang một bảng mu mới. SetPalette( N: word; Color: shortInt); Đổi ô mu thứ N trong mảng mu của bảng mu sang mu mới. GetPalette( Palette) ; Ghi các giá trị của bảng mu đang dùng vo một cấu trúc kiểu PaletteType. SetColor( Color: word ); Đặt mu vẽ hiện tại SetBkColor( Color: word) ; Đặt mu nền. GetMaxColor; Hm trả về số lợng mu của chế độ đồ hoạ hiện tại (tức l giá trị của biến MaxColor) 3.2 Các thủ tục về mẫu tô, mẫu nét vẽ 3.2.1 Các mẫu tô nền. Các mẫu tô nền dùng trong các thủ tục GetFillSettings, SetFillStyle. Tên hằng Giá trị Y nghĩa EmptyFill SolidFill LineFill 0 1 2 Dùng mu nền Dùng mu vẽ Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 225 Lập trình bằng Turbo Pascal LtSlashFill SlashFill BkSlashFill LtBkSlashFill HatchFill XHatchFill InterleaveFill WideDotFill CloseDotFill UserFill 3 4 5 6 7 8 9 10 11 12 ////////// ////////// (nét đậm hơn) \\\\\\\\\\ (nét đậm hơn) \\\\\\\\\\ lới ô vuông đứng # lới ô chéo lới đờng chéo dầy sít nhau . . . . . . Mẫu do ngời lập trình định nghĩa bằng SetFillPatern SetFillStyle(Pattern: Word; Color: Word); Đặt mẫu tô v mu tô (bên trong một hình đóng kín). Thủ tục ny xác định mẫu vẽ v mu tô bên trong hình vẽ bởi các thủ tục FillPoly, Bar, Bar3D, PieSlice. Có nhiều mẫu lm sẵn nh nêu trong bảng trên. Nếu tham số cho SetFillStyle không hợp lệ thì GraphResult sẽ trả về grError v Style hiện hnh không thay đổi. Nếu Pattern = UserFill thì sẽ l dùng mẫu do ngời lập trình tự xây dựng (xem thủ tục SetFillPattern) Ví dụ. uses Graph; var FillInfo: FillSettingsType; begin KhoiTaoDoHoa; GetFillSettings(FillInfo); {Ghi lu mẫu tô v mu tô hiện hnh} Bar(0, 0, 50, 50); SetFillStyle(XHatchFill, GetMaxColor); {tô bằng mẫu mới, mu mới} Bar(50, 0, 100, 50); with FillInfo do SetFillStyle(Pattern, Color); {Khôi phục lại mẫu v mu tô lúc trớc} Bar(100, 0, 150, 50); Readln; CloseGraph; end. 3.2.2 Tự xây dựng mẫu tô nền Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 226 [...]... dùng các kiểu nét vẽ đã lm sẵn Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 228 Lập trình bằng Turbo Pascal Trái lại, nếu dùng kiểu nét vẽ do ngời lập trình tự định nghĩa, LineStyle = UserBitLn, thì tham số Pattern đợc thay bằng một giá trị số nhị phân 16 bit, thể hiện mẫu nét vẽ do ngời lập trình tự xây dựng Ví dụ: Thay tham số Pattern bằng giá trị $AAAA có nghĩa l nét vẽ mu xám vì $AAAA = 1010101010101010.. .Lập trình bằng Turbo Pascal Mẫu nền UserFill nghĩa l mẫu nền do ngời lập trình tự xây dựng Ngời lập trình tự xây dựng mẫu nền, dùng kiểu FillPatternType đã đợc định nghĩa sẵn trong Unit Graph nh sau: Type FillPatternType = array[1 8] of byte; Mảng 8 byte sẽ cho ta một ma trận điểm 8 x 8 Ta có thể vẽ một mẫu tuỳ ý bằng cách gán bit tại vị trí tơng ứng l 0 hay... trên mn hình trơn có thể thực hiện đơn giản bằng cách sau: 1- vẽ hình, 2- xoá hình vừa vẽ bằng cách vẽ lại hình nhng bằng mu nền, 3- vẽ lại hình tại vị trí mới Lặp lại các bớc 2, 3 nhiều lần ta sẽ có hình chuyển động Ví dụ: hình vòng tròn lăn từ trái sang phải uses crt,graph; const radius = 50; Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 235 Lập trình bằng Turbo Pascal Var step = 5; x,y: integer; Procedure... nó di chuyển từng bớc theo bốn hớng bằng các phím mũi tên b) Kích hoạt nó chuyển động theo một hớng (x,y) no đó (lấy ngẫu nhiên hoặc nhập từ bn phím) c) Xử lí để khi gặp cạnh mn hình thì bật trở lại theo đúng luạt phản lực Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 242 Lập trình bằng Turbo Pascal 6 Vẽ đồ thị hm số y=sin x trên đoạn [a,b] có độ di l 2 b) lập chơng trình mẫu để vẽ đồ thị một hm số bất... v lệnh không có hiệu quả Các thủ tục InitGraph, GraphDefaults, SetGraphMode đều đặt lại khung nhìn l ton bộ mn hình Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 2 29 Lập trình bằng Turbo Pascal Có thể lấy các giá trị tham số về viewport đang hiện hnh bằng cách gọi thủ tục GetViewSettings Giá trị trả về của thủ tục GetViewSettings l một biến kiểu ViewPortType (chi tiết xem bên dới) ClearViewPort; Huỷ tác dụng... (offscreen), sau đó hiển thị nhanh chóng bằng cách chuyển nó thnh trang đang hiển thị (visual page) Nh vậy, sau lệnh SetActivePage các thủ tục đồ hoạ vẽ, viết l thực hiện trên trang ny Sau khi chuẩn bị xong nội dung của trang thì mới cho hiển thị thực sự ra mn hình bằng SetVisualPage SetVisualPage(Page: Word); Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 240 Lập trình bằng Turbo Pascal Hiện trang mn hình Page đã... thực của x, - Tính y = f(x), Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 231 Lập trình bằng Turbo Pascal - Chuyển giá trị thực của y thnh toạ độ Ypixel Lu ý các toạ độ điểm ảnh l số nguyên nên có thể phải lm tròn kết quả Cụ thể: x:= a + Xpixel*DeltaX; y:= f(x); Ypixel:= Ypixel_max - Round(( y - c)/DeltaY); 4.2 Chơng trình chi tiết Chơng trình dới đây sẽ vẽ đồ thị của hm số y = exp (x) - 1 Giả sử ta quan tâm... Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 234 Lập trình bằng Turbo Pascal { vẽ đờng cong đồ thị} For i:= 0 to Xpixel_max do Begin Xpixel:= i; Xval:= Xval_min + Xpixel*DeltaX; Yval:= HamCanVeDoThi(Xval); Ypixel:= Ypixel_max - Round((Yval Yval_min)/DeltaY); Putpixel(Xpixel,Ypixel,white); end; repeat until KeyPressed; end; { thủ tục vẽ đồ thị} Trong thân chơng trình chính chỉ cần gọi thủ tục vẽ đồ thị với... biến y=f(x) Cần vẽ đồ thị hm số trong một khung hình chữ nhật xác định a x b , min = c f(x) d = max Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 230 Lập trình bằng Turbo Pascal 4.1 Phân tích thiết kế Việc vẽ một hình trên mn hình đồ hoạ đợc thực hiện bằng cách vẽ từng điểm ảnh Thực chất việc vẽ đồ thị hm số trên một hệ toạ độ Đề các vuông góc cũng l chấm ra liên tục các điểm có toạ độ (x, f(x)) Có... chứa nội dung của vùng hình theo từng bit Kích thớc (theo byte) của vùng hình xác định bằng hm ImageSize Phần bộ nhớ dnh ghi lu vùng hình không đợc vợt quá 64K ImageSize(X1, Y1, X2, Y2: Integer): Word; Lấy kích thớc (theo byte) của vùng ảnh hình chữ nhật Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 236 Lập trình bằng Turbo Pascal X1, Y1, X2, Y2 l các toạ độ xác định hình chữ nhật ImageSize cho biết số byte . Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 226 Lập trình bằng Turbo Pascal Mẫu nền UserFill nghĩa l mẫu nền do ngời lập trình tự xây dựng. Ngời lập trình tự xây dựng mẫu nền, dùng kiểu FillPatternType. CNTT - ĐHQG H nội 228 Lập trình bằng Turbo Pascal Trái lại, nếu dùng kiểu nét vẽ do ngời lập trình tự định nghĩa, LineStyle = UserBitLn, thì tham số Pattern đợc thay bằng một giá trị số nhị. mn hình. Nguyễn Đình Hoá, Viện CNTT - ĐHQG H nội 2 29 Lập trình bằng Turbo Pascal Có thể lấy các giá trị tham số về viewport đang hiện hnh bằng cách gọi thủ tục GetViewSettings. Giá trị trả

Ngày đăng: 23/07/2014, 21:20

TỪ KHÓA LIÊN QUAN