Ta sử dụng rất nhiều ứng dụng trên đồ họa máy tính trongcác công việc hàng ngày nh các chơng trình quảng cáo trên vô tuyến, biểu diễn dự báo thời tiết hoặc trò chơi điện tử… Đồ họa máy t
Trang 1Lời cảm ơn
Lời đầu tiên cho phép em đợc gửi lời cảm ơn chân thành và sâu sắc tới
cô giáo Phan Lê Na ngời đã tận tình giúp đỡ em trong thời gian làm khoá
luận Qua đây em cũng xin đợc bày tỏ lòng biết ơn tới các thầy cô giáo khoa Công Nghệ Thông Tin cùng các bạn đã giúp đỡ em hoàn thành tốt khoá luận này
Vì thời gian và nguồn t liệu có hạn, nên không tránh khỏi những thiếu sót nên rất mong đợc sự chỉ bảo của thầy cô và bạn bè
Xin trân trọng cảm ơn!
Mục lục
Trang
Lời cảm ơn 1
Lời nói đầu 4
Chơng I: Tổng quan về kỹ thuật đồ hoạ 8
I Các khái niệm tổng quan của kỹ thuật đồ hoạ máy tính 8
Trang 21 Kỹ thuật đồ họa máy tính 8
2 Kỹ thuật đồ họa tơng tác 8
II Các kỹ thuật đồ họa 9
1 Kỹ thuật đồ họa điểm 9
2 Kỹ thuật đồ họa vecto 10
3 Sự phát triển của kỹ thuật hiển thị 10
III Phân loại 11
1 Hệ tọa độ 11
2 Kỹ thuật xử lý 11
3 Phân loại theo ứng dụng 12
IV Hệ đồ họa tơng tác 13
1 Mô hình hệ đồ họa tơng tác 13
2 Các thành phần của hệ đồ họa tơng tác 13
Chơng II: Một số nét về đồ họa trong Visual Basic 16
I Màu và độ mịn 16
1 Độ mịn 16
2 Màu 18
3 ánh xạ màu 24
II Hệ thống tọa độ 27
1 Hệ toạ độ 27
2 Đơn vị đo 28
III Các điều khiển đồ hoạ của Visual Basic 29
1 Hộp hình và điều khiển ảnh 30
3 Điều khiển hình dạng 31
4 Điều khiển Line 31
IV Các phơng thức đồ họa 32
1 Phơng thức PaintPicture 32
2 Phơng thức Pset 32
3 Phơng thức Line 34
4 Phơng thức Circle 35
V Các thuộc tính vẽ 37
1 Fillstyle 37
2 DrawWidth 37
3 DrawStyle 37
4 DrawMode 38
VI Vẽ lại biểu mẫu với hiệu quả cao 38
1 Thuộc tính ClipControls 38
Trang 32 Thuộc tính AutoRedraw 39
Chơng III: DLL và Windows API .40
I DLL 40
1 Th viện liên kết động 40
2 Các DLL của Windows 41
II Win API 42
1 Tìm kiếm API 42
2 Gọi API 42
3 Một số API thờng dùng 47
Chơng IV: Giao diện một số chơng trình đồ hoạ 49
I Một số hình cơ bản 49
II Một số hình nâng cao 53
Kết luận 58
Tài liệu tham khảo 59
Lời nói đầu
1 Lý do chọn đề tài
Trong giai đoạn hiện nay công nghệ thông tin đang là một trong những ngành mũi nhọn và đợc ứng dụng rất rộng rãi trên nhiều lĩnh vực của đời sống xã hội Đặc biệt công nghệ thông tin giải quyết đợc rất nhiều các bài toán trong thực tế cũng nh trong các ngành công nghiệp
Cùng với sự phát triển của công nghệ thông tin đồ hoạ máy tính là một trong những lĩnh vực phát triển Nó đợc ứng dụng rộng rãi trong rất nhiều lĩnh vực nh khoa học và công nghệ, y học, kiến trúc và giải trí Đồ họa máy tính cùng với mô hình hoá hình học đang giúp con ngời thay đổi cách cảm nhận và
sử dụng máy tính trở thành công cụ quan trọng trong thiết kế kỹ thuật và đời sống hàng ngày
Vào đầu những năm 1980 máy tính chỉ dùng trong các lĩnh vực chuyên môn hoá Sau đó máy tính cá nhân ra đời đợc xây dựng với chế độ hiển thị đồ họa điểm ảnh của Xeron và tiếp theo nó đợc sản xuất hàng loạt với giá thành rẻ
nh Apple Macintoc và IBM PC Việc sử dụng chế độ Bitmap trong tơng tác giữa ngời với máy tính trở thành phổ biến hơn Bitmap là bộ nhớ trong đó các bit 0 và 1 là đại diện cho một khối của dãy các điểm trên màn hình Đồ họa sử dụng Bitmap có giao diện thuận lợi cho phép mọi ngời sử dụng một cách đơn giản
Trang 4Ngày nay khái niệm "Desktop" đợc phổ biến với việc thiết lập mộtkhoảng không gian trên màn hình Có nghĩa là trên một cửa sổ chính ngời sửdụng có thể tạo ra xác định vị trí, thay đổi kích thớc các vùng hình chữ nhậttrên màn hình gọi là các cửa sổ con Nó có vai trò nh một thiết bị đầu cuối cho
đồ họa ảo mỗi khi chạy chơng trình Phơng pháp này cho phép ngời sử dụng cóthể làm đợc nhiều hoạt động bằng cách sử dụng chuột Việc điều
khiển thao tác của đối tợng bằng cách " trỏ và bấm" thay thế cách gõ lệnh ở
hệ điều hành trớc Vì vậy ngời dùng có thể kích hoạt chơng trình bằng cáchchọn các biểu tợng hay sử dụng các menu Tóm lại, đồ họa máy tính là toàn bộtất cả những gì liên quan tới việc tổng hợp các hình ảnh của đối tợng thực hay
ảo trên máy tính Ta sử dụng rất nhiều ứng dụng trên đồ họa máy tính trongcác công việc hàng ngày nh các chơng trình quảng cáo trên vô tuyến, biểu diễn
dự báo thời tiết hoặc trò chơi điện tử…
Đồ họa máy tính đã có những ý nghĩa hết sức quan trọng vì nó là môi ờng trung gian để giao tiếp giữa con ngời và máy tính bởi mắt ngời cảm nhậnthông tin bằng đồ họa, hình ảnh…
tr-Ngày nay hầu hết các chơng trình soạn thảo, bảng tính sử dụng đồ họatrong giao diện với ngời sử dụng Danh sách các ứng dụng của đồ họa ngàycàng nhiều và phát triển nhanh chóng với các tính năng của nó Ban đầu đồhọa máy tính hiển thị dữ liệu bằng thiết bị sao chép cứng và màn hình Nó pháttriển cùng với việc sáng tạo, lu trữ, thao tác và điều khiển hình ảnh đối tợng
Đồ họa máy tính đợc phát triển nhanh chóng, ngời sử dụng có thể kiểm soát
đ-ợc nội dung, cấu trúc, hiển thị các đối tợng và hình ảnh của chúng bằng cácthiết bị vào nh bàn phím, chuột…
Sự phát triển của đồ họa máy tính ngày càng rộng rãi với các chế độ đồhọa 2 chiều(2D), 3 chiều(3D) và cao hơn, nó phục vụ trong các lĩnh vực xã hộikhác nh khoa học, giáo dục, y học, kỹ thuật thơng mại và giải trí Chế độ đồhọa là một trong nhiều cách giao tiếp của máy tính, từ khi các tính năng ảnh2D, 3D phát triển cao cho phép chúng ta xử lý các dữ liệu ảnh một cách nhanhchóng và hiệu quả, đồ hoạ máy tính thực sự quan trọng trong việc tạo ra cáchình ảnh từ khi phát minh ra ti vi và máy ảnh, nó nhấn mạnh những u điểmrằng bằng máy tính chúng ta có thể tạo đợc không những hình ảnh của
Trang 5thế giới thực mà còn cả những vật trừu tợng và tổng hợp Thêm nữa chúng takhông dừng lại ở những hình ảnh tĩnh, mặc dù ảnh tĩnh là cách truyền dữ liệutốt, những hình ảnh động thậm chí còn tốt hơn vì nó mang lại nhiều thông tinhơn, một ảnh động bằng nghìn ảnh tĩnh Sử dụng ảnh động rất hiệu quả khi ng-
ời dùng có thể điều khiển phim hoạt hình bằng cách thay đổi tốc độ, chia các
ảnh, các mối liên quan giữa các cảnh phông
Với ảnh động một đối tợng có thể chuyển động và xoay tròn, ngời dùng
có thể xem đợc đối tợng ở mọi góc độ, có thể phóng to hay thu nhỏ theo ý, hay
có thể nhìn vào bên trong của đối tợng với sự di chuyển của Camera Và thay
đổi đợc hình dạng, màu sắc và các thuộc tính khác hay tạo ra một thế giới
ảo(Vitual Word) với hiệu quả ngày càng cao, đồ hoạ có thể tạo ra những kếtquả hay sản phẩm có chất lợng cao hơn và chính xác hơn, năng xuất hơn, giảmchi phí thiết kế
Bên cạnh đó ở Việt Nam ngành công nghệ thông tin tuy còn non trẻsong tốc độ phát triển khá nhanh chóng và đang đợc ứng dụng trên nhiều lĩnhvực của đời sống xã hội nh trong ngành giáo dục, viện nghiên cứu, các nhàmáy xí nghiệp… Nền tảng của sự phát triển đó chính là việc ra đời của cácngôn ngữ lập trình
Ngôn ngữ lập trình phát triển từng ngày và mỗi ngôn ngữ ra đời chính là
sự kế thừa và khắc phục những nhợc điểm của ngôn ngữ trớc nhằm đáp ứngnhu cầu của xã hội
Một trong những ngôn ngữ phổ dụng hiện nay chính là ngôn ngữ lậptrình Visual Basic Có thể nói đây là ngôn ngữ lập trình có cấu trúc chặt chẽ và
hỗ trợ rất nhiều trong việc lập trình của ngời lập trình Với mục đích vừa làmcông cụ giảng dạy vừa có thể giải quyết các bài toán Dựa vào ngôn ngữ lậptrình này chúng ta có thể giải quyết hàng loạt các vấn đề trong thực tế điều đó
chứng tỏ đợc tầm quan trọng và sức sống mãnh liệt của ngôn ngữ lập trình nóichung và Visual Basic nói riêng
Việc giải quyết các bài toán về đồ họa bằng các ngôn ngữ nh TurboPascal, Turbo C, Visual C… ợc các nhà lập trình sử dụng khá nhiều nhng có đ
lẽ ít ngời nghĩ rằng Visual Basic cũng là một công cụ hỗ trợ lập trình đồ họa
Trang 6rất hữu ích Từ thực tiễn trên, cùng với sự hớng dẫn của cô Phan Lê Na vànhững hiểu biết của mình em chọn khoá luận tốt nghiệp với tên là " Một sốvấn đề về đồ họa trong Visual Basic"
2 Mục đích nghiên cứu
Tìm hiểu về một số vấn đề về đồ họa trong Visual Basic dựa trên cáccông cụ hỗ trợ đồ họa cũng nh các phơng thức đồ họa, có sử dụng hàm API môphỏng một số chơng trình đồ họa
3 Bố cục của khoá luận
Nội dung khoá luận gồm:
Chơng I: Tổng quan về kỹ thuật đồ hoạ
Chơng II: Một số nét về đồ họa trong Visual Basic
Chơng II: DLL và Windows API
Chơng IV: Giao diện một số chơng trình đồ họa
Chơng I
Tổng quan về kỹ thuật đồ họa
I Các khái niệm tổng quan của kỹ thuật đồ họa máy tính (Computer Graphics)
1 Kỹ thuật đồ họa máy tính
Kỹ thuật đồ họa máy tính là phơng pháp và công nghệ dùng trong việcchuyển đổi qua lại giữa dữ liệu và hình ảnh trên màn hình bằng máy tính Kỹthuật đồ họa hay đồ họa máy tính còn đợc biểu diễn dới dạng phơng pháp và
kỹ thuật tạo hình ảnh từ các mô hình toán học mô tả các đối tợng hay dữ liệulấy đợc từ các đối tợng trong thực tế
Trang 7Dới cách nhìn của tác giả kỹ thuật đồ họa máy tính có thể định nghĩa
nh một lĩnh vực của công nghệ thông tin mà ở đó nghiên cứu, xây dựng và tậphợp các công cụ(mô hình lý thuyết và th viện) khác nhau để kiến tạo, xâydựng, lu trữ và xử lý các mô hình và hình ảnh của đối tợng, sự vật hiện tợngkhác nhau trong cuộc sống, sản xuất và nghiên cứu Các mô hình và hình ảnhnày có thể là các kết quả thu đợc từ những lĩnh vực khác nhau của rất nhiềungành khoa học
2 Kỹ thuật đồ họa tơng tác(Interactive Computer Graphics)
Cũng nh mọi lĩnh vực khác trong công nghệ thông tin, một hệ thống sửdụng kỹ thuật đồ họa tơng tác là một hệ thống xử lý bao gồm ba thành phầnvới các thao tác tơng ứng:
- Nhập dữ liệu: thông qua các thiết bị vào dữ liệu nh chuột, máy quét, bànphím…
- Xử lý và lu trữ dữ liệu
- Hiển thị kiết xuất kết quả: thông qua các thiết bị nh màn hình, máy in…
Ngoài những đặc thù chung, kỹ thuật đồ hoạ tơng tác còn có một đặc
điểm rất đặc trng Trong hệ thống này, các thông tin và các dữ liệu đặc trng
đ-ợc hiển thị trên màn hình một cách trực quan và ngời sử dụng có thể quan sát,theo dõi, và thay đổi giá trị hoặc khuôn dạng của chúng một cách tơng tác vàngay lập tức những thay đổi này đợc hệ thống ghi nhận và xử lý Kết quả của
sự thay đổi sẽ đợc hệ thống xử lý ngay trên các mô hình, cấu trúc hoặc hình
ảnh của đối tợng và hiển thị chúng ngay trên màn hình nh ngời sử dụng mongmuốn
Mô hình chung của hệ đồ họa tơng tác
II Các kỹ thuật đồ họa
1 Kỹ thuật đồ họa điểm
Nhập/vào
dữ liệu L u trữ, xử lý Hiển thị kết quả
Ngời dùng
Trang 8Các mô hình, hình ảnh của đối tợng đợc hiển thị thông qua từng pixel(mẫu rời rạc) Trong kỹ thuật này chúng ta có thể tạo ra, thay đổi thuộc tính,xoá đi từng pixel của mô hình và hình ảnh các đối tợng Các mô hình hình ảnh
đợc hiển thị nh một lới điểm các pixel rời rạc, từng pixel đều có vị trí xác định,
đợc hiển thị với một giá trị rời rạc các thông số hiển thị(ví dụ nh màu sắc hoặc
độ sáng) Tập hợp tất cả các pixel của lới điểm cho chúng ta một mô hình,hình ảnh đối tợng mà chúng ta muốn hiển thị
Có hai phơng pháp tạo ra các pixel:
- Dùng phần mềm để vẽ trực tiếp từng pixel một, dựa trên các nguyên lý môphỏng để xây dựng nên các đối tợng hoặc hình ảnh thực của sự vật
- Rời rạc hoá(số hoá) hình ảnh thực của đối tợng Sau đó chúng ta có thể sửa
đổi hoặc xử lý mảng các pixel thu đợc theo những phơng pháp khác nhau đểthu đợc hình ảnh đặc trng của đối tợng
2 Kỹ thuật đồ họa vector
Xây dựng mô hình hình học cho mô hình hoặc hình ảnh của đối tợng.Xác định các thuộc tính của nó, sau đó dựa trên mô hình hình học này sẽ thựchiện quá trình tô trát để hiển thị từng điểm của mô hình, hình ảnh thực của đốitợng ở kỹ thuật đồ họa này chúng ta chỉ lu trữ mô tả toán học của các thànhphần trong mô hình hình học cùng với các thuộc tính tơng ứng của nó màkhông lu lại toàn bộ tất cả các pixel của hình ảnh tô trát đợc
Các thành phần này đợc mô tả trong mô hình hình học của đối tợng đợcgọi là thực thể cơ sở hình học của mô hình hình học Sau đó hình ảnh sẽ đợcxây dựng từ các thành phần hình học, tức là chúng ta sẽ thực hiện quá trình tôtrát theo điểm
3 Sự phát triển của kỹ thuật hiển thị
a Kỹ thuật hiển thị bằng ký tự(Character Display)
Kỹ thuật này chỉ cho phép hiển thị text và các đồ họa đơn giản Giaotiếp với ngời sử dụng thông qua các lệnh dới dạng text Để có thể mã hoánhững phơng thức hiển thị khác nhau của đối tợng ngời ta sử dụng những ký tựmã hoá đặc biệt Tất cả các chơng trình và phần mềm đợc thực hiện đều là đơnnhiệm
Trang 9b Kỹ thuật hiển thị Vector (Vector Display)
Kỹ thuật này cho phép hiển thị text và vẽ các đờng thẳng và các hìnhmô phỏng đơn giản Ngời sử dụng có thể quan sát thấy các hình ảnh 2D và 3Dcủa các đối tợng Giao tiếp với ngời sử dụng đợc thực hiện thông qua các dònglệnh các phím ký tự nóng và menu chọn
c ảnh hai chiều
Kỹ thuật này cho phép hiển thị các cửa sổ, các biểu tợng và các dòngvăn bản Trong giao tiếp với ngời sử dụng đã hạn chế tối đa việc gõ các lệnh.Việc tơng tác với ngời sử dụng đợc thực hiện thông qua kỹ thuật tiêu biểu sau:
- Thông qua WINP(Windows, Icons, Menus, Pointer) của giao diện đồ họa:chúng ta chọn và nhấn vào thực đơn chúng ta muốn mà không phải viết lệnh
- Xử lý trực tiếp các đối tợng
III Phân loại
Có rất nhiều phơng pháp để phân loại các lĩnh vực của kỹ thuật đồ họa
ở đây chúng tôi lấy tiêu chí để phân loại các lĩnh vực thành các kỹ thuật đồhọa là mục đích xử lý dữ liệu trong các lĩnh vực tơng ứng
2 Kỹ thuật xử lý
a Kỹ thuật xử lý ảnh
Là lĩnh vực kỹ thuật xử lý các dữ liệu ảnh của sự vật, sự việc thực trongcuộc sống Sau quá trình xử lý ảnh, dữ liệu đầu ra cho ta ảnh số của đối tợng
Trang 10Trong quá trình xử lý ảnh sẽ sử dụng rất nhiều các kỹ thuật phức tạp: kỹ thuậtkhôi phục ảnh, kỹ thuật làm nổi ảnh, kỹ thuật xác định biên ảnh.
b Kỹ thuật nhận dạng
Là một lĩnh vực kỹ thuật xử lý ảnh, từ những mẫu có sẵn ngời ta phânloại theo cấu trúc, hoặc theo các tiêu thức đợc xác định từ trớc và bằng cácthuật toán chọn lọc để có thể phân tích hay tổ hợp ảnh đã cho thành một tậphợp các ảnh gốc, các ảnh này đã đợc lu trong một th viện và căn cứ vào th việnnày ngời ta xây dựng các thuật giải phân tích và tổ hợp ảnh
3 Phân loại theo ứng dụng
a Xây dựng giao diện ngời dùng
Tất cả các phần mềm ứng dụng dù có chạy trên máy chủ, máy trạm đềuphải có giao diện và WINP đang đợc đa số ngời dùng a thích nhờ tính thânthiện, dễ sử dụng của nó Các u điểm của giao diện này so với mô tả các chứcnăng tơng ứng bằng text có thể đợc liệt kê nh sau:
- Chiếm ít không gian trên màn hình
- Ngời dùng có thể nắm bắt dễ dàng nếu các biểu tợng đợc thiết kế tốt để gợinhớ về chức năng của nó
- Có khả năng mở rộng giao diện, nhiều cửa sổ
b Tạo các biểu đồ trong thơng mại, khoa học kỹ thuật
Các biểu đồ tạo ra có rất nhiều dạng, chủng loại có thể ở dới dạng haichiều, ba chiều Các biểu đồ đợc biểu diễn trực quan, cho phép phân tích đầy
đủ và nắm bắt đợc các xu hớng phát triển, các mô hình đợc kiết xuất ra từ
các dữ liệu phức tạp, hỗ trợ đắc lực cho việc phân tích thông tin và trợ giúp raquyết định
c Tự động hoá văn phòng và chế bản điện tử
Hiện nay các nhà xuất bản, các văn phòng của các công ty lớn đều sửdụng các phần mềm tự động hoá văn phòng và dùng chế bản điện tử tự độngcho việc in ấn các tài liệu Các tài liệu này có thể bao gồm nhiều loại dữ liệukhác nhau nh văn bản, đồ thị, hình ảnh…
d Lĩnh vực giải trí, nghệ thuật và mô phỏng
Các phần mềm đồ họa cho phép các họa sỹ tạo ra các hình ảnh ngaytrên màn hình máy tính Ngời hoạ sỹ đợc máy tính cung cấp các công cụ làm
Trang 11việc rất đầy đủ nh khung vẽ, bảng pha màu, các thao tác cắt, dán, tẩy, xoá,phóng to, thu nhỏ và rất nhiều công cụ toán học khác nhau mà họa sỹ trênkhung vải không làm đợc Các phần mềm khác để xây dựng các hình ảnh động
và các kỹ xảo hoạt hình cũng có đầy đủ chức năng nh vậy
IV Hệ đồ họa tơng tác
1 Mô hình hệ đồ hoạ tơng tác
a Khái niệm xử lý theo lô
Chế độ thao tác của máy tính trong đó các chỉ thị lệnh chơng trình đợcthực hiện lệnh này liên tiếp sau lệnh kia mà không cần sự can thiệp của ngời sửdụng máy tính Xử lý theo lô thể hiện sự sử dụng rất hiệu quả nguồn tàinguyên dự trữ của máy tính, nhng thể hiện sự bất tiện khi ngời sử dụng cầnhiệu chỉnh lỗi, cần giao tiếp với máy tính
a Mô hình ứng dụng và xây dựng mô hình ứng dụng
Mô hình ứng dụng phải lu trữ tất cả các dữ liệu, các đối tợng và mọi liênkết giữa các đối tợng này để có thể hiển thị hoặc biểu diễn chung Một đối t-ợng có thể đợc biểu diễn bằng sự kết hợp giữa dữ liệu và một số thủ tục mô tảcác đối tợng này Mô hình ứng dụng có thể đợc chia làm hai thành phần
- Mô hình dữ liệu: lu lại dữ liệu về các đối tợng và thông thờng ngời ta dùngcác cở sở dữ liệu để lu trữ dữ liệu này
- Th viện mô tả: các thủ tục mô tả các đối tợng đợc xây dựng nên từ các thựcthể cơ sở để có thể mô tả các thành phần của các đối tợng, các thuộc tính vàcác phơng thức kết nối
b Phần mềm ứng dụng
Đợc xây dựng để có thể tạo ra, lu giữ lại và lấy ra những dữ liệu và cácthủ tục từ mô hình ứng dụng Phần mềm này đợc xây dựng trên cơ sở mô hình
Trang 12ứng dụng, phần mềm ứng dụng các đối tợng và dữ liệu đợc hiển thị trên mànhình theo phơng thức ngời dùng mong muốn Ngoài ra để hệ thống là hệ đồhọa tơng tác, phần mềm ứng dụng phải xây dựng đợc giao diện với ngời sửdụng phần mềm một cách thuận tiện.
c Hệ thống đồ họa
+ Phần mềm đồ họa hệ thống: Là tập hợp các lệnh đồ họa của hệ thống, tậphợp các lệnh này cần phải thực hiện công việc hiển thị cái gì và chúng sẽ đợchiển thị nh thế nào Phần mềm đồ họa hệ thống là phần mềm xây dựng trên cơ
sở một thể loại phần cứng nhất định và phụ thuộc vào phần cứng
+ Phần cứng đồ họa: Là tập hợp các thiết bị điện tử(CPU, màn hình, chuột, bànphím…) giúp cho việc thực hiện các phần mềm đồ họa Phần mềm đồ họa sẽ
vẽ các đối tợng nhờ gọi các hàm và thủ tục có ở th viện đồ họa, sử dụng các tàinguyên của phần cứng đồ họa
- Kiểu đờng vẽ(line style)
- Kiểu văn bản(text style)
- Mẫu tô(pattern)
+ Chiếu sáng: Cùng với việc chiếu phần quan sát đợc của hình ảnh, ngời ta cònphải tính toán đợc cờng độ sáng của từng điểm ảnh đợc chiếu Đây là một quátrình tính toán phức tạp dựa trên những công thức toán học và bản chất quanghọc, sinh học của hấp thụ và phản chiếu ánh sáng
Trang 13Chơng II
Một số nét về đồ họa trong Visual Basic
Visual Basic 6 cho ta một số phơng tiện về đồ họa(Graphics) để trang
điểm cho các cửa sổ phong phú, thân thiện, dễ làm việc và thú vị, các phơngtiện về đồ họa này tơng đối đủ khả năng để đáp ứng các nhu cầu cần thiếtthông thờng
I Màu và độ mịn
Một đồ họa trong Windows cũng gồm nhiều đốm nhỏ, mỗi đốm đợc gọi
là một pixel, có khả năng hiển thị 16, 256, … màu khác nhau
1 Độ mịn(resolution)
Thông thờng độ mịn của màn ảnh ta dùng là 800 600, tức là chiềungang có 800 pixels và chiều cao có 600 pixels Nếu màu của mỗi pixel đợcbiểu diễn bởi một byte dữ kiện thì với một byte ta có thể chứa một con số từ 0
đến 255 Ngời ta quy ớc rằng số 0 tợng trng cho màu đen, số 255 tợng trng chomàu trắng chẳng hạn Nếu độ mịn của màn ảnh là 1024 768 thì ta sẽ cần
1024 768 = 786432 bytes, tức là gần 0,8 MB
Một byte có 8 bits Khi ta nghe nói 16 bit color, ý nói thay vì một bytengời ta dùng đến 2 bytes cho mỗi pixel Nh vậy mỗi pixel này có khả nănghiển thị 216=65536 màu khác nhau
Trong cùng một hình ảnh việc hiển thị trên hai màn ảnh có cùng độ mịn,thí dụ nh 800 600, nhng kích thớc khác nhau 14 inches và 17 inches, thì dĩnhiên trên màn ảnh 17 inches sẽ lớn hơn, nhng nó vẫn có cùng một số pixels,
có điều pixel của nó lớn hơn pixel của màn ảnh 14 inches
Nói một cách khác, nếu ta dùng màn ảnh lớn hơn thì hình ảnh sẽ lớnhơn nhng không có nghĩa là nó rõ hơn Muốn thấy rõ chi tiết, ta phải làm cho
Trang 14màn ảnh có độ mịn cao hơn Ta thay đổi Display Properties của một màn ảnh bằng cách nháy chuột phải lên màn hình Desktop rồi chọn Properties, tiếp theo nháy chuột vào Tab Setting rồi chọn Screen Resolution và Color Quality nh hình dới:
Khi ta tăng độ mịn của màn ảnh, các hình ảnh sẽ nhỏ lại vì kích thớccủa pixel đợc thu nhỏ lại Do đó, ta có thể hiển thị nhiều thứ hơn trên Desktop.Phẩm chất của các hình ảnh vẫn không thay đổi, mặc dù hình ảnh nhỏ hơn
Muốn hình ảnh rõ hơn thì khi cấu tạo và chứa đồ họa, ta phải dùng một độ mịncao
2 Màu(color)
Khi ta dùng chỉ có một bit(chỉ có trị số 0 hay 1) cho mỗi pixel thì ta chỉ
có trắng hay đen Lúc ấy ta có thể dùng một byte(8 bits) cho 8 pixels Mặc dùvậy, nếu độ mịn của màn ảnh cao đủ, thì hình cũng đẹp Các máy Fax dùng
Trang 15nguyên tắc Scan hình giấy cỡ A4 ra thành những pixel trắng đen rồi gửi qua ờng dây điện thoại qua đầu bên kia để tái tạo lại hình từ những dữ kiện pixels.
đ-Visual Basic 6 cho ta chỉ định một con số vào mỗi màu, và có thể hiểnthị hay chọn trực tiếp từ hộp thoại Có bốn cách:
Chỉ định trực tiếp một con số hay chọn một màu từ bảng màu
Chọn một trong các hằng số định nghĩa sẵn trong Visual Basic, gọi là
các hằng số màu nội tại(intrinsic color constants) nh vbRed, vbBlue Danh
sách các hằng số màu nội tại của Visual Basic đợc liệt kê dới đây:
Trang 16vbWhite 0FFFFFF While
Dùng hàm QBColor để chọn một trong 16 màu Hàm QBColor xuất
phát từ thời Quick Basic(QBasic) của Microsoft QBasic là tiền thân củaVisual Basic Trong QBasic bạn có thể dùng các con số 1, 2, 3… để chỉ địnhcác màu Blue, Green, Cyan… Hàm QBColor giản tiện hoá cách dùng màu, sửdụng không cần bận tâm về cách trộn ba thứ màu căn bản Red, Green, Blue.Bạn chỉ viết code một cách đơn giản nh:
Sau đây là trị số các màu ta có thể dùng với hàm QBColor
Dùng hàm RGB để trộn ba màu Red, Green, Blue Trong bảng liệt kê
các hằng số màu nội tại(intrinsic color constants) ở trên, nếu để ý sẽ thấyvbWhile(0FFFFFF) là tổng số của vbRed(00000FF), vbGreen(000FF00)vbBlue(0FF0000) Một màu đợc biểu diễn bằng sự pha trộn của ba thànhphần màu căn bản, mỗi màu bằng một byte có trị số từ 0 đến 255
Hệ thống số ta dùng hằng ngày là thập phân Trị số 0FF của vbRed làcon số 255 viết dới dạng thập lục phân(Hexadecimal hay Hex và ở đây đợc
đánh dấu bằng 0 trớc con số để phân biệt với số thập phân) Trong hệ thống
số Hex ta đếm từ 0 đến 9 rồi A, B, C, D, E, F rồi qua số hàng thập lục 10, 11,
Trang 17, 19, 1A, 1B, , 1E,1F, 20, 21 Tức là thay vì chỉ dùng 10 ký tự từ 0 đến 9
trong thập phân, ta dùng 16 ký tự từ 0 đến F
Hình dới đây cho thấy màu xanh nhạt đã đợc chọn gồm ba màu thànhphần Blue(0990000 = 153*256*256), Green(0CC00 = 204*256) và Red(0FF = 255):
Để áp dụng hàm RGB, ta sẽ viết một chơng trình Visual Basic 6 Hãykhởi động một chơng trình Visual Basic 6 mới, thả vào trong Form một Labeltên Label1 với Caption Red và một Viertical Scroll có tên VScroll1 Tiếp đó chọn cả hai Label và VScroll rồi copy và paste hai lần để thêm hai cặp ĐổiCaption của hai label mới là Green và Blue Bây giờ ta có một mảng baVertical Scroll cùng tên VScroll1, với chỉ số(index) là 0, 1, 2
Đặt một Picture Box với tên picColor vào bên phải 3 VScrolls Thêm một Label phía dới, đặt tên nó là lblRGBValue, làm sạch caption của label
này
Trang 18Nếu chọn cả ba VScrolls và hiệu chỉnh giá trị của thuộc tính Max trong
cửa sổ Properties thành 255, tức là khi kéo thanh trợt của một VScroll lênxuống ta giới hạn trị số của nó từ Min là 0 đến Max là 255
Công việc chính phải làm là viết mã lệnh để sử lý sự kiện Event Change
của các VScrolls Vì chúng là một mảng nên ta có thể dùng một thủ tục duynhất để điều khiển các sự kiện đến từ cả ba VScrolls Mỗi lúc một trong baVScrolls thay đổi trị số ta sẽ trộn ba màu Red, Green, Blue biểu diễn bởi trị sốcủa ba VScrolls thành màu nền của picture box Đồng thời ta hiển thị trị số của
ba thành phần màu Red, Green, Blue trong label lblRGBValue Nhấn đúp
chuột lên một trong ba VScrolls rồi viết mã lệnh nh sau:
strRGB = strRGB & " Decimal: " &
VScroll1(0).Value & ", " & VScroll1(1).Value & ",
" & VScroll1(2).Value & vbCrLf
strRGB = strRGB & " Hex: 0x" &
Hex(VScroll1(0).Value) & ", 0x" &
Hex(VScroll1(1).Value) & ", 0x" &
Trang 193 ánh xạ màu
Nếu dùng máy tính đổi con số 0FFFFFF ra thập phân ta sẽ đợc
16777215, nếu kể cả số 0 ta sẽ có tổng cộng 16777216 màu Phần trớc ta bàn
về 8 bit( 1 byte) và 16 bit( 2 bytes) color, nhng ở ta xét 3 bytes color Nh thế
có thể màn ảnh không đủ khả năng để cung cấp mọi màu mà hàm RGB tính ra
Visual Basic 6 có phơng thức Print cho ta in thẳng trên Form, Picturebox hay Printer Ba loại điều khiển này đợc coi nh những khung vải mà họa sĩ
vẽ lên Hãy khởi động một chơng trình Visual Basic 6 mới Đặt lên Form mộtPicture box với tên là Picture 1 và một Button tên CmdLines với
Caption In chữ Nhấn đúp chuột lên Button và viết mã theo ở dới:
Private Sub CmdLines_Click()
Dim i As Integer
Dim strLine As String
Trang 20For i = 1 to 10 strLine = "This is line " & CStr(i)
Me.Print strLine Picture 1.Print strLine Next
End Sub
Bạn hãy chạy thử chơng trình rồi nhấp chuột vào nút In chữ Trong
tr-ờng hợp này ta dùng lệnh default FontColor để in 10 hàng Sau mỗi Print,
Me.ForeColor = QBColor(i) Me.Print Str(i);
Next End Sub
Trong Sub CmdFontSizes_Click, ta thay đổi kiểu chữ để cho các con số
đợc in ra lớn lên dần dần và thay đổi màu của các con số bằng cách dùng hàm
QBColor Để in các con số liên tục không xuống hàng ta dùng phơng thức
Print với dấu chấm phẩy (;) Bạn hãy chạy chơng trình lại Nhấp chuột vào nút
In cỡ và màu chữ, kết quả sẽ nhận nh sau:
Trang 21Bây giờ thử thu nhỏ cửa sổ của chơng trình, sau đó khôi phục nó lại kíchthớc cũ Ta sẽ thấy các hàng in trớc đó không còn trong Form hay Picture boxnữa.
Lý do là khi ta dùng lệnh Print để hiển thị trên biểu mẫu, nghĩa là ta
đang tạo ra hình ảnh đồ họa cục bộ mà cha đăng ký cho Visual Basic biết đó làmột thành phần của biểu mẫu, thì những gì hiển thị sẽ không đợc cập nhật khi
vẽ lại Khi ta đổi thuộc tính AutoRedraw thành True, Visual Basic sẽ lu bản
sao của những gì vẽ trên biểu mẫu để nó có thể tự vẽ lại biểu mẫu mà ta khôngcần viết thêm chơng trình
Góc trên trái là trung tâm của màn hình hay Form ở đó tọa độ X và Y
đều bằng 0, ta viết là(0,0) Nếu ta đi lần qua phải theo chiều rộng của màn
hình thì tọa độ X tăng lên Nếu ta đi dọc xuống dới theo chiều cao của mànhình thì tọa độ Y tăng lên
Trang 22Chiều ngang là trục hoành, chiều xuống là trục tung Mặc dù ta nói làmàn hình nhng Visual Basic chỉ cho phép vẽ trên biểu mẫu, hộp hình và điềukhiển ảnh Từng đối tợng có hệ tọa độ riêng, điểm(0,0) trên biểu mẫu khác với
điểm(0,0) trên màn hình Mỗi khi ta vẽ một đối tợng luôn luôn dùng một hệtọa độ liên quan đến góc trái của đối tợng mà ta đang vẽ Đối tợng mà ta vẽ có
hai thuộc tính ScaleHieght và ScaleWidth Chúng là chiều cao và chiều rộng
tối đa của vùng client của đối tợng
Ta có thể dùng đơn vị pixel để nói một đối tợng có tọa độ X và Y mỗi chiều bao nhiêu pixel tính từ trung tâm tọa độ.
Trang 23Tuy nhiên có những phần nh thanh tiêu đề(title bar) và đờng viền(border) của một Form ta không thể vẽ lên đợc Do đó diện tích còn lại của
Form đợc gọi là Client Are Chiều rộng và chiều cao của Client Are đợc gọi là ScaleWidth và ScaleHieght.
Nếu muốn khoảng cách từ một đối tợng đến trung tâm tọa độ, hay kíchthớc của chính đối tợng, không hề thay đổi dù ta có tăng, giảm độ mịn của
màn ảnh hay in hình ra máy in thì ta dùng hệ thống toạ độ theo đơn vị twips
của Form
2 Đơn vị đo
+ Twips: Hệ tọa độ mặc định dùng trên biểu mẫu là twips Mỗi điểm bằng
1/567 cm, vậy nếu vẽ một đoạn thẳng dài 567 đơn vị trên biểu mẫu tức là in ragiấy đợc một đoạn thẳng dài 1 cm Đây là hệ toạ độ độc lập với thiết bị, nghĩa
là kết quả vẽ không bị ảnh hởng khi ta vẽ trên màn hình VGA chuẩn, trên máy
in, hay trên một màn hình có độ phân giải cao mới nhất
+ Hệ pixel: Là hệ tọa độ phổ biến nhất Mỗi đơn vị trên trục X hay Y của mànhình bằng chính xác một điểm, 1 pixel Hệ tọa độ pixel cho ta vẽ ảnh đồ họanhanh hơn trên màn hình Windows biết rằng 1pixel bằng 1 điểm và nh vậykhông cần thiết phải chuyển đổi hệ toạ độ
Ta có thể thay đổi hệ thống tọa độ của một form bằng cách chọn thuộc
tính ScaleMode từ cửa sổ Properties nh sau:
Trang 24Thay đổi trị số ScaleMode không có hiệu lực ngay mà chỉ ảnh hởngnhững gì đợc thiết kế sau đó.
III Các điều khiển đồ họa của Visual Basic
Visual Basic cho ta thao tác đồ họa theo hai cách
Đa các điều khiển đồ họa(graphical controls) vào biểu mẫu Hai trong
số các điều khiển này, hộp hình(picture box) và điều khiển ảnh(image
control), cho phép ta làm việc với các tập tin hình ảnh khác nhau, trong khi các
điều khiển Line và điều khiển hình dạng Shape cho ta vẽ đoạn thẳng và các
hình dạng lên biểu mẫu
Các phơng thức đồ họa(graphical methods) cho phép vẽ trực tiếp lên
biểu mẫu lúc thi hành Các phơng thức gồm Cls, Pset, Point, Line và Circle.
1 Hộp hình và điều khiển ảnh(PictureBox và Image)
Dùng hộp hình(PictureBox) hay điều khiển ảnh(Image) là cách dễ nhất
để hiển thị một hình ảnh trong Form Lúc thiết kế, bạn có thể đánh thẳng tên
của hình ảnh vào thuộc tính Picture trong cửa sổ Properties Form cũng nhận
thuộc tính Picture Ngoài ra còn có thể nhấn chuột lên bên phải chữ thuộc tínhPicture để duyệt qua và chọn một hình ảnh, thờng là Bitmap hay Icon
Sự khác biệt giữa hộp hình và điều khiển ảnh là điều khiển ảnh có thuộc
tính Stretch mà ta có thể thiết lập thành True để kéo dãn hình ảnh ra cho
Trang 25chiếm trọn diện tích của điều khiển ảnh Điều khiển ảnh là một điều khiển đồhọa nhẹ kí, tức là nó không đòi hỏi nhiều bộ nhớ và chạy nhanh hơn hộp hình.Hộp hình là một nơi chứa và có thể chứa các điều khiển khác Ngoài ra, hộphình cũng cho phép ta vẽ lên trên nó giống nh trên Form.
Trong lúc chơng trình đang chạy, ta có thể thay đổi hình ảnh chứa tronghộp hình hay điều khiển ảnh bằng cách dùng hàm LoadPicture Tuy nhiên takhông thể truyền tín hiệu trực tiếp vào thuộc tính của ảnh của hai điều khiển
đồ họa này Lý do là thuộc tính ảnh chỉ là một cách thân thiện do ta chỉ địnhmột hình ảnh trong lúc thiết kế Khi một hình ảnh đã đợc chỉ định rồi, VB6chứa cả hình ảnh ấy vào tệp có cùng tên với tệp của Form nhng với phần mởrộng là frx Tức là nếu tên của Form là Form1 thì hình ảnh của thuộc tínhPicture đợc chứa chung với các hình ảnh khác của Form trong tệp Form1.frx
Vì chơng trình VB6 chứa luôn hình ảnh chung với nó, ta không cầnphải nhắc đến tên của tệp đồ họa khi dùng, tức là không cần đính kèm tên tệp
đồ họa trong tệp thiết lập cho ngời ta cài đặt Dới đây là mã lệnh mẫu để lúcthi hành ta tải một hình ảnh tên sad.bmp nằm trong Subfolder tên images củacủa App.path vào Image control tên Image1
Trang 26bạn chọn hình dạng của nó từ cửa sổ Properties rồi nắm vào một góc của hìnhdạng trên Form và kéo lớn nhỏ tuỳ ý.
Muốn tô màu bên trong một hình dạng, bạn chọn màu từ thuộc tínhFillColor Thuộc tính FillColor cũng giống nh BackColor của các điều khiểnkhác, nhng nó chỉ có hiệu lực khi bạn cho thuộc tính FillStyle một trị số kháchơn là 1-Transparent( trong suốt), thí dụ nh 0- Solid( dày đặc)
3 Điều khiển Line
Tơng tự với các thuộc tính đầy đủ của hình dạng, đối với Line bạn cócác thuộc tính BorderColor, BorderStyle và BorderWidth BorderColor chỉ địnhmàu của chính đờng thẳng, BorderStyle để lựa chọn đờng liên tục hay gạch
chấm và BorderWidth để làm cho đờng dày to hơn Các thuộc tính này cũng ápdụng cho đờng bao quanh của các hình chữ nhật, tròn…
IV Các phơng thức đồ họa (Graphics Methods)
Trong khi các điều khiển đồ họa nh Shape, Line cho ta vẽ hình lúc thiết
kế thì các phơng thức đồ họa cho ta vẽ hình lúc thi hành Ta cũng có thể chấmtừng đốm(pixel) hay sao chép cả một ảnh từ chỗ này đến chỗ khác
1 Phơng thức PaintPicture
Phơng thức PaintPicture cho phép bạn sao chép rất nhanh một khối dữkiện đồ họa, hay một khu vực trong một hình ảnh trên Form, PictureBox hayPrinter đến một nơi khác Ví dụ bạn sao chép một hình từ chỗ này đễn chỗkhác trong Form, hay từ Form/PictureBox ra máy in để sau đó in nó ra
Cú pháp:
[Object.] PaintPicture pic, destX, destY [, destWidth [, destHeight [, srcX [, srcY [, srcWidth [, srcHeight, [Op]]]]]]]
Trong đó:
+Object: là đối tợng mà Paintpicture làm việc Nó có thể là biểu mẫu, hộp
hình hay đối tợng máy in
+ Pic: là hình ảnh sao chép, thờng ta truyền thuộc tính Picture của hộp
hình hay biểu mẫu
+ destX, destY là toạ độ của đối tợng đích mà ta muốn hiển thị DestWidth và DestHeight chỉ ra kích cỡ hình ảnh kết quả.