Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
0,91 MB
Nội dung
Bài Th c Hành - L p trình Visual Basic (VBPR131085) BÀI TH C HÀNH PictureBox V Đ Th Hãy C C N TH N T T C N I DUNG th c hành tr Sinh viên T GÕ CODE, KHÔNG COPY t có s n, đ n m đ c làm c vi c l p trình Chu n đ u Sau này, ng i h c có th : Chuy n đ i đ c t a đ gi a h t a đ toán (Oxy) h t a đ c a PictureBox ho c Form đ v đ th hàm s S d ng đ V đ c ph ng th c v : PSet, Line, Circle c bi u đ tròn, c t đ th hàm s đ c yêu c u Chu n b c l i v control: PictureBox Tài li u tham kh o g i ý: Ch ng 9, Giáo trình Visual Basic 6.0, Nguy n S Ph m K Thu t TP H Chí Minh Ph ng Quang, ih c ng ti n Máy tính có cài đ t Visual Studio 6.0 Ki n th c b tr H màu RGB: H màu: m t s mô t màu s c máy tính Ví d th c t , ta mô t màu b ng t ng , nh : , Cam, Vàng, Tr ng, en…, cịn máy tính, có r t nhi u màu c n ph i th hi n, ng i ta th ng đánh s đ ch màu, ví d : RGB(255, 0, 0): màu đ , RGB(0, 255, 0): màu xanh lá, RGB(255, 255, 255): màu tr ng H màu RGB: h màu đ c dùng ph bi n máy tính H màu dùng thơng s : R (Red – ), G (Green – Xanh lá), B (Blue – Xanh d ng) đ ch màu s c M i thơng s có giá tr t 0-255 Các thông s k t h p v i t o thành màu s c, gi ng nh ta tr n màu l i đ c m t màu t ng h p Ví d : Red = 255, Green = 0, Blue = 0: màu đ , th ng đ c ghi là: RGB(255, 0, 0); ho c Red = 0, Green = 0, Blue = 255: màu xanh d ng (RGB(0, 0, 255)); hay Red = 255, Green = 255, Blue = 0: màu vàng (RGB(255, 255, 0)) Bài Th c Hành - L p trình Visual Basic (VBPR131085) H t a đ PictureBox: Trong PictureBox, g c t a đ góc trên, bên trái c a PictureBox v i tr c t a đ có chi u nh hình bên d i Ta g i tên h t a đ Ost (đ phân bi t v i h t a đ Oxy toán h c (có tr c Oy h ng lên)): (0,0) Ot Os PictureBox Nh v y, PictureBox: T a đ theo chi u ngang (Os) có giá tr t ScaleWidth T a đ theo chi u d c (Ot) có giá tr t ScaleHeight (ScaleWidth ScaleHeight thu c tính ch b r ng b cao c a PictureBox, xem ph n Các thu c tính c a PictureBox) i h t a đ sang h t a đ c a PictureBox: H t a đ toán Oxy (có tr c tung Oy h ng lên), cịn h t a đ Ost c a PictureBox có tr c tung Ot h ng xu ng Ngoài ra, h t a đ cịn có m đ t g c t a đ khác Vì v y, đ v đ th hàm s , ta ph i chuy n t h Oxy sang h Ost Xem ví d chuy n đ i sau Ví d 1: V hàm y = Asin(x), v i A m t s d ng, x t 02 Ost Oxy i t a đ tr c hoành: x: s: width (width = PictureBox.ScaleWidth) x/2 = s/width x = s*2 /width Bài Th c Hành - L p trình Visual Basic (VBPR131085) i t a đ tr c tung: A y: -A t: height (height = PictureBox.ScaleHeight) Ta th y y t ng (-A A), t gi m (height 0), v y ta nhân t v i -1 đ t c ng t ng: y: A -A -t: -height Bây gi ta đ a m t đ u mút c a y –t v m t giá tr (trong ta ch n đ a v 0), b ng cách c ng y v i -A: y-A: -2A -t: -height y-A/-2A = -t/-height t = (A-y)*height/2A N u ta ch n A = height/2 t = A-y Ví d 2: V hàm y = -x3 + 3x2 - 2, v i x t -a a ho c y t -a a (t c g c t a đ Oxy n m gi a PictureBox) Ost Oxy i t a đ tr c hoành: x: -a a s: width (width = PictureBox.ScaleWidth) Bây gi ta đ a m t đ u mút c a x s v m t giá tr (trong ta ch n đ a v 0), b ng cách c ng x v i a: a+x: 2a s: width (a+x)/2a = s/width x = s*2a/width - a Bài Th c Hành - L p trình Visual Basic (VBPR131085) i t a đ tr c tung: a y: -a t: height (height = PictureBox.ScaleHeight) Ta th y y t ng (-a a), t gi m (height 0), v y ta nhân t v i -1 đ t c ng t ng: y: a -a -t: -height Bây gi ta đ a m t đ u mút c a y –t v m t giá tr (trong ta ch n đ a v 0), b ng cách c ng y v i -a: y-a: -2a -t: -height y-a/-2a = -t/-height t = (a-y)*height/2a i m hi n t i (current graphics position) c a PictureBox: Khi v hình PictureBox, VB s t l u l i v trí c a l n v sau g i i m hi n t i T a đ c a m đ c l u thu c tính CurrentX, CurrentY c a PictureBox Ví d : Ban đ u, m hi n t i s g c t a đ c a PictureBox (CurrentX=0, CurrentY=0) Sau đó, ta v m t m lên PictureBox m hi n t i s t a đ c a m Sau đó, v ti p m t m khác, m hi n t i t a đ m m i v N u ta s m t đ ng th ng m hi n t i s m đ u cu i c a đ ng th ng (xem thêm v CurrentX ho c CurrentY MSDN) Các thu c tính c a PictureBox: Cls: xóa n i dung có PictureBox AutoRedraw = True: t đ ng v l i n i dung PictureBox (ví d nh sau PictureBox b che khu t hay u ch nh kích th c… ) ForeColor: xác l p màu dùng đ v hình (màu đ DrawWidth: ch đ nh đ dày c a đ FillColor: xác l p màu dùng đ tơ vào hình Th đ nh màu FillStyle: xác l p ki u tơ hình Ví d : VbFSTransparent: su t (m c đ nh c a VB), vbFSSolid: tơ kín b ng màu, vbVerticalLine: tô b ng đ ng k d c, vbCross: tô b ng đ ng ca rô (xem thêm MSDN) ScaleHeight, ScaleWidth: chi u cao chi u r ng bên c a PictureBox (khơng tính vi n c a PictureBox) Height, Width: chi u cao chi u r ng c a PictureBox (có tính c vi n) Các ph ng vi n hình) ng vi n v hình ng dùng hàm RGB() đ ch ng th c v c a PictureBox: PSet (x, y), [color]: v m t m (Point Set) t i t a đ (x, y) v i màu color Line (x1, y1) - (x2, y2), [color], [B][F]: v đ ng th ng t m (x1, y1) đ n m (x2, y2) v i màu color N u không ch đ nh m (x1, y1) VB s l y m hi n t i (CurrentX, CurrentY) làm m (x1, y1) N u ch đ nh thêm B: v hình ch nh t (Box) v i đ nh (x1, y1) (x2, y2) N u ch đ nh BF: v hình ch nh t tơ màu vào bên (Fill), màu tô màu đ c ch đ nh b i thu c tính FillColor FillStyle c a PictureBox Bài Th c Hành - L p trình Visual Basic (VBPR131085) Circle (x, y), radius, [color, start, end, aspect]: v cung trịn ho c hình trịn, hình ellipse (x, y) t a đ tâm N u v hình trịn: radius bán kính, aspect = N u v ellipse: radius bán kính l n h n bán kính (xem hình bên d i), aspect = bán kính tr c đ ng / bán kính tr c ngang Hai hình sau v ellipse có ph ng trình: b b a a a>b radius = a, aspect = b/a b>a radius = b, aspect = b/a Tham s start, end: góc b t đ u k t thúc c a cung trịn (tính b ng radian) VB ln ln tính góc theo chi u d ng (chi u ng c chi u kim đ ng h ) cho dù góc start end s âm Tuy nhiên, ch đ nh góc s âm, VB s v m t ph n hình trịn đóng (có th tơ màu), cịn n u góc s d ng VB ch v cung trịn (xem hình bên d i) start = , end = /2 start = - , end = - /2 Các hàm c n bi t: RGB(do, xanhla, xanhduong): tr v màu s c theo h RGB v i thông s màu s c có giá tr do, xanhla, xanhduong Ví d : RGB(0, 0, 255): màu xanh d ng Th i l ng ti t N i dung th c hành Bài th c hành có h 6.1 V đ ng d n chi ti t: ng ellipse 6.2 V ellipse tô màu 6.3 V bi u đ tròn 6.4 V bi u đ c t 12 6.5 V đ th hàm sin 14 6.6 V đ th hàm b c 15 Bài th c hành t th c hi n: 7.1 V đ th hàm s l ng giác 17 Bài Th c Hành - L p trình Visual Basic (VBPR131085) 6.1 V Đ NG ELLIPSE 6.1.1 Mô t D li u vào: bán kính a, b c a đ D li u ra: đ ng ellipse t ng ellipse ng ng i u n: nút cmdVe: th c hi n v ellipse 6.1.2 Th c hi n M Visual Basic, ch n New Project/Standard EXE, save vào th m c Bai27_PictureBox_VeDuongEllipse (t t o tr c) T o form nh hình: PictureBox: pic1 Nh p đúp vào nút cmdVe nh p code: Private Dim Dim Dim Sub cmdVe_Click() a As Integer, b As Integer xc As Integer, yc As Integer BanKinh As Integer a = Val(txtA.Text) b = Val(txtB.Text) If a > b Then BanKinh = a Else BanKinh = b End If xc = pic1.ScaleWidth / yc = pic1.ScaleHeight / pic1.Cls pic1.Circle (xc, yc), BanKinh, RGB(0, 0, 255), , , b / a End Sub Bài Th c Hành - L p trình Visual Basic (VBPR131085) L u nh n nút Start hay F5 đ ch y xem k t qu : 6.2 V ELLIPSE VÀ TÔ MÀU 6.2.1 Mô t D li u vào: ch đ nh màu s c ki u tô D li u ra: hình ellipe v i màu s c ki u tô t ng ng i u n: CheckBox OptionButton 6.2.2 Th c hi n M Visual Basic, ch n New Project/Standard EXE, save vào th m c Bai28_PictureBox_VeEllipseVaToMau (t t o tr c) T o form nh hình: PictureBox: pic1 Nh p đúp vào form nh p code: Private Dim Dim Dim Sub Ve() R As Integer, G As Integer, B As Integer kieuto As Integer w As Integer, h As Integer Bài Th c Hành - L p trình Visual Basic (VBPR131085) If chkRed.Value = vbChecked Then R = 255 Else R = End If If chkGreen.Value = vbChecked Then G = 255 Else G = End If If chkBlue.Value = vbChecked Then B = 255 Else B = End If If optSolid.Value = True Then kieuto = vbFSSolid ElseIf optVerticalLine.Value = True Then kieuto = vbVerticalLine Else kieuto = vbCross End If pic1.Cls pic1.AutoRedraw = True pic1.ForeColor = RGB(0, 0, 255) pic1.DrawWidth = pic1.FillColor = RGB(R, G, B) pic1.FillStyle = kieuto w = pic1.ScaleWidth h = pic1.ScaleHeight pic1.Circle (w / 2, h / 2), w / 2, , , , h / w End Sub Private Sub Form_Load() Call Ve End Sub L nl t nh p đúp vào CheckBox nh p code: Private Sub chkBlue_Click() Call Ve End Sub Bài Th c Hành - L p trình Visual Basic (VBPR131085) Private Sub chkGreen_Click() Call Ve End Sub Private Sub chkRed_Click() Call Ve End Sub L nl t nh p đúp vào OptionButton nh p code: Private Sub optCross_Click() Call Ve End Sub Private Sub optSolid_Click() Call Ve End Sub Private Sub optVerticalLine_Click() Call Ve End Sub L u nh n nút Start hay F5 đ ch y xem k t qu : 6.3 V BI U Đ TRỊN 6.3.1 Mơ t D li u vào: s li u cho ph n c a bi u đ D li u ra: bi u đ tròn v i ph n t ng ng i u n: nút cmdVe: th c hi n v bi u đ 6.3.2 Th c hi n M Visual Basic, ch n New Project/Standard EXE, save vào th m c Bai29_PictureBox_VeBieuDoTron (t t o tr c) Bài Th c Hành - L p trình Visual Basic (VBPR131085) T o form nh hình: PictureBox: pic Nh p đúp vào nút cmdVe nh p code: Private Sub cmdVe_Click() Dim phan1 As Integer, phan2 As Integer, phan3 As Integer, phan4 As Integer Dim tong As Integer Dim gocdau As Double, goccuoi As Double Dim PI As Double Dim xc As Integer, yc As Integer PI = 4# * Atn(1#) xc = pic.ScaleWidth / yc = pic.ScaleHeight / phan1 = Val(txtPhan1.Text) phan2 = Val(txtPhan2.Text) phan3 = Val(txtPhan3.Text) phan4 = Val(txtPhan4.Text) tong = phan1 + phan2 + phan3 + phan4 pic.Cls pic.AutoRedraw = True pic.ForeColor = RGB(0, 0, 255) pic.DrawWidth = pic.FillStyle = vbFSSolid 'Ve Phan pic.FillColor = RGB(255, 0, 0) gocdau = * PI goccuoi = (phan1 / tong) * * PI 10 Bài Th c Hành - L p trình Visual Basic (VBPR131085) pic.Circle (xc, yc), pic.ScaleWidth / - 100, , -gocdau, goccuoi 'Ve Phan pic.FillColor = RGB(0, 255, 0) gocdau = goccuoi goccuoi = gocdau + (phan2 / tong) * * PI pic.Circle (xc, yc), pic.ScaleWidth / - 200, , -gocdau, goccuoi 'Ve Phan pic.FillColor = RGB(255, 255, 0) gocdau = goccuoi goccuoi = gocdau + (phan3 / tong) * * PI pic.Circle (xc, yc), pic.ScaleWidth / - 200, , -gocdau, goccuoi 'Ve Phan pic.FillColor = RGB(255, 0, 255) gocdau = goccuoi goccuoi = gocdau + phan4 / tong * * PI pic.Circle (xc, yc), pic.ScaleWidth / - 200, , -gocdau, goccuoi End Sub L u nh n nút Start hay F5 đ ch y xem k t qu : 11 Bài Th c Hành - L p trình Visual Basic (VBPR131085) 6.4 V BI U Đ C T 6.4.1 Mô t D li u vào: s li u cho c t c a bi u đ D li u ra: bi u đ c t v i c t t ng ng i u n: nút cmdVe: th c hi n v bi u đ 6.4.2 Th c hi n M Visual Basic, ch n New Project/Standard EXE, save vào th m c Bai30_PictureBox_VeBieuDoCot (t t o tr c) T o form nh hình: PictureBox: pic Nh p đúp vào nút cmdVe nh p code: Private Dim Integer Dim Dim c1 c2 c3 c4 Sub cmdVe_Click() c1 As Integer, c2 As Integer, c3 As Integer, c4 As cmax As Integer ChieuRongCot As Integer, ChieuCaoCot As Integer = = = = Val(txtCot(0).Text) Val(txtCot(1).Text) Val(txtCot(2).Text) Val(txtCot(3).Text) cmax = c1 If c2 > cmax Then cmax = c2 End If If c3 > cmax Then cmax = c3 End If If c4 > cmax Then cmax = c4 End If 12 Bài Th c Hành - L p trình Visual Basic (VBPR131085) pic.Cls pic.AutoRedraw = True pic.ForeColor = RGB(0, 0, 255) pic.DrawWidth = ChieuRongCot = pic.ScaleWidth / pic.FillColor = RGB(255, 0, 0) 'Ve Cot pic.FillStyle = vbVerticalLine ChieuCaoCot = (c1 / cmax) * pic.ScaleHeight pic.Line (0, Height)-(ChieuRongCot, pic.ScaleHeight ChieuCaoCot), , B 'Ve Cot pic.FillStyle = vbHorizontalLine ChieuCaoCot = (c2 / cmax) * pic.ScaleHeight pic.Line (ChieuRongCot, Height)-(ChieuRongCot * 2, pic.ScaleHeight - ChieuCaoCot), , B 'Ve Cot pic.FillStyle = vbCross ChieuCaoCot = (c3 / cmax) * pic.ScaleHeight pic.Line (ChieuRongCot * 2, Height)-(ChieuRongCot * 3, pic.ScaleHeight - ChieuCaoCot), , B 'Ve Cot pic.FillStyle = vbDiagonalCross ChieuCaoCot = (c4 / cmax) * pic.ScaleHeight pic.Line (ChieuRongCot * 3, Height)-(ChieuRongCot * 4, pic.ScaleHeight - ChieuCaoCot), , B End Sub L u nh n nút Start hay F5 đ ch y xem k t qu : 13 Bài Th c Hành - L p trình Visual Basic (VBPR131085) 6.5 V Đ TH HÀM SIN 6.5.1 Mơ t D li u vào: khơng có D li u ra: đ th hàm sin i u n: khơng có (đ th s đ c v s ki n Form_Paint (v form) x y ra) 6.5.2 Th c hi n M Visual Basic, ch n New Project/Standard EXE, save vào th m c Bai31_PictureBox_VeDoThiHamSin (t t o tr c) T o form nh hình: PictureBox: pic1 Nh p đúp vào form nh p code: Private Sub Form_Paint() Dim x As Double, y As Double Dim s As Integer, t As Integer Dim A As Integer Dim width As Integer, height As Integer Dim PI As Double Dim SoChuKy As Integer width = pic1.ScaleWidth height = pic1.ScaleHeight A = height \ PI = * Atn(1) pic1.AutoRedraw = True 14 Bài Th c Hành - L p trình Visual Basic (VBPR131085) 'Ve truc Ox pic1.Line (0, height / 2)-(width, height / 2) pic1.DrawWidth = 'Ve chu ky SoChuKy = For s = To width Step x = SoChuKy * * PI * s / width y = A * Sin(x) t = A - y pic1.PSet (s, t), RGB(255, 0, 0) Next End Sub L u nh n nút Start hay F5 đ ch y xem k t qu : 6.6 V Đ TH HÀM B C 6.6.1 Mô t D li u vào: hàm b c 3: y = -x3 + 3x2 – D li u ra: đ th hàm b c 3: y = -x3 + 3x2 - 2, v i x có giá tr t -a a ho c y t -a a (a s d ng tùy ý) i u n: khơng có (đ th s đ c v s ki n Form_Paint (v form) x y ra) 6.6.2 Th c hi n M Visual Basic, ch n New Project/Standard EXE, save vào th m c Bai32_PictureBox_VeDoThiHamBac3 (t t o tr c) Không c n thi t k form (vì v tr c ti p lên form) 15 Bài Th c Hành - L p trình Visual Basic (VBPR131085) Nh p đúp vào form nh p code: Private Sub Form_Paint() 'CHÚ Ý: S Dim x As Double, y As Double Dim a As Double ki n Form_Paint Dim s As Long, t As Long Dim width As Integer, height As Integer width = Me.ScaleWidth 'Me: form ch y height = Me.ScaleHeight 'V tr c t a đ : Ox, Oy Me.ForeColor = RGB(0, 0, 0) Me.DrawWidth = 'Ox Me.Line (0, height / 2)-(width, height / 2) 'Oy Me.Line (width / 2, 0)-(width / 2, height) 'V đ th hàm s : y = -x3 + 3x2 - 2, 'v i x t -a a ho c y t -a a Me.ForeColor = RGB(0, 0, 255) Me.DrawWidth = a = ' ' ' ' ' ' ' 'Dùng cách sau đ v : 'CÁCH 1: cho s ch y (t -> width) For s = To width Step x = * a * s / width - a y = -x * x * x + * x * x - t = (a - y) * height / (2 * a) Me.PSet (s, t) Next 'CÁCH 2: cho x ch y (t -a -> a) For x = -a To a Step 0.001 y = -x * x * x + * x * x - s = (a + x) * width / (2 * a) t = (a - y) * height / (2 * a) Me.PSet (s, t) Next End Sub 16 Bài Th c Hành - L p trình Visual Basic (VBPR131085) L u nh n nút Start hay F5 đ ch y xem k t qu : Bài t p đ ngh 7.1 V đ th hàm s l Mô t : Vi t ch ng giác ng trình v đ th hàm s l ng giác sau: v i x t -2*2 2*2 ho c y t -2*2 2*2 H ng d n: Làm t d i ng t 6.6 V đ th hàm b c th k t qu đ c cho hình bên 17 Bài Th c Hành - L p trình Visual Basic (VBPR131085) H T 18 ... 6. 2 V ellipse tô màu 6. 3 V bi u đ tròn 6. 4 V bi u đ c t 12 6. 5 V đ th hàm sin 14 6. 6 V đ th hàm b c 15 Bài th c hành t th. .. Bài Th c Hành - L p trình Visual Basic (VBPR131085) 6. 5 V Đ TH HÀM SIN 6. 5.1 Mô t D li u vào: khơng có D li u ra: đ th hàm sin i u n: khơng có (đ th s đ c v s ki n Form_Paint (v form) x y ra) 6. 5.2... có (đ th s đ c v s ki n Form_Paint (v form) x y ra) 6. 6.2 Th c hi n M Visual Basic, ch n New Project/Standard EXE, save vào th m c Bai3 2_PictureBox_VeDoThiHamBac3 (t t o tr c) Không c n thi t