1. Trang chủ
  2. » Luận Văn - Báo Cáo

TÌM HIỂU LẬP TRÌNH ĐỒ HỌA 3D TRONG WINDOWS PRESENTATION FOUNDATION

108 842 0

Đ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 108
Dung lượng 2,33 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Với những ứng dụng thương mại, chẳng hạn một ứng dụng bán hàng trực tuyến, việc cung cấp một giao diện người dùng mạnh có thể tạo nên sự khác biệt giữa một công ty với các đối thủ cạnh t

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN TP.HCM

KHOA CÔNG NGHỆ THÔNG TIN

KHÓA LUẬN TỐT NGHIỆP

TÌM HIỂU LẬP TRÌNH ĐỒ HỌA 3D TRONG WINDOWS PRESENTATION FOUNDATION

Giảng viên hướng dẫn: ThS.TRẦN MINH THÁI

Sinh viên thực hiện:

TRẦN THỊ DÂN MSSV: 3.07.01.488 Ngành: Công nghệ phần mềm

Khóa 2007 – 2010

Tp Hồ Chí Minh, tháng 07 năm 2010

Trang 2

MỞ ĐẦU

Ngày nay, công nghệ thông tin phát triển mạnh mẽ, trong các ứng dụng hiện đại, giao diện người dùng trực quan chiếm vị trí hết sức quan trọng Việc trình diễn đúng thông tin, theo đúng cách và vào đúng thời điểm có thể đem lại những giá trị kinh tế xã hội đáng kể Với những ứng dụng thương mại, chẳng hạn một ứng dụng bán hàng trực tuyến, việc cung cấp một giao diện người dùng mạnh có thể tạo nên sự khác biệt giữa một công ty với các đối thủ cạnh tranh, góp phần làm tăng tăng doanh số và giá trị thương hiệu của hãng này so với hãng khác

Để có được một giao diện người dùng như vậy, việc tích hợp đồ họa, media, văn bản và các thành phần trực quan khác như một thể thống nhất đóng đóng vai trò mấu chốt và WPF đã làm được điều này

Điểm nổi bật nhất của WPF là hiển thị hình ảnh bằng đồ họa 3D, WPF giúp cho những ai đam mê đồ họa 3D mà không thể tiếp cận nó trên công cụ phức tạp OpenGL hay DirectX WPF tích hợp sẵn DirectX giúp người lập trình phát triển ứng dụng 3D một cách dễ dàng mà khôn phải quan tâm đến sự phức tạp của DirectX

WPF là sản phẩm của Microsoft, một tổ chức nghiên cứu đông đảo và đội ngũ kỹ thuật cao, WPF đang dần lang rộng khắp thế giới và trong tương lai không xa WPF sẽ trở thành một trong những công nghệ phổ biến nhất trong thế giới lập trình ứng dụng Xuất phát từ các lý do trên em nghiên cứu về công nghệ WPF này nhằm cung cấp cho mọi người một sự hiểu biết nhất định về công nghệ sẽ phát triển trong một tương lai không xa Rất mong sự đóng góp ý kiến của quý thầy cô để em có thêm kinh nghiệm cũng như những ý tưởng hay trong công nghệ mà mình nghiên cứu

Trang 3

LỜI CẢM ƠN

Lời đầu tiên em xin bày tỏ lòng biết ơn chân thành nhất đến quý Thầy Cô trong Khoa Công Nghệ Thông Tin, trường Cao Đẳng Công Nghệ Thông Tin Tp.Hô Chí Minh đã tận tình giảng dạy, hướng dẫn, giúp đỡ và tạo điều kiện cho em trong suốt thời gian học tập tại trường

Em xin chân thành cảm ơn thầy Trần Minh Thái – Người đã tận tình hướng dẫn, giúp đỡ

em trong suốt thời gian thực hiện luận văn này

Và con xin chân thành cảm ơn gia đình đã luôn động viên, ủng hộ vật chất lẫn tin thần trong suốt thời gian qua

Em xin cảm ơn sự quan tâm, giúp đỡ và ủng hộ của anh chị, bạn bè trong quá trình thực hiện khóa luận

Cuối cùng, em xin chúc quý Thầy Cô trường Cao đẳng công nghệ thông tin Tp.HCM, Thầy Trần Minh Thái, lời chúc sức khỏe và luôn gặt hái được nhiều thành công trong cuộc sống

Tp.Hồ Chí Minh, tháng 07 năm 2010

Trang 4

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

Ngày … tháng … năm 2010 Ký tên

Trang 5

NHẬN XÉT CỦA GIÁO VIÊN PHẢN B IỆN

Ngày … tháng … năm 2010 Ký tên

Trang 6

MỤC LỤC

MỞ ĐẦU 1

PHẦN I: TỔNG QUAN 4

VỀ WINDOWS PRESENTATION FOUNDATION 4

1 Giới thiệu 4

2 Sự ra đời của Windows Presentation Foundation(WPF) 4

3 Ứng dụng của WPF 6

4 Ưu điểm nổi bật của WPF 8

5 Bộ thư viện của WPF 10

PHẦN II: GIỚI THIỆU VỀ 3D 11

CHƯƠNG 1: GIỚI THIỆU GÓC NHÌN, ÁNH SÁNG VÀ MÔ TẢ KHÔNG GIAN TỌA ĐỘ 14

1 Tổng quan 14

1.1 Tọa độ ba chiều 15

1.2 Điểm trong không gian 16

2 Góc nhìn (Camera) 18

3 Ánh sáng (Light) 24

3.1 DirectionalLight 25

3.2 PointLight 26

3.3 SpotLight 26

3.4 AmbientLight 27

4 Mô tả không gian tọa độ 27

1 Hình ảnh động 32

2 Phép biến đổi hình 36

2.1 Phép dịch chuyển (TranslateTranform3D) 38

2.2 Phép biến đổi kích thước (ScaleTransform3D) 42

Trang 7

2.3 Phép xoay (RotateTransform3D) 45

2.4 Phép biến đổi bằng ma trận (MatrixTransform3) 57

CHƯƠNG 3: TÔ MÀU CHO HÌNH 3D 64

1 Sử dụng cọ vẽ Gradient 64

2 Sử dụng cọ vẽ Tile 70

2.1 ImageBrush 71

2.2 DrawingBrush 77

2.3 VisualBrush 85

CHƯƠNG 4: ỨNG DỤNG 92

1 Giới thiệu 92

2 Phân tích 92

3 Giao diện ứng dụng 93

4 Các dòng sự kiện chính 97

KẾT LUẬN 98

TÀI LIỆU THAM KHẢO 99

Trang 8

DANH MỤC CÁC HÌNH, BẢNG BIỂU VÀ SƠ ĐỒ

Hình 1: Hình hộp có sử dụng Light .13

Hình 2: Hình hộp không sử dụng Light .13

Hình 1-1: Hình tròn .14

Hình 1-2: Hình quả bóng .14

Hình 1.1-1: Hệ trục tọa độ .15

Hình 2-1: Camera với góc nhìn 50mm 19

Hình 2-2: Camera với góc nhìn 100mm 19

Hình 2-3: Camera với góc nhìn 25mm 20

Hình 2-4: Camera với góc nhìn 45 độ .20

Hình 2-5: Hình hộp sử dụng PerspectiveCamera 22

Hình 2-6:Cách xác định OrthographicAerialView .23

Hình 2-7: Hình hộp sử dụng OrthographicCamera .24

Hình 3.1-1: Hình minh họa sử dụng DirectionalLight .25

Hình 3.2-1: Hình minh họa sử dụng PoinLight 26

Hình 3.3-1: Hình minh họa sử dụng SpotLight 27

Hình 3.4-1: Hình minh họa sử dụng AmbientLight .27

Hình 4-1: Hình ảnh tam giác trên mặt phẳng .28

Hình 4-2: Cách xác định các đỉnh dựa trên hệ trục tọa độ Oxyz .29

Hình 4-3: Mặt trước của hình vuôngHình 4-4: Mặt sau của hình vuông 30

Bảng 3: Các thuộc tính biến đổi .37

Hình 2.1-1: Cách tham chiếu trên hệ trục tọa độ để vẽ một vật thể .38

Hình 2.1-2: Hình ảnh được vẽ bằng cách nói các đoạn thẳng 39

Hình 2.3.1-1: Vật thể được xoay với một góc 30 độ .47

Hình 2.3.1-2: Vật thể được xoay với một góc -30 độ 47

Hình 2.3.2-1: Các điểm x, y trên hệ trục tọa độ Oxy .52

Hình 2.3.2-2: Góc và đường thẳng của điểm x,y trên hệ trục Oxy 52

Trang 9

Hình 2.3.2-3: Cách khác để xác định 2 điểm x,y .53

Hình 2.3.2-4: Số phức trên hệ trục tọ a độ số phức .53

Hình 2.3.2-5: Số phức với góc θ .54

Hình 1-1: Tọa độ dùng xác định cọ vẽ .66

Hình 1-2: Chuyển đổi cọ vẽ tam giác 2 chiều sang tam giác 3 chiều .67

Hình 1-3: Vật thể sử dụng cọ vẽ Gradient .70

Hình 2.1-1: Cọ vẽ sử dụng ImageBrush 74

Hình 2.1-2: Hình ảnh sau khi được thay đổi giá trị TextureCoordinates 75

Hình 2.1-3: Hình ảnh khi sử dụng ViewboxUnit .76

Hình 2.1-4: Hình ảnh sau khi có sử dung thêm thuộc tính TileMode .77

Hình 2.1-5: Hình ảnh khi sử dụng thuộc tính TileMode với kiểu FlipXY .77

Hình 2.2-1: Sử dụng DrawingBrush tô theo kiểu hình ellipse lấy từ resource .83

Hình 2.2-2: Sử dụng DrawingBrush tô theo kiểu hình chữ nhật lấy từ resource 84

Hình 2.2-3: Sử dụng DrawingBrush tô theo kiểu sọc chéo lấy từ windowns .84

Hình 2.3-1: Khối lập phương được tô bằng những khối lập phương nhỏ .91

Hình 3: Giao diện chính .93

Bảng 1: Thành phần giao diện theo yêu c ầu và những công nghệ chuyên biệt cần thiết để tạo chúng 10

Bảng 2: Các thuộc tính c ủa Light 25

Bảng 3: Các thuộc tính biến đổi 37

Bảng 4: Bảng mô tả các thành phần của giao diện 96

Sơ đồ 1: Cấu trúc đơn giản để tạo ra hình hộp 3D 11

Sơ đồ 2: Lớp con trong lớp Media 17

Đồ họa ba chiều trong Windows Presentation Foundation WPF 3D

Bảng: Danh sách các từ viết tắt.

Trang 10

MỞ ĐẦU

 Công nghệ Windows Presentation Foundation

Khi khoảng cách công nghệ giữa các nhà sản xuất không còn quá xa, khi tính năng giữa các phần mềm không còn nhiều khác biệt thì là lúc giao diện nổi lên như là một trong những giá trị cạnh tranh cho mỗi sản phẩm phần mềm Dù đó là web hay là phần mềm ứng dụng thì một giao diện hấp dẫn, thân thiện luôn là điểm nhấn cho mỗi sản phẩm đó Windows Presentation Foundation (WPF) là một trong những công nghệ mới với những ưu điểm nổi bật cho việc thiết kế

và lập trình giao diện

Với công nghệ từ trước năm 2006, thì việc biểu diễn hiệu quả tất cả các tính năng hoạt động như một ứng dụng Window riêng biệt chạy trên desktop, đồng thời có thể truy cập thông tin thông qua trình duyệt đòi hỏi xây dựng hai phiên bản độc lập sử dụng hai công nghệ khác nhau Và việc

hợp nhất giữa người thiết kế và người lập trình cũng gặp không ít những khó khăn Windows

Presentation Foundation ra đời không những giải quyết được các vấn đề trên mà còn có những ưu điểm về đồ họa, âm thanh, video… Với việc sử dụng ngôn ngữ XAML(Extention MakeUp

Language) giúp cho việc quản lý các tập tin dễ dàng hơn

Đặc biệt, điểm nổi bật nhất của WPF là đồ họa ba chiều Khó khăn nhất cho những lập trình viên khi lập trình với DirectX đó chính là card đồ họa mà nhà cung cấp hỗ trợ DirectX Và giờ đây WPF có khả năng thực thi những công việc dựa trên những tính toán phần mềm thay vì những đặc điểm mà nhà cung cấp phần cứng tạo ra WPF sẽ xác đính sự hỗ trợ của phần cứng với những hiệu ứng đồ họa được tạo ra Và bạn không cần phải bận tâm về điều đó

 Lịch sử ra đời và tương lai của WPF

 Lịch sử ra đời

WPF là một trong những công nghệ mới nhất trong NET 2008 (Framework 3.0 hay 3.5) của Microsoft,là hệ thống API mới hỗ trợ việc xây dựng giao diện đồ hoạ trên nền Windows WPF được giới thiệu lần đầu tiên cùng với NET 3.0 vào ngày 21 tháng 11 năm 2006 Và phát hình phiên bản chính thức đầu tiên vào ngày 30 tháng 4 năm 2007

Trang 11

Tiếp sau đó là WPF 2.0, WPF 3.0 được phát hành vào ngày 22 tháng 7 năm 2009, và vừa mới đây là WPF 4.0(với gói Framework 4.0) được phát hành vào ngày 7 tháng 6 năm 2010

 Tương lai của WPF

Việc Microsoft chính thức ra mắt bộ công cụ Visual Studio 2010 và nền tảng phát triển NET 4.0 và WPF 4.0 Sự kiện này đã và đang mở ra hướng mới trong ngành công nghiệp phần mềm, với sự linh hoạt và khả năng xây dựng ứng dụng một cách nhanh chóng mà vẫn đáp ứng được những yêu cầu ngày các khắt khe của người dùng

 Lý do chọn đề tài

WPF được xem là thế hệ kế tiếp của Windowns, tăng cường khả năng lập trình giao diện của lập trình viên bằng cách cung cấp API cho phép tận dụng những lợi thế về đa phương tiện hiện đại, các công nghệ sẵn có khác nhau và lợi thế của card đồ họa Đặc biệt sử dụng DirectX làm công nghệ cơ sở để xây dựng nên những hiệu ứng - DirectX là công nghệ đồ họa của Microsoft, tận dụng được khả năng của phần cứng để tăng tốc chương trình

Là sản phẩm của Microsoft ( tìm lực tài chính mạnh mẽ, với 95% máy tính cá nhân sử dụng hệ điều hành windows, đội ngũ kỹ thuật hàng đầu và sự thành công của các sản phẩm trong quá khứ) nên đủ để bạn tin vào khả năng WPF sẽ trở thành một trong những công nghệ phổ biến nhất trong thế giới lập trình ứng dụng

Trên cơ sở đó em quyết định tìm hiểu công nghệ WPF và đi sâu vào nghiên cứu đồ họa 3D với việc phát triển một ứng dụng mà sử dụng hầu hết các ứng dụng về đồ họa 3 chiều mà WPF đã hỗ trợ

để cung cấp cho mọi người một sự hiểu biết nhất định về đồ họa 3D với một công nghệ WPF mà được dự đoán là sẽ phát triển trong một tương lai không xa

Trang 13

cả Windows Server 2003 Nó cung cấp kiểu lập trình cho việc xây dựng ứng dụng và hổ trợ

1 cách trong suốt giữa giao diện người dùng và mô hình ứng dụng doanh nghiệp Một ứng dụng WPF có thể được triển khai trên desktop hoặc trên 1 thiết bị thông qua trình duyệt web Hơn thế nữa, nó còn hổ trợ các nhiều control, thiết kế và phát triển giao diện thân thiện, trực quan bên ngoài của chương trình windows Nó hướng đến sự hợp nhất của 1 ứng dụng dịch vụ: giao diện người dùng, đồ họa 2D và 3D, các văn bản cố định và động, các mô hình đồ họa nâng cao, đồ họa vector, hình ảnh động, Data Binding, Audio và Video Mặc dù Windows Form sẽ tiếp tục được sử dụng rộng rãi, nhưng các công ty phát triển ứng dụng WPF như là các ứng dụng doanh nghiệp (line-of-bussiness)

Microsoft Sliverlight là một nền tảng web của WPF hoặt động như một dạng Flash và các ứng dụng mobiles với các mô hình chương trình tương tự như là 1 ứng dụng NET Tính năng 3D không được hổ trợ, tuy nhiên XPS và cơ sở đồ họa vector đã được tích hợp

2 Sự ra đời của Windows Presentation Foundation(WPF)

Windows Presentation Foundation được phát hành chính thức vào tháng 11 năm 2006

Vì sao WPF lại ra đời?

Đi đến tương lai bằng cái nhìn từ quá khứ, năm 2001, Microsoft cho ra đời một tập hợp các công nghệ nền tảng, được gọi với tên chung là NET Hầu hết các công nghệ này đều đưa ra các

mô hình lập trình mới, hoàn toàn chưa từng xuất hiện trước đó Lấy ví dụ:

Trang 14

1 ASP.NET Web Forms đưa mô hình lập trình Windows truyền thống lên thế giới Web, biến Web từ môi trường state-less (client và server tách biệt hoàn toàn) thành một môi trường thống nhất: state-full Web

2 ADO.NET định nghĩa ra các class tổng quát như Connection, Command, DataSet để các developer thừa kế từ chúng, mở rộng khả năng tiếp cận với nhiều loại RDMS (Relational Database Management System) khác nhau như SQL Server, Access, Oracle, MySql…, đồng thời nâng cao khả năng debug khi thao tác với database

3 Common Language Runtime làm thư viện nền tảng giúp lập trình viên sử dụng nhiều ngôn ngữ lập trình khác nhau có thể cùng làm việc với nhau trong một project Có thể kể ra C#, J#, F#, VB.NET, Delphi.NET, C++.NET, IronRuby, IronPython…

Tuy nhiên công nghệ mà những nhà phát triển trung thành nhất của Microsoft mong muốn nhìn thấy bước đột phá – Windows Forms – lại chẳng có gì thay đổi Đã hơn một thập kỷ, kể từ khi Windows 95 ra đời, người ta vẫn phải tạo giao diện cho ứng dụng desktop bằng cách gọi các hàm Windows API Windows Forms tuy khoác bên ngoài giao diện kéo thả nhưng thực chất bên dưới nó vẫn bị phụ thuộc vào các lời gọi API, nên nó không có gì là đặc sắc

Trải qua một thời gian tồn tại dài như thế, Windows Forms đã được chuẩn hóa và mang trong mình đầy đủ các công cụ cho phép xây dựng các chương trình dễ dàng Tuy nhiên, do sử dụng Windows API, nên giao diện của các control chuẩn như button, checkbox, textbox bị phụ thuộc vào phiên bản Windows mà NET Framework đang chạy, ví dụ 3D button trong Vista Aero khi đem sang Windows 2000 thì lại biến thành flat button Nhưng đó chỉ là vấn đề nhỏ, rắc rối lớn nhất của Windows Forms chính là giao diện của các control chuẩn này lại gần như không thể được can thiệp và thay đổi theo tư duy sáng tạo của nhà thiết kế, ngoại trừ trường hợp có ai đó chịu khó đến nỗi ngồi viết cả tấn code bằng mô hình lập trình cấp thấp GDI/GDI+ (Graphical Device Interface)

Trong các ứng dụng hiện đại, giao diện người dùng trực quan chiếm vị trí hết sức quan trọng Việc trình diễn đúng thông tin, theo đúng cách và vào đúng thời điểm có thể đem lại những giá trị kinh tế xã hội đáng kể Với những ứng dụng thương mại, chẳng hạn một ứng dụng bán hàng trực tuyến, việc cung cấp một giao diện người dùng mạnh có thể tạo nên sự khác biệt giữa một công ty với các đối thủ cạnh tranh, góp phần làm tăng doanh số và giá trị thương hiệu của hãng này so với

Trang 15

hãng khác Để có được một giao diện người dùng như vậy, việc tích hợp đồ họa, media, văn bản

và các thành phần trực quan khác như một thể thống nhất đóng đóng vai trò mấu chốt

WPF ra đời chính là để xây dựng một nền tảng chung giải quyết những thách thức đã nêu trên

3 Ứng dụng của WPF

WPF được xây dựng nhằm vào ba mục tiêu cơ bản:

1) Cung cấp một nền tảng thống nhất để xây dựng giao diện người dùng

2) Cho phép người lập trình và người thiết kế giao diện làm việc cùng nhau một cách

1 Sử dụng đối tượng Transformation để xoay tròn, kéo dãn, thu nhỏ hay xoay nghiêng bất cứ thứ gì thuộc về giao diện

2 Tạo hình ảnh động (Animation) để các control trở lên lung linh chuyển động ngay trước mắt người sử dụng

3 Xây dựng Form có các hình thù khác lạ, hỗ trợ control có màu trong suốt để tạo vẻ mới mẻ

và chuyên nghiệp

Trang 16

WPF sử dụng DirectX làm công nghệ cơ sở để xây dựng nên những hiệu ứng thú vị như trên DirectX là công nghệ đồ họa của Microsoft, tận dụng được khả năng của phần cứng để tăng tốc chương trình Lấy ví dụ, một vấn đề đơn giản là vẽ một đoạn thẳng từ điểm (0, 0) đến điểm (10, 10)

· Trong GDI/GDI+ của Windows Forms, NET sẽ tạo ra một danh sách các điểm nằm giữa (0, 0) và (10, 10), tức là các điểm (1, 1), (2, 2), … , (9, 9) rồi vẽ ra từng điểm này Do vẽ nhiều điểm

kề nhau nên cuối cùng các điểm này tạo ra cảm giác là vẽ được một đoạn thẳng Nói một cách khác, phương pháp của Windows Forms là sử dụng phần mềm để vẽ ra một tập hợp điểm

· Đối với DirectX, nó gọi trực tiếp hàm DrawLine của card đồ họa, và card đồ họa sẽ vẽ ngay

ra một đường thẳng không cần phải tính toán đến các điểm trung gian Đây là phương pháp sử dụng phần cứng để vẽ ra một ảnh Vector Nhờ DirectX mà tốc độ render được cải thiện đáng kể vì phần cứng thì chạy nhanh hơn rất nhiều so với phần mềm cùng một chức năng

Với WPF, nhà phát triển không còn phải đau đầu với bài toán xử lí tốc độ, nhất là đối với các phần mềm game hiện đại ngày nay, đòi hỏi đồ họa 3D sinh động mà GDI/GDI+ khó lòng có thể đáp ứng được Với WPF, nhà phát triển có thể tự do sáng tạo về giao diện, tạo nên các hiệu ứng bắt mắt mà trước đây không thể nào thực hiện được với Windows Forms

Mặc dù người ta biết đến WPF với khả năng đồ họa tuyệt vời, với hình ảnh động, với các tính năng 3D độc đáo, nhưng WPF vẫn có thể được dùng để xây dựng nên các ứng dụng Windows truyền thống, sử dụng các control chuẩn như trong Windows Forms Sự thật là khi chọn lựa kiểu giao diện truyền thống này, thì các thao tác đối với control không khác bao nhiêu so với Windows Forms, và nhà phát triển có thể dễ dàng làm quen ngay với môi trường mới mà không mất quá nhiều công sức

Có một vài cải tiến trong WPF không thuộc về phần giao diện, nhưng chúng đáng được lưu ý khi nhà phát triển muốn phát triển một ứng dụng chuyên nghiệp và bài bản hơn Có thể kể ra đó là:

· Mô hình Data-Binding mới được cải thiện nhiều so với Windows Forms

· Các class dùng để phục vụ cho việc in tài liệu và sắp xếp trình tự in ấn

· Hệ thống tài liệu có thể hiển thị một số lượng rất lớn các văn bản được định dạng như Word, Excel, PDF…

Trang 17

· Xây dựng ứng dụng page-based như website, có thể chạy trên Internet Explorer và môi trường World Wide Web, không bị các cảnh báo về bảo mật và không cần thực hiện quá trình cài đặt (Portable Applications)

4 Ƣu điểm nổi bật của WPF

Có một số các tính năng mới trong WPF mà bạn có thể tận dụng khi bạn phát triển các ứng dụng WPF của bạn Trước tiên, để sử dụng sức mạnh phần cứng đồ họa WPF mới thì thực hiện một mô hình đồ họa véc tơ, dựa vào các Direct3D Điều này cho phép công nghệ đồ họa tùy ý thu nhỏ độ phân giải màn hình mà không mất đi chất lượng hình ảnh, cũng không thể sửa kích thước

đồ họa

Ngoài ra, để hình dung dễ dàng giao diện người dùng (UI), WPF giới thiệu ngôn ngữ mới dựa trên XML, được gọi là XAML XAML cho phép các ứng dụng tự động phân tích c ú pháp và thao tác giao diện người dùng ở một trong hai yếu tố thời gian thiết kế hoặc thời gian khởi động Nó dùng mô hình code-behind, lập trình tương tự như ASP.NET, cho phép người thiết kế và người phát triển làm việc song song và liền mạch công việc của mình Tất nhiên, WPF cũng cung cấp cho bạn những lựa chọn để không sử dụng các tập tin XAML khi bạn phát triển các ứng dụng WPF, có nghĩa là bạn vẫn có thể phát triển các ứng dụng của bạn hoàn toàn bằng code như C#, C/C++, hoặc Visual Basic

Một trong những điều gây đau đầu cho những lập trình viên khi lập trình với DirectX đó là các đặc điểm mà nhà sản xuất card đồ họa cung cấp hỗ trợ DirectX Tuy vậy với WPF điều đó không đáng lo ngại, bởi nó có khả năng thực thi những công việc dựa trên những tính to án phần mềm thay vì những đặc điểm mà nhà cung cấp phần cứng tạo ra WPF đủ thông minh để xác đính sự hỗ trợ của phần cứng với những hiệu ứng đồ họa được tạo ra Và bạn không cần phải bận tâm về điều

đó Tất nhiên với những hiệu ứng animation phức tạp, nhưng được thực thi trên một nền tảng phần cứng đã cũ thì cũng sẽ có những ảnh hưởng nhất định đối với quá trình thực thi

Những đặc điểm đó đủ tạo ra những cải tiến hấp dẫn cho WPF, nhưng nó còn cung cấp những thay đổi mạnh mẽ khác cho công nghệ lập trình giao diện Và dưới đây sẽ là một loạt những hỗ trợ mà công nghệ WPF mang lại cho người lập trình viên:

 Mô hình giao diện Web (Web-like layout model): không chỉ cho phép xây dựng những giao diện với những đối tượng cố định , WPF còn cung cấp những layout linh hoạt

Trang 18

để hiện thị, cho phép xây dựng những giao diện động theo nội dung, với những ngôn ngữ khác nhau

 Đồ họa phong phú: Thay vì làm việc với những điểm ảnh, bạn được có thể làm việc trực tiếp với những đối tượng hình học cơ bản: hình chữ nhật, hình eclipse Bạn cũng có những đặc điểm mới như điều khiển độ trong, độ mờ, cùng các hiệu ứng 3D

 Hiển thị văn bản linh hoạt: WPF có khả năng cung cấp những khả năng để hiện thị văn bản một cách phong phú ở bất cứ đâu Bạn có thể kết hợp văn bản với các đối tượng khác Hay có thể sử dụng các đặc điểm mới để hiện thị một lượng lớn văn bản một cách dễ đọc nhất

 Các hiệu ứng Animation: Bạn có thể sử dụng bộ tính thời gian timer để vẽ lại hình Nhưng trong WPF với đặc điểm đã được tích hợp thành một phần của Framework Từ đó bạn có thể định nghĩa những hiệu ứng chuyện động cho các đối tượng đồ họa khác nhau

 Hỗ trợ video, audio file: Không giống như các công nghệ trước đó như Winform có

sự hạn chế trong việc hỗ trợ để chạy các file Audio và Video WPF hỗ trợ chạy tất các file

mà Window Meida Player có thể đọc được, và cho phép bạn có thể chạy đồng thời một hoặc nhiều file Đặc biệt WPF cung cấp các tool cho phép bạn tích hợp các các nội dung video vào giao diện, và cả các hiệu ứng 3D (ví dụ hiện thị video trên các mặt của hình hộp 3D)

Còn rất nhiều đặc điểm mạnh mẽ khác mà WPF cung cấp để hỗ trợ quá trình thiết kế và lập trình như : Stypes and Template, Command, Pages Base Application….WPF được coi như là công nghệ để tạo ra giao diện cho những ứng dụng Window của thế hệ tiếp theo.Độ phân giải độc lập: cũng là một trong những đặc điểm khác tạo ra sự khác biệt cho công nghệ WPF Nếu như các giao diện được thiết kế bằng các công nghệ trước như Winform vốn dựa trên GDI/GDI+ sẽ gặp nhiều phiền phức khi làm việc với những màn hình có độ phân giải khác nhau Hình vẽ sẽ lớn hơn với các màn hình có độ phân giải thập, hay nhỏ đi với khi độ phân giải màn hình cao Nhưng trong WPF điều đó không còn là vấn đề quan ngại với những người thiết kế Bởi WPF cho phép hiện thị các đối tượng với đúng kích cỡ khi thiết kế dưới các độ phân giải khác nhau của màn hình

Trang 19

Hiển thị ảnh Vector thay vì ảnh BitMap mang lại cho công nghệ WPF khả năng hiện thị linh hoạt với nhiều kích thước khác nhau mà không lo làm “vỡ” hình ảnh những đối tượng đồ họa.Sự độc lập giữa thiết kế và lập trình là một trong những bước tiến mà WPF mang lại Các đối tượng

đồ họa trong WPF được thể hiện thông qua một loại mã đơn giản là XAML (Extention MakeUp Language) Đó là một loại mã đơn giản gần giống như HTML dùng để t ạo và tinh chỉnh các đối tượng đồ họa Đó là một bước tiến lớn trong quá trình thiết kế và lập trình giao diện

XAML cho phép người thiết kế có thể tạo ra các giao diện độc lập trên các công cụ thiết kế chuyên biệt như Microsoft Expression Interactive Designer Sau đó các giao diện đó được xuất ra dưới dạng mã XAML và người lập trình chỉ cần import vào các tool như Visual Studio để tạo ra giao diện cho chương trình của mình Điều nãy rõ ràng làm giảm đi rất nhiều công sức và độ phức tạp trong quá trình thiết kế phần mềm Nó cho phép hai người với vai trò khác nhau có thể tiến hành song song công việc của mình

5 Bộ thƣ viện của WPF

Giờ đây WPF hỗ trợ nhiều tính năng lập trình giao diện trong cùng một công nghệ đơn nhất Điều này giúp cho quá trình tạo giao diện người dùng trở nên dễ dàng hơn đáng kể

Windows Forms

PDF Windows

Forms/

GDI+

Windows Media Player

Trang 20

Phần II: GIỚI THIỆU VỀ 3D

Microsoft Windows Vista là phiên bản đầu tiên của Windows có tích hợp sẵn đồ họa 3D, và giờ đây 3D được tích hợp với Microsoft Windows Presentation Foudation(WPF), giao diện lập trình ứng dụng client(API) được giới thiệu trong năm 2006 như một phần của Microsoft NET Framework 3.0 mặc dù NET 3.0 được tích hợp trong Windows Vista, bạn cũng có thể cài đặt nó dưới Microsoft Windows XP với Service Pack 2 hoặc Windows Server 2003 với Service Pack 1

Kể từ lần đầu xuất hiện(năm 1995), DirectX đã nhanh chóng phát triển cùng với sự phát triển mạnh mẽ của game đồ họa Giờ DirectX đã được tích hợp vào một phần của Windows Tuy vậy lập trình với DirectX không đơn giản và thực sự chúng khá phức tạp Chính vì vậy nó chưa bao giờ được sử dụng để tạo ra những giao diện đồ họa cho các phần mềm ứng dụng

WPF ra đời và thay đổi tất cả điều đó WPF không dựa trên nền tảng truyền thống là GDI/GDI+ Điểm đặc biệt chính là DirectX làm nền tảng cho bất cứ giao diện nào được tạo ra Dù

đó là hình ảnh 3D phức tạp hay đơn giản cho là một button, hiển thị text thì nó cũng thông qua DirectX Điều đó đồng nghĩa với việc những ứng dụng thông thường cũng có thể c ó những hiệu ứng đồ họa phức tạp, ví dụ như những hiệu ứng trong suốt, bóng đổ Và cũng nhờ thế mà có thể tăng tốc xử lý đồ họa thông qua sự tương tác giữa DirectX và c ard đồ họa

Cấu trúc đơn giản để tạo một hình ảnh 3D

Sơ đồ 1: Cấu trúc đơn giản để tạo ra hình hộp 3D

Để tạo ra được hình hộp 3D thì điều đầu tiên bạn phải làm là định nghĩa một đối tượng, một vật thể trong không gian thông qua một đối tượng đó là MeshGeometry3D, đối tượng này bao gồm Positions chứa các đỉnh của hình và TriangleIndices mô tả cách kết nối những đỉnh

để tạo thành một vật thể mà ta muốn định nghĩa

Hình Hộp 3D

Camera Light

MeshGeometry3D Material

Trang 21

Thứ hai là chúng ta sẽ định nghĩa màu cho đối tượng với Material hoặc có thể dùng thêm đối tượng BackMaterial để tô màu ở mặt sau của vật thể

Và một yếu tố mà tạo nên bề mặt nổi cho vật thể mà khi nhìn vào chúng ta có cảm giác như một hình ảnh 3D đó là Light, nếu như không có đối tượng này thì bạn không thể thấy được hình ảnh 3D mà thay vào đó là một hình phẳng

Nhưng một yếu tố không kém phần quan trọng đó là Camera Camera dùng để khai báo góc

độ nhìn cho vật thể, nếu không có đối tượng này thì bạn không thể nhìn thấy được vật thể

Trang 22

(1,0,1) (0,0,1)

(0,0,0)

Trang 23

Chương 1: GIỚI THIỆU GÓC NHÌN, ÁNH SÁNG VÀ MÔ TẢ KHÔNG

GIAN TỌA ĐỘ

1 Tổng quan

Kể từ khi các nghệ sĩ của thời đại Upper Paleolithic bắt đầu tô điểm những bức tường hang động với hình ảnh của thợ săn và con mồi của họ, người này đã cố gắng để mô tả ba chiều, thực tế các đối tượng trên bề mặt hai chiều Trên báo chí, tạp chí, sách, bảo tàng, album ảnh, rạp chiếu phim, thư viện video, và máy tính đã được đầy đủ các kết quả về hình ảnh ba chiều

Nhận thức của con người như vậy là hài hòa với không gian ba chiều của thế giới thực mà chúng ta dễ dàng thuyết phục để chấp nhận, ngay c ả bản vẽ đơn giản như là đ ại diện cho các đối tượng thực tế

Ví dụ chỉ là một vòng tròn hình học:

Hình 1-1: Hình tròn

Nhưng thêm một bóng nhỏ, và nó sẽ trở thành một quả bóng:

Hình 1-2: Hình quả bóng

Trang 24

Một vòng tròn đơn giản chỉ là màu với một RadialGradientBrush.Các thay đổi từ màu đỏ trên các cạnh đến trắng tại điểm quy định với GradientOrigin

Các lớp thư viện đồ họa ba chiều trong Windows Presentation Foundation (viết tắt là WPF 3D) thực hiện tất cả các toán học cần thiết để thực hiện một hình ảnh ba chiều lên một bề mặt hai chiều như một màn hình máy tính hoặc máy in Người lập trình có thể chọ n kiểu chiếu mà mình muố n bằng cách lựa chọ n một trong các lớp rút ra từ các lớp Camera được định nghĩa trong NET với namespace System.Windows.Media.Media3D Hai lớp được đặt tên

OrthographicCamera và PerspectiveCamera thực hiện các phép biến đổi cần thiết cho các chuyển đổi và chiếu theo tia nhìn WPF 3D cũng bao gồm một lớp MatrixCamera cho các mục đích cao cấp mà có thể thực hiện tùy ý các đối tượng ba chiều trên các bề mặt hai chiều

Để xác định được vị trí hay góc độ nhìn thì ta dựa vào hệ trục tọa độ và các điểm thông qua hệ trục tọa độ

1.1 Tọa độ ba chiều

Hình 1.1-1: Hệ trục tọa độ.

Ba trục gặp nhau tại một gốc Tăng giá trị của X là bên phải; giá trị gia tăng của Y là trở lên; giá trị gia tăng của Z đi ra khỏi màn hình máy tính và hướng tới người xem Điều này được biết đến như một bàn tay bên phải phối hợp hệ thống: Nếu bạn điểm các ngón trỏ của tay phải của bạn

Trang 25

theo hướng tăng giá trị X và điểm ngón tay giữa để tăng giá trị Y, và điểm ngón tay cái để tăng giá trị Z

Biểu đồ cho thấy cách phối hợp hệ thống là tùy vào từng hình, bởi vì nó thật sự phụ thuộc vào cách bạn xem nó Bạn có thể xem nó từ tất cả các hướng khác nhau Thật vậy, nếu tôi định hướng

sơ đồ để trục Z chỉ chính xác đối với người xem, các trục sẽ được nhìn thấy chỉ như là một điểm Cũng như hai trục của hai chiều Cartesian hệ thống phân chia thành bốn mặt phẳng, ba trục trong không gian ba chiều phân chia thành tám mặt phẳng Tám mặt phẳng không có tên tiêu chuẩn, nhưng ba trục được gọi là mặt phẳng YZ, mặt phẳng XZ, và mặt phẳng XY:

 Mặt phẳng YZ chia không gian vào bên phải(right) (X > 0) và trái(left) (X < 0)

 Mặt phẳng XZ phân chia không gian vào đ ầu trang(top), hay trên(upper) (Y > 0),

và dưới cùng(bottom), hoặc thấp hơn(lower) (Y < 0)

 Mặt phẳng XY phân chia không gian vào phía trước(front) (Z > 0) và ở phía

sau(back), hoặc phía sau(rear) (Z < 0)

Mỗi mặt phẳng trong số tám mặt phẳng sau đó có thể được mô tả với một cụm từ như "phía dưới bên trái phía trước" Đó là cụm từ đặc biệt dùng để chỉ tất cả các điểm trong đó X là số âm,

Y là số âm, và Z là số dương

1.2 Điểm trong không gian

Một vị trí chính xác trong không gian ba chiều được đại diện bởi các điểm (X, Y, Z) WPF 3D xác định cấu trúc của Point3D chứa các điểm (X, Y, Z) có thể đọc hoặc tạo các điểm X, Y, và Z của loại Double, và một constructor tạo ra một đối tượng Point3D từ X, Y, Z và các thành phần của nó

Dưới đây là một số cách để tạo và khởi tạo một đối tượng Point3D bằng C#:

Point3D point = new Point3D (2.33, 1.5, -2);

Trang 26

Trong đó: X = 2.33, Y = 1.5 và Z = -2

Trong XAML, giá trị của đối tượng Point3D được phân biệt bởi khoảng trắng hoặc dấu phẩy:

Thông thường, một ứng dụng WPF 3D phải chỉ định một tâp hợp các điểm cho đối tượng

Point3D, và được sử dụng lớp Point3Dcollection, lớp này sẽ Add các điểm của đối tượng

Point3D

Ví dụ:

Point3DCollection ptcoll = new Point3DCollection ();

ptcoll.Add (New Point3D (2.55, 1.5, -2));

ptcoll.Add (New Point3D (0, 2.5, 7));

ptcoll.Add (New Point3D (1, 1, -3));

Bên cạnh Point3DCollection, còn có Int32Collection tương tự (được định nghĩa trong không gian tên System.Windows.Media) Cả hai Point3DCollection và

Int32Collection bắt nguồn từ một lớp có tên là Freezable

Sơ đồ 2: Lớp con trong lớp Media.

Trong namespase System.Windows.Media.Media3D cũng bao gồm một cấu trúc có tên là

Size3D mà chứa kích thước không gian ba chiều với các thuộc tính có tên là X, Y, và Z Một đối tượng Size3D với X, Y, và Z tất đều bằng 0 được coi là rỗng

Cấu trúc Rect3D định nghĩa một hình chữ nhật trong khôsng gian 3D là một sự kết hợp của một đối tượng vị trí (Point3D) và một cấu trúc kích thước (Size3D) Ba thành phần của thuộc kích thước phải không âm, vị trí luôn luôn ở góc lower-left-rear của hình chữ nhật Rect3D cũng

System.Windows.Media

Point3DCollection

FreezableSystem.Windows.Media

Trang 27

định nghĩa các thuộc tính X, Y, và Z, trong đó các thuộc tính X, Y, Z giống thuộc tính của đối tượng Point3D

<PerspectiveCamera Position="-2 0 5" … />

Bạn cũng c ần phải chỉ định một hướng, được gọi là LookDirection nó được gọi là một hướng vì nó là một đối tượng Vector3D Thông thường bạn sẽ đặt hướng này trong nửa sau của không gian 3D Các vector đơn giản có thể sử dụng là một điểm trong có hướng song song với trục Z âm, là vector (0, 0, -1):

<PerspectiveCamera Position = "-2 0 5"

LookDirection = "0 0 -1" />

Thay thế (0, 0, -2), (0, 0, -3),… vẫn sẽ làm việc giống như vậy Do đó (0, 0, -1) là giá trị mặc định của LookDirection và giá trị mặc định của Position là điểm (0, 0, 0

Bạn có thể sử dụng PerspectiveCamera với cách chỉ xác định Position và

LookDirection, tuy nhiên ở đây chúng ta sẽ sử dụng các giá trị mặc định của hai thuộc tính khác Các thuộc tính UpDirection là một thuộc tính Vector3D cho biết làm thế nào máy ảnh được định hướng Mặc định vector này là (0, 1, 0 và chỉ ra rằng máy ảnh này được tổ chức để hướng chỉ theo hướng Y dương

Thuộc tính tiếp theo của PerspectiveCamera là FieldOfView, đó là một góc mà bạn chỉ định bằng độ Mặc định là 45 độ:

Trang 28

Hình 2-1: Camera với góc nhìn 50mm

Căn cứ vào chiều rộng của bộ phim và khoảng cách của pinhole từ bộ phim, góc độ xem là kho ảng 40 độ Đó là tính bằng cách lấy một nửa chiều rộng của phim (18mm), phân chia theo độ dài tiêu cự (50 mm), dùng các tiếp tuyến nghịch đảo, và sau đó tăng gấp đôi Góc độ xem trong WPF 3D là dựa trên chiều rộng hơn là chiều cao, do đó theo chiều ngang 40 độ xem được liên kết với một ống kính tiêu chuẩn 50mm hiện có, giống như các thuộc tính FieldOfView với độ mặc định là 45 độ cho lớp PerspectiveCamera

Một ống kính tele 100mm vừa phải trông như thế này:

Hình 2-2: Camera với góc nhìn 100mm

Trang 29

Góc độ xem hẹp hơn Một ống kính góc rộng có thể có một tiêu c ự khoảng 25mm: góc độ xem rộng lớn hơn:

Hình 2-3: Camera với góc nhìn 25mm

Trong c ảnh 3D đã thiết lập, tam giác nằm trên trục Z với Z tọa độ mà phạm vi đi từ 0 đến -2 Các camera được đặt tại điểm (-2, 0, 5) chỉ theo hướng Z âm với một góc độ xem là 45 độ Thì trên hình ảnh của thiết lập này trông giống như sau:

Hình 2-4: Camera với góc nhìn 45 độ.

Hộp màu xám là máy ảnh Tam giác này được đại diện bởi các đường màu xám dày hơn trên trục Z Nếu máy ảnh lệch hơn về phía bên trái, hoặc gần hơn với trục X, ho ặc thấp hơn, nó s ẽ không cho thấy hết toàn bộ tam giác

Trang 30

Khi chạy chương trình chúng ta sẽ nhìn thấy hình tam giác ở phía bên phải của màn hình Một ví dụ tổng quát về cách hiển thị vật thể khi dùng PerspectiveCamera:

WindowTitle="Perspective Square Cuboid"

Title="Perspective Square Cuboid">

<! Square cuboid sides in order:

front, left, top, right, bottom, rear >

Trang 31

Thứ hai ta sẽ thay thế PerspectiveCamera bằng OrthographicCamera

PerspectiveCamera xác định có một thuộc tính riêng của chính nó đó là FieldOfView

OrthographicCamera cũng định nghĩa một thuộc tính duy nhất công khai đó là Width, và cho

Trang 32

WindowTitle="Orthographic Square Cuboid"

Title="Orthographic Square Cuboid">

<! Square cuboid sides in order:

front, left, top, right, bottom, rear >

4 5 6, 5 7 6,

8 9 10, 9 11 10,

12 13 14, 13 15 14,

16 17 18, 17 19 18,

Trang 34

hạn như 00-FF-FF cho cyan Khi tôi đặc biệt đề cập đến một màu sắc RGB mà có thể xuất hiện trong XAML, tôi sẽ sử dụng cú pháp văn bản, chẳng hạn như "#00FFFF"

Có 4 cách để khai báo ánh sáng cho vật thể:

DirectionLight Chiếu tia song song vào vật thể từ một gốc ở vô cực

PointLight Bức xạ ánh sáng từ một điểm trong vật thể

SpotLight Phát ra một hình nón của ánh sáng từ một điểm trong vật thể

AmbientLight Khuếch tán ánh sáng trên bề mặt vật thể

Bảng 2: Các thuộc tính c ủa Light.

Thông thường hay sử dụng thuộc tính DirectionalLight nhất Hoặc có thể kết hợp nhiều kiểu light trong cùng một ứng dụng

3.1 DirectionalLight

DirectionalLight giống như một nguồn ánh sáng rất xa mà các tia sáng chiếu song song vào vật thể, như ánh sáng t ừ mặt trời chiếu xuống trái đ ất

Đây là hình ảnh minh họa các DirectionalLight sau chiếu xuống trên một mặt cầu:

<DirectionalLight Direction=”1 -1 -0.5” Color=”White”/>

Hình 3.1-1: Hình minh họa sử dụng DirectionalLight

Trang 35

Hình ảnh tạo ra với một DirectionalLight duy nhất thường nhìn không tự nhiên Trong thế giới thực, ngay c ả khi ánh sáng đi vào một cảnh nào đó từ một hướng duy nhất (Như ánh nắng), nó thường bị phản chiếu lại kho ảng giữa các đối tượng Một cách để gần giống như ánh nắng này là có thể thêm một AmbientLight cường độ thấp

3.2 PointLight

PointLight giống như một bóng đèn phát ra ánh sáng theo mọi hướng Một đối tượng

PointLight có một vị trí đặc biệt trong không gian 3D để các tia ánh sáng chiếu trên bề mặt phẳng ở nhiều góc độ:

ConstantAttenuation=”0”

LinearAttenuation=”0”

QuadraticAttenuation=”0.125”/>

Hình 3.2-1: Hình minh họa sử dụng PoinLight

Khi dùng PointLight nó được ví như trong một căn phòng với một bóng đèn trần treo từ trần nhà, trung tâm của bức tường, trần và sàn là vuông góc với ánh sáng và được chiếu sáng nhất, trong khi các góc của căn phòng là tối hơn

Trang 36

Hình 3.3-1: Hình minh họa sử dụng SpotLight

3.4 AmbientLight

AmbientLights thường được sử dụng để ước tính hiệu quả của ánh sáng mà đã được phân tán do phản chiếu của các bề mặt khuếch tán trong cảnh Tia sáng từ một AmbientLight tất cả

bề mặt được chiếu từ mọi hướng

Hình 3.4-1: Hình minh họa sử dụng AmbientLight

AmbientLights chỉ có một thuộc tính duy nhất là Color

<AmbientLight Color=”White”/>

4 Mô tả không gian tọa độ

Theo truyền thống về đồ họa 3D, các mặt của hình khối được định nghĩa bởi một khối đa giác,và 3D phối hợp các điểm bố trí để tạo thành đa giác Đối với mặt phẳng, thường chỉ là một vài hình đa giác là cần thiết, nhưng bề mặt cong đa giác đòi hỏi nhiều tính gần đúng độ cong của các hình vẽ

Trong WPF 3D, hình thức đơn giản nhất của đa giác là tam giác Tam giác là rất hữu ích trong

đồ họa 3D Bất kỳ ba điểm không trùng và ba điểm không gần nhau thì ta xác định một tam giác

Trang 37

Trong WPF 3D, 3D đơn giản bao gồm một hình tam giác duy nhất, chẳng hạn như hình sau trên mặt phẳng YZ với ba đỉnh:

Hình 4-1: Hình ảnh tam giác trên mặt phẳng

Khi thiết lập một hình ảnh 3D, cách đơn giản nhất là tạo ra các con số Bạn có thể cho nó xuất phát từ tâm, hoặc đặt một góc ở gốc, ho ặc bất cứ vị trí thuận tiện nào Các đơn vị của không gian 3D không có ý nghĩa vật lý, mọi thứ đều tương đối

Bạn chỉ rõ đỉnh của tam giác và kết nối các đỉnh với một đối tượng của MeshGeometry3D Hai yếu tố cần thiết của MeshGeometry3D là Positions và TriangleIndices, cả hai đều là

bộ sưu tập Các Positions chứa các đỉnh của hình và TriangleIndices mô tả cách kết nối những đỉnh để tạo thành hình tam giác

Trước hết ta sẽ xác định các điểm dựa trên hệ trục tọa độ Oxyz

Trang 38

Hình 4-2: Cách xác định các đỉnh dựa trên hệ trục tọa độ Oxyz

Một ví dụ bằng XAML: Positions là thuộc tính của Point3DCollection và chứa một đối tượng Point3D Các đánh dấu sau đây cho thấy ba đỉnh của tam giác này cách nhau bằng dấu phẩy, và TriangleIndices chỉ chứa một hình tam giác duy nhất, đó là ba điểm:

là bạn phải phân biệt giữa chúng một cách nào đó Khi tam giác là nhìn từ phía trước, ba chỉ số trong bộ TriangleIndices được xác định các đỉnh của tam giác theo hướng ngược chiều Lấy ví dụ tập hợp bộ sưu tập của TriangleIndices là "1 2 0" hoặc "2 0 1" là chính xác giống như "0 1 2" bởi vì trong tất cả các trường hợp, ba chỉ số các đỉnh của tam giác theo hướng ngược chiều khi tam giác là nhìn từ phía trước

Trang 39

Mặt khác, nếu bạn đã có quy định "0 2 1" hoặc "2 1 0" hoặc "1 0 2," phía bên của tam giác đối diện với vị trí trục X sẽ được xem xét phía trước

Trong WPF 3D thì mỗi mặt của một vật thể được chia thành hai mặt: mặt trước và mặt sau Nếu bạn nối tam giác lại theo chiều ngược chiều kim đồng hồ thì nó được qui định là mặt trước và ngược lại, nếu nối chiều kim đồng hồ thì nó là mặt sau, và nó được mô tả bằng hình ảnh sau:

Hình 4-3: Mặt trước của hình vuông Hình 4-4: Mặt sau của hình vuông

Các đối tượng MeshGeometry3D định nghĩa hình học của hình vẽ Bạn cần xác định màu cho

bề mặt của đối tượng Đối với công việc này bạn sử dụng một đối tượng DiffuseMaterial Lớp DiffuseMaterial là nhằm cung cấp các Brush, xác định các giá trị màu của Brush, bạn

sẽ thiết lập thuộc tính Brush của DiffuseMaterial với một trong những thuộc tính chỉ đọc tĩnh của lớp Brushes:

<DiffuseMaterial Brush="Cyan" />

Các MeshGeometry3D và hai đối tượng Material thuộc GeometryModel3D, trong đó có

ba tính chất thiết yếu: Các Geometry là thuộc tính của MeshGeometry3D, còn Material và

BackMaterial tô màu cho mặt trước và mặt sau của các đối tượng

Ngày đăng: 04/04/2016, 00:52

HÌNH ẢNH LIÊN QUAN

Hình 1: Hình hộp có sử dụng Light. - TÌM HIỂU LẬP TRÌNH ĐỒ HỌA 3D TRONG WINDOWS PRESENTATION FOUNDATION
Hình 1 Hình hộp có sử dụng Light (Trang 22)
Hình 2-4: Camera với góc nhìn 45 độ. - TÌM HIỂU LẬP TRÌNH ĐỒ HỌA 3D TRONG WINDOWS PRESENTATION FOUNDATION
Hình 2 4: Camera với góc nhìn 45 độ (Trang 29)
Hình 2-7: Hình hộp sử dụng OrthographicCamera. - TÌM HIỂU LẬP TRÌNH ĐỒ HỌA 3D TRONG WINDOWS PRESENTATION FOUNDATION
Hình 2 7: Hình hộp sử dụng OrthographicCamera (Trang 33)
Bảng 2: Các thuộc tính c ủa Light. - TÌM HIỂU LẬP TRÌNH ĐỒ HỌA 3D TRONG WINDOWS PRESENTATION FOUNDATION
Bảng 2 Các thuộc tính c ủa Light (Trang 34)
Hình 4-1: Hình ảnh tam giác trên mặt phẳng. - TÌM HIỂU LẬP TRÌNH ĐỒ HỌA 3D TRONG WINDOWS PRESENTATION FOUNDATION
Hình 4 1: Hình ảnh tam giác trên mặt phẳng (Trang 37)
Hình 4-2: Cách xác định các đỉnh dựa trên hệ trục tọa độ Oxyz. - TÌM HIỂU LẬP TRÌNH ĐỒ HỌA 3D TRONG WINDOWS PRESENTATION FOUNDATION
Hình 4 2: Cách xác định các đỉnh dựa trên hệ trục tọa độ Oxyz (Trang 38)
Hình 2.1-2: Hình ảnh được vẽ bằng cách nói các đoạn thẳng. - TÌM HIỂU LẬP TRÌNH ĐỒ HỌA 3D TRONG WINDOWS PRESENTATION FOUNDATION
Hình 2.1 2: Hình ảnh được vẽ bằng cách nói các đoạn thẳng (Trang 48)
Hình 2.3.2-5: Số phức với góc θ . - TÌM HIỂU LẬP TRÌNH ĐỒ HỌA 3D TRONG WINDOWS PRESENTATION FOUNDATION
Hình 2.3.2 5: Số phức với góc θ (Trang 63)
Hình 1-1: Tọa độ dùng xác định cọ vẽ. - TÌM HIỂU LẬP TRÌNH ĐỒ HỌA 3D TRONG WINDOWS PRESENTATION FOUNDATION
Hình 1 1: Tọa độ dùng xác định cọ vẽ (Trang 75)
Hình 1-2: Chuyển đổi cọ vẽ tam giác 2 chiều sang tam giác 3 chiều. - TÌM HIỂU LẬP TRÌNH ĐỒ HỌA 3D TRONG WINDOWS PRESENTATION FOUNDATION
Hình 1 2: Chuyển đổi cọ vẽ tam giác 2 chiều sang tam giác 3 chiều (Trang 76)
Hình 2.1-1: Cọ vẽ sử dụng ImageBrush. - TÌM HIỂU LẬP TRÌNH ĐỒ HỌA 3D TRONG WINDOWS PRESENTATION FOUNDATION
Hình 2.1 1: Cọ vẽ sử dụng ImageBrush (Trang 83)
Hình 2.1-3: Hình ảnh khi sử dụng ViewboxUnit. - TÌM HIỂU LẬP TRÌNH ĐỒ HỌA 3D TRONG WINDOWS PRESENTATION FOUNDATION
Hình 2.1 3: Hình ảnh khi sử dụng ViewboxUnit (Trang 85)
Hình 2.2-1: Sử dụng DrawingBrush tô theo kiểu hình ellipse lấy từ resource. - TÌM HIỂU LẬP TRÌNH ĐỒ HỌA 3D TRONG WINDOWS PRESENTATION FOUNDATION
Hình 2.2 1: Sử dụng DrawingBrush tô theo kiểu hình ellipse lấy từ resource (Trang 92)
Hình 3: Giao diện chính. - TÌM HIỂU LẬP TRÌNH ĐỒ HỌA 3D TRONG WINDOWS PRESENTATION FOUNDATION
Hình 3 Giao diện chính (Trang 102)
Bảng 4: Bảng mô tả các thành phần của giao diện. - TÌM HIỂU LẬP TRÌNH ĐỒ HỌA 3D TRONG WINDOWS PRESENTATION FOUNDATION
Bảng 4 Bảng mô tả các thành phần của giao diện (Trang 105)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w