Đăng ký Đăng nhập

Tài liệu Nghiên cứu công nghệ wpf

.PDF
219
494
55

Mô tả:

Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa Lời Cảm Ơn Chúng em xin bày tỏ lòng biết ơn sâu sắc đến thầy Trần Sơn Hải, ngƣời đã hƣớng dẫn tận tình và giúp đỡ chúng em hoàn thành luận văn tốt nghiệp. Trong thời gian thực hiện luận văn tốt nghiệp, chúng em xin cảm ơn tới tập thể thầy cô khoa Công Nghệ Thông Tin – Toán Ứng Dụng trƣờng đại học Tôn Đức Thắng đã truyền đạt cho chúng em những kiến thức và kinh nghiệm bổ ích trong quá trình học tập và nghiên cứu tại trƣờng. Sau cùng chúng em xin chân thành cảm ơn trƣờng đại học Tôn Đức Thắng đã tạo điều kiện giúp đỡ chúng em hoàn thành luận tốt nghiệp. Thành phố Hồ Chí Minh, ngày 15 tháng 6 năm 2009 Sinh Viên Nguyễn Quang Nguyên Trần Văn Khánh 1 Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa Mục Lục PHẦN 1 .....................................................................................................................10 NGHIÊN CỨU CÔNG NGHỆ WPF ........................................................................10 LỜI NÓI ĐẦU ..........................................................................................................11 CHƢƠNG 1: TỔNG QUAN WPF ...........................................................................13 1.1 Nền tảng thống nhất để xây dựng giao diện ngƣời dùng ................................13 1.2 Khả năng làm việc chung giữa ngƣời thiết kế giao diện và lập trình viên ......15 1.3 Kiến trúc của WPF ..........................................................................................18 1.4 Các đặc điểm tạo nên sự khác biệt của WPF: .................................................19 1.5 Các ứng dụng đƣợc xây dựng trên WPF .........................................................21 1.6 Các GUI trƣớc WPF ........................................................................................23 1.7 Kết chƣơng ......................................................................................................24 CHƢƠNG 2: TỔNG QUAN XAML ........................................................................25 2.1 Các thành phần XAML ...................................................................................25 2.2 XAML Compilation ........................................................................................25 2.3 Cơ bản XAML .................................................................................................26 2.4 XAML Namespaces ........................................................................................27 2.5 Code-Behind ....................................................................................................28 2.6 Cú Pháp XAML ...............................................................................................29 2.7 Thiết lập giá trị properties ...............................................................................30 2.8 Content property ..............................................................................................31 2.9 Từ Khoá XAML ..............................................................................................31 2.10 Kết chƣơng ........................................................................................................33 CHƢƠNG 3 : LAYOUT ...........................................................................................34 3.1 Giới thiệu chung ..............................................................................................34 3.2 Các Panel thông dụng ......................................................................................36 3.2.1 StackPanel .................................................................................................36 3.2.2 WrapPanel .................................................................................................42 3.2.3 DockPanel .................................................................................................42 3.2.4 Canvas .......................................................................................................43 3.2.5 Grid ...........................................................................................................44 3.3 Ví dụ xây dựng Layout trong WPF .................................................................51 3.4 A Modular User Interface................................................................................53 3.5 Kết chƣơng ......................................................................................................54 CHƢƠNG 4: MARKUP EXTENSION VÀ DEPENDENCY PROPERTY ............55 4.1 Markup extension ............................................................................................55 4.1.1 Các markup extension đặc tả WPF: ..........................................................55 4.1.2 Các markup extension đặc tả XAML .......................................................56 4.2 Depencty property ...........................................................................................57 4.2.1 Resources ..................................................................................................58 4.2.2 Data Binding .............................................................................................59 2 Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa 4.2.3 Styles .........................................................................................................60 4.2.4 Animations ................................................................................................60 4.2.5 Kế thừa giá trị thuộc tính ..........................................................................60 4.3 Kết chƣơng ......................................................................................................61 CHƢƠNG 5 : CONTROL CƠ BẢN ........................................................................62 5.1 Tổng quan về control trong WPF ....................................................................62 5.2 Các control cơ bản trong WPF ........................................................................64 5.2.1 Label .........................................................................................................64 5.2.2 TextBox ....................................................................................................65 5.2.3 PasswordBox ............................................................................................66 5.2.4 Button........................................................................................................67 5.2.5 CheckBox và RadionButton .....................................................................68 5.2.6 ListBox......................................................................................................70 5.2.7 ComboBox ................................................................................................71 5.3 Ví dụ xây dựng control trong WPF .................................................................73 5.4 Kết chƣơng ......................................................................................................77 CHƢƠNG 6 : CONTROL NÂNG CAO ..................................................................78 6.1 Hộp lựa chọn font chữ - Font Chooser ............................................................78 6.2 Hộp danh mục ảnh – Image ListBox ...............................................................79 6.2.1 Thêm các hình ảnh vào project .................................................................80 6.2.2 Xây dựng mã Xaml ...................................................................................80 6.3 Hộp mở rộng - Expander .................................................................................81 6.4 Hộp soạn thảo đa năng – RichTextBox ...........................................................84 6.4.1 Chức năng cơ bản .....................................................................................84 6.4.2 Giao diện command ..................................................................................85 6.5 Kết chƣơng ......................................................................................................87 CHƢƠNG 7: ROUTED EVENT VÀ COMMAND .................................................88 7.1 Routed event ....................................................................................................88 7.1.1 Event Handler ...........................................................................................88 7.1.2 Routed Event ............................................................................................91 7.1.3 Routing strategies .....................................................................................93 7.1.4 Sử dụng Routed Event ..............................................................................99 7.2 Lệnh (Command)...........................................................................................100 7.2.1 Lệnh là gì ? .............................................................................................100 7.2.2 Những khái niệm chính trong hệ thống lệnh của WPF ..........................101 7.2.3 Lệnh có định tuyến .................................................................................101 7.2.4 Ví dụ về việc sử dụng lệnh .....................................................................102 7.2.5 Lệnh tự tạo ..............................................................................................105 7.3 Kết chƣơng ....................................................................................................106 CHƢƠNG 8: STYLE VÀ TEMPLATE ................................................................108 8.1 Style ...............................................................................................................108 8.1.1 x:Key .......................................................................................................109 8.1.2 BasedOn ..................................................................................................109 3 Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa 8.1.3 TargetType ..............................................................................................110 8.1.4 Setters......................................................................................................110 8.1.5 Triggers ...................................................................................................113 8.2 Template ........................................................................................................118 8.2.1 Control Templates ..................................................................................118 8.2.2 DataTemplate ..........................................................................................122 8.3 Kết Chƣơng ...................................................................................................124 CHƢƠNG 9: DATA BINDING .............................................................................125 9.1 Thuộc tính Data binding ................................................................................126 9.3 Thuộc tính Mode ...........................................................................................127 9.3 Data binding với XML ..................................................................................128 9.4 Data binding với một đối tƣợng Collection...................................................129 9.5 DataContext ...................................................................................................130 9.6 MultiBinding .................................................................................................131 9.7 UpdateSourceTrigger ....................................................................................133 9.8 ObjectDataProvider .......................................................................................135 9.10 Kết chƣơng ..................................................................................................138 CHƢƠNG 10 : MENU VÀ TOOLBAR .................................................................139 10.1 Xây dựng menu và sử dụng menu trong WPF ............................................139 10.1.1 Xây dựng Menu và các Menu Item đơn giản .......................................140 10.1.2 Menu Item với trạng thái Checked và UnChecked ..............................144 10.1.3 Menu Item với các biểu tƣợng hình ảnh ...............................................145 10.2 Xây dựng và sử dụng thanh công cụ - ToolBar ..........................................147 10.2.1 Nút công cụ thông thƣờng ....................................................................148 10.2.2 Nút công cụ có trạng thái ......................................................................150 10.3 Ví dụ về xây dựng Menu và ToolBar trong WPF .......................................152 10.4 Kết chƣơng ..................................................................................................156 CHƢƠNG 11 : CONTEXTMENU VÀ STATUSBAR ..........................................157 11.1 Xây dựng và sử dụng thực đơn ngữ cảnh – ContextMenu ..........................158 11.1.1 MenuContext riêng biệt ........................................................................159 11.1.2 MenuContext chia sẻ - Shared ContextMenu .......................................161 11.2 Xây dựng và sử dụng thanh trạng thái – StatusBar .....................................163 11.2.1 StatusBar với các phần tử văn bản........................................................163 11.2.2 StatusBar với phần tử là thanh tiến trình (Progress Bar) ......................165 11.2.3 StatusBar với phần tử là hình ảnh .........................................................166 11.3 Kết chƣơng ..................................................................................................167 CHƢƠNG 12 : GRAPHICS....................................................................................168 12.1 Các đối tƣợng đồ họa cơ bản trong WPF - Shape .......................................168 12.1.1 Đoạn thẳng – Line ................................................................................168 12.1.2 Chuỗi đoạn thẳng – Polyline.................................................................170 12.1.3 Hình chữ nhật – Rectangle ...................................................................171 12.1.4 Hình elip và hình tròn – Ellipse – Circle ..............................................173 12.1.5 Đa giác – Polygon .................................................................................175 4 Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa 12.1.6 Đƣờng cong Bezier bằng đối tƣợng Path .............................................176 12.2 Sử dụng chổi tô – Brush ..............................................................................178 12.2.1 Tô màu đồng nhất – Solid Color...........................................................179 12.2.2 Tô màu theo định hƣớng tuyến tính – Linear Gradient Color ..............180 12.2.3 Đổ màu theo bán kinh hình tròn – Radial Gradient ..............................185 12.2.4 Tô màu bằng Bitmap ............................................................................186 12.2.5 Thiết lập độ mờ của chổi tô – Opacity .................................................189 12.3 Biến đổi hình học – Transform....................................................................191 12.4 Kết chƣơng ..................................................................................................194 CHƢƠNG 13: ANIMATION .................................................................................195 13.1 Basic Animation ..........................................................................................195 13.2 Các lớp Animation.......................................................................................196 13.3 Animation trong code ..................................................................................197 13.3.1 From ......................................................................................................199 13.3.2 To ..........................................................................................................199 13.3.3 By ..........................................................................................................199 13.3.4 Duration ................................................................................................200 13.4 Animation kép – Simultaneuos Animations ................................................200 13.5 The Timeline Class ......................................................................................200 13.6 Animation và Storyboards ...........................................................................203 13.6.1 Storyboard .............................................................................................204 13.6.2 Event trigger .........................................................................................204 13.6.3 Điều khiển các kĩ thuật phát lại – Playback..........................................208 13.7 Kiểu Animation Revisited ...........................................................................211 13.7.1 Animation biến đổi (Transforms) .........................................................211 CHƢƠNG 14: KẾT LUẬN ...................................... Error! Bookmark not defined. 5 Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa Mục lục Hình Hình 1.1:XAML hỗ trợ lập trình viên và ngƣời thiết kế làm việc chung. ................16 Hình 1.2: Visual Studio 2008. ...................................................................................17 Hình 1.3: Microsoft Expression Blend 2. .................................................................17 Hình 1.4: Kiến trúc WPF ..........................................................................................18 Hình 1.5: Yahoo messager 9 .....................................................................................21 Hình 1.6: AMD Live .................................................................................................21 Hình 1.7: Lectra ........................................................................................................22 Hình 1.8: BBC Showcase 2007. ................................................................................22 Hình 1.9: The New York Times ................................................................................23 Hình 3.1: Kết quả sửa đổi đoạn mã XAML hiển thị hơn một phần tử giao diện con trong một nút bấm sử dụng StackPanel.....................................................................36 Hình 3.2: Sắp xếp nhiều control theo thứ tự kế tiếp trên xuống dƣới sử dụng StackPanel .................................................................................................................37 Hình 3.3: Sắp xếp nhiều control theo thứ tự kế tiếp trái sang phải sử dụng StackPanel .................................................................................................................38 Hình 3.4: Hình ví dụ margin .....................................................................................40 Hình 3.5: Canh Margin trong WPF ...........................................................................40 Hình 3.6: Thuộc tính Maximum, Minimum và Explitxit Sizes trong WPF ............41 Hình 3.7: Sử dụng WrapPanel ..................................................................................42 Hình 3.8: Sử dụng DockPanel ...................................................................................43 Hình 3.9: Sử dụng Canvas để sắp xếp các phần tử UI ..............................................44 Hình 3.10: Ví dụ Grid đơn giản ................................................................................46 Hình 3.11: Sử dụng Grid để sắp xếp các phần tử UI ................................................47 Hinh 3.12: Các Control với thuộc tính Spanning ......................................................48 Hình 3.13: Thay đổi kích thƣớc của Grid bằng thuộc tính Split ...............................49 Hình 3.14: Grid cho phép thay đổi kích thƣớc của 2 vùng ngang và dọc. ................50 Hình 3.15: Một dãy các panel trong WrapPanel .......................................................53 Hình 3.16: Một vài panel đƣợc ẩn đi ........................................................................54 Hình 5.1: Một ví dụ về cửa số với các control đơn giản ...........................................62 Hình 5.2: Minh họa về label ......................................................................................64 Hình 5.3: Minh họa về TextBox ...............................................................................65 Hình 5.4: Minh họa về nút bấm ................................................................................67 Hình 5.5: Minh họa về hộp chọn Radio và CheckBox .............................................68 Hình 5.6: Minh họa về hộp chọn ListBox .................................................................70 6 Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa Hình 5.7: Minh họa về hộp chọn ComboBox ...........................................................72 Hình 6.1: Hộp lựa chọn phông chữ đƣợc xây dựng bằng WPF ................................79 Hình 6.2: Danh mục đồ uống có kèm ảnh minh hoạ xây dựng bằng WPF ..............81 Hình 6.3: Tạo lập và sử dụng hộp mở rộng bằng WPF ............................................84 Hình 6.4: Xây dựng hộp soạn thảo đa năng đơn giản với các chức năng thay đổi kiểu chữ bằng WPF ...................................................................................................86 Hình 7.1: Liên kết trực quan. ....................................................................................89 Hình 7.2: Visual tree và logical tree. ........................................................................93 Hình 7.3: Bubble .......................................................................................................94 Hình 7.4: Tunnel. ......................................................................................................95 Hình 7.5: Direct .........................................................................................................95 Hình 7.6: Đƣờng đi sự kiện. ......................................................................................96 Hình 7.7: Thêm xử lí hander trong mã xaml. ............................................................98 Hình 8.1: Kết quả dùng Setter. ................................................................................112 Hình 8.2: Kết quả ban đầu trong ví dụ khác nhau Trigger và Event Trigger .........117 Hình 8.3: Khi chuột đƣợc di chuyển vào button .....................................................117 Hình 8.4: Sự kiện khi click chuột............................................................................117 Hình 8.5: Hình kết quả ví dụ control template. .......................................................119 Hình 8.6: Hình kết quả định nghĩa hành vi của control template. ..........................121 Hình 8.7: Khi chuột di chuyển qua, màu sắc của Button sẽ thay đổi. ....................121 Hình 8.8: Khi nhấp chuột vào Button, kích thƣớc sẽ thu nhỏ .................................122 Hình 8.9: Ví dụ trigger trong data template ............................................................124 Hình 8.10: Ví dụ trigger trong data template ..........................................................124 Hình 9.1: Mô hình Data Binding.............................................................................126 Hình 9.2: Mô hình thuộc tính mode trong data binding..........................................127 Hình 9.3: Ví dụ các mode trong data binding. ........................................................128 Hình 9.4: Ví dụ UpdateSourceTrigger. ...................................................................134 Hình 10.1: Một ví dụ về cửa số với thanh thực đơn ...............................................140 Hình 10.2: Ví dụ về thực đơn cấp dƣới là một Popup Menu ..................................140 Hình 10.3: Công cụ soạn thảo Menu cho ứng dụng WPF trong Visual Studio 2008 .................................................................................................................................141 Hình 10.4: Hộp thoại Quản lý các Menu Item ........................................................142 Hình 10.5: Minh họa Menu Item với trạng thái Checked và UnChecked ..............144 Hình 10.6: Thêm tài nguyên và thiết lập thuộc tính cho tài nguyên ảnh ................146 Hình 10.7: Thanh công cụ - Toolbar .......................................................................147 Hình 10.8: Ví dụ minh họa Toolbar ........................................................................148 7 Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa Hình 10.9: Ví dụ minh họa Toolbar với trạng thái Checked và UnCheked ..........150 Hình 10.10: Ví dụ minh họa tổng hợp về Menu và Toolbar. ..................................153 Hình 11.1: Nút bấm với thực đơn ngữ cảnh (Context Menu) .................................157 Hình 11.2: Thanh trạng thái gồm ba mục trạng thái khác nhau ..............................157 Hình 11.3: Ví dụ về thực đơn ngữ cảnh riêng biệt của từng điều khiển khác nhau 159 Hình 11.4: Ví dụ về thực đơn ngữ cảnh chia sẻ ......................................................161 Hình 11.5: Thanh trạng thái ....................................................................................163 Hình 11.6: Thanh trạng thái với phần tử là thanh tiến trình ...................................165 Hình 11.7: Thanh trạng thái với phần tử là hình ảnh ..............................................166 Hình 12.1: Ví dụ về đoạn thẳng ..............................................................................169 Hình 12.2: Ví dụ về Polyline...................................................................................170 Hình 12.3: Ví dụ về hình chữ nhật ..........................................................................171 Hình 12.4: Ví dụ về hình ellipse Ellipse .................................................................173 Hình 12.5: Ví dụ về Polygon...................................................................................175 Hình 12.6: Ví dụ về Path .........................................................................................177 Hình 12.7: Minh họa một số kiểu tô hình ...............................................................178 Hình 12.8: Tô theo hƣớng tuyến tính ......................................................................181 Hình 12.9: Minh họa các điểm chốt ........................................................................182 Hình 12.10: Trục tô mặc định của tô màu tuyến tính. ............................................183 Hình 12.11: Trục tô màu theo chiều ngang. ............................................................183 Hình 12.12: Trục tô màu theo chiều đứng. .............................................................184 Hình 12.13: Hình minh họa cách tô đổ màu theo bán kính hình tròn. ....................185 Hình 12.14: Các mẫu (pattern) ................................................................................186 Hình 12.15. Minh họa tô một vùng bằng hình ảnh .................................................187 Hình 12.16: Các kết quả của giá trị thuộc tính Stretch. ..........................................188 Hình 12.17: Các kết quả của giá trị thuộc tính TileMode. ......................................189 Hình 12.18: Hình ví dụ chổi tô với độ mờ ..............................................................189 Hình 12.19: Hình minh họa sử dụng phép quay để xoay một hình chữ nhật một góc 45 độ, tâm ở đỉnh hình chữ nhật..............................................................................192 Hình 12.20: Hình minh họa sử dụng phép quay để xoay một hình chữ nhật một góc 45 độ. .......................................................................................................................193 Hình 12.21: Hình ví dụ thuộc tính RenderTransform và RotateTransform. ...........194 8 Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa Mục lục Bảng Bảng 1.1: Thành phần giao diện và những công nghệ cần thiết. ..............................14 Bảng 2.1: Từ khóa XAML ........................................................................................33 Bảng 3.1: Các thuộc tính lớp Panel. ..........................................................................36 Bảng 3.2: Các thuộc tính của StackPanel .................................................................39 Bảng 3.3: Các giá trị thuộc tính Visibility ................................................................54 Bảng 4.1: Markup extension WPF ............................................................................55 Bảng 4.2: Markup extension XAML ........................................................................56 Bảng 9.1: Giá trị thuộc tính Mode ..........................................................................127 Bảng 9.2: Giá trị thuộc tính UpdateSourceTrigger. ................................................133 Bảng 12.1: Một số loại đối tƣợng và thuộc tinh đƣợc dùng để gắn với chổi tô. ....179 Bảng 12.2: Một số lớp (class) để hỗ trợ cho công việc biến đổi hình học. .............192 9 Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa PHẦN 1 NGHIÊN CỨU CÔNG NGHỆ WPF 10 Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa LỜI NÓI ĐẦU Khi khoảng cách công nghệ giữa các nhà xản suấ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à một điểm nhấn cho mỗi sản phẩm đó. Window Presentation Foudation (WPF) là một trong những công nghệ mới với những ƣu điểm nối bật cho công việc thiết kế và lập trình giao diện. Luận văn nghiên cứu về công nghệ WPF bao gồm các chƣơng sau: Chƣơng 1: Tổng Quan WPF, vì sao WPF ra đời, WPF phục vụ cho nhu cầu nào, những ai sẽ sử dụng WPF, các GUI trƣớc đây, kiến trúc WPF, công cụ sử dụng WPF... Chƣơng 2: Tổng Quan XAML, giới thiệu về ngôn ngữ XAML đƣợc sử dụng trong WPF, các quy tắc viết mã XAML, cú pháp, từ khóa,… Chƣơng 4: Markup Extension và Dependency Property, giới thiệu các đánh dấu mở rộng của XAML và WPF sử dụng cho việc viết mã, thế nào là tài nguyên tĩnh, tài nguyên động, key,…Giới thiệu Dependency Property một trong những khái niệm quan trọng trong WPF bắt đầu từ NET Framework 3.5 trở đi. Chƣơng 7: Routed Event và Command, giới thiệu cách xử lí sự kiện, định tuyến sự kiện trong WPF, cách tƣơng tác từ XAML tới mã lệnh bên trong có hàm xử lí sự kiện, tunnel, bubble. Lệnh (command) sử dụng lệnh, lệnh tự tạo. Chƣơng 8: Styles và Templates, giới thiệu về style (kiểu mẫu) một trong những thành phần linh động trong XAML, tạo nên sự thể hiện phong phú trong giao diện của WPF. Giới thiệu về các mẫu (template) gồm: data template, control template, thể hiện sự phong phú tự do trình bày dữ liệu cũng nhƣ phong phú sự thể thể điều kiển các phần tử (element). Chƣơng 9: Data Binding, thành phần quan trong trong WPF, thể hiện sự kết nối dữ liệu giữa giao diện XAML với mã lệnh, với nhiều loại dữ liệu kết nối nhƣ: collection, xml,… 11 Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa 12 Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa CHƢƠNG 1: TỔNG QUAN WPF WPF là viết tắt của Windows Presentation Foundation, là hệ thống API mới hỗ trợ việc xây dựng giao diện đồ hoạ trên nền Windows. Đƣợc xem nhƣ thế hệ kế tiếp của WinForms. WPF 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 các API cho phép tận dụng những lợi thế về đa phƣơng tiện hiện đại. Là một bộ phận của .NET Framework 3.0 và sau này là 3.5, WPF đã đƣợc sử dụng trong Windows Vista, Windows Server 2008, Windows XP Service Pack 2 và trên các hệ điều hành sau này. WPF đƣợc xây dựng nhằm vào ba mục tiêu cơ bản:  Cung cấp một nền tảng thống nhất để xây dựng giao diện ngƣời dùng.  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 dễ dàng.  Cung cấp một công nghệ chung để xây dựng giao diện ngƣời dùng trên cả Windows và trình duyệt Web. Đƣợc xây dựng trên .NET Framework, WPF cung cấp môi trƣờng phát triển ứng dụng trên hệ điều hành Windows. Lợi thế với những gì có sẵn trong .NET Framework của Microsoft cho phép các lập trình viên đã làm quen với công nghệ .NET có thể nhanh chóng phát triển ứng dụng với WPF. Dù đó là một hình ảnh 3D phức tạp hay một đơn giản cho là một Button bình thƣờng đƣợc xây dựng cho cả ứng dụng Windows và ứng dụng Web, tất cả chạy trên Windows platform. 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 nhƣ Window 7. 1.1 Nền tảng thống nhất để xây dựng giao diện ngƣời dùng Trƣớc khi WPF ra đời, việc tạo giao diện ngƣời dùng đòi hỏi sử dụng rất nhiều công nghệ khác nhau (xem Bảng 1.1). Để tạo form, các control và các tính năng khác của một giao diện đồ họa Windows, thông thƣờng lập trình viên sẽ chọn Windows Forms, một phần của .NET Framework. Nếu cần hiển thị văn bản, Windows Forms có một số tính năng hỗ trợ văn bản trực tiếp hoặc có thể sử dụng PDF của Adobe để hiển thị văn bản có khuôn dạng cố định. Đối với hình ảnh và đồ họa 2 chiều, lập trình viên sẽ dùng GDI+, một mô hình lập trình riêng biệt có thể truy nhập qua Windows Forms. Để hiển thị video hay phát âm thanh, lập trình viên lại phải sử dụng Windows Media Player và với đồ họa 3 chiều phải thì dùng 13 Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa Direct3D, một thành phần chuẩn khác của Windows. Tóm lại, quá trình phát triển giao diện ngƣời dùng theo yêu cầu trở nên phức tạp, đòi hỏi lập trình viên quá nhiều kỹ năng công nghệ. Windows PDF Forms Giao diện x đồ họa (form và các control) On-screen x Văn bản Fixedformat văn bản Hình ảnh Video và âm thanh Đồ họa 2 chiều Đồ họa 3 chiều Windows Windows Forms/ Media GDI+ Player Direct3D WPF x x x x x x x x x x x x Bảng 1.1: Thành phần giao diện và những công nghệ cần thiết. Tuy nhiên, WPF ra đời không có nghĩa là tất cả những công nghệ nêu trên bị thay thế. Windows Forms vẫn có giá trị, thậm trí trong WPF, một số ứng dụng mới vẫn sẽ sử dụng Windows Forms. Windows Media Player vẫn đóng một vai trò công cụ độc lập để chơi nhạc và trình chiếu video. PDF cho văn bản vẫn tiếp tục đƣợc sử dụng. Direct3D vẫn là công nghệ quan trọng trong games và các dạng ứng dụng khác (Trong thực tế, bản thân WPF dựa trên Direct3D để thực hiện mọi biểu diễn đồ họa). Việc tạo ra một giao diện ngƣời dùng hiện đại không chỉ là việc hợp nhất các công nghệ sẵn có khác nhau. Nó còn thể hiện ở việc tận dụng lợi điểm của card đồ họa hiện đại. Để giải phóng những hạn chế của đồ họa bitmap, WPF dựa hoàn toàn 14 Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa trên đồ họa vector, cho phép hình ảnh tự động thay đổi kích thƣớc để phù hợp với kích thƣớc và độ phân giải của màn hình mà nó đƣợc hiển thị. Bằng việc hợp nhất tất cả các công nghệ cần thiết để tạo ra một giao diện ngƣời dùng vào một nền tảng đơn nhất, WPF đơn giản hóa đáng kể công việc của lập trình viên giao diện. Với việc yêu cầu lập trình viên học một môi trƣờng phát triển duy nhất, WPF góp phần làm giảm chi phí cho việc xây dựng và bảo trì ứng dụng. Bằng việc cho phép tích hợp đa dạng nhiều cách biểu diễn thông tin trên giao diện ngƣời dùng, WPF góp phần nâng cao chất lƣợng và theo đó là giá trị công việc bằng cách thức ngƣời dùng tƣơng tác với ứng dụng trên Windows. 1.2 Khả năng làm việc chung giữa ngƣời thiết kế giao diện và lập trình viên Thông thƣờng, ngƣời thiết kế giao diện sử dụng một công cụ đồ họa để tạo ra những ảnh tĩnh về cách bố trí giao diện trên màn hình. Những hình ảnh này sau đó đƣợc chuyển tới lập trình viên với nhiệm vụ tạo ra mã để hiện thực hóa giao diện đã thiết kế. Đôi lúc vẽ ra một giao diện thì đơn giản với ngƣời thiết kế, nhƣng để biến nó thành hiện thực có thể là khó khăn hoặc bất khả thi với lập trình viên. Hạn chế về công nghệ, sức ép tiến độ, thiếu kỹ năng, hiểu nhầm hoặc đơn giản là bất đồng quan điểm có thể khiến lập trình viên không đáp ứng đƣợc đầy đủ yêu cầu từ ngƣời thiết kế. Do vậy, điều cần thiết ở đây là một cách thức để hai nhóm công tác độc lập này có thể làm việc với nhau mà không làm thay đổi chất lƣợng của giao diện đã thiết kế. Để thực hiện đƣợc điều này, WPF đƣa ra ngôn ngữ đặc tả eXtensible Application Markup Language (XAML). XAML định ra một tập các phần tử nhƣ Button, TextBox, Label…, nhằm định nghĩa các đối tƣợng đồ họa tƣơng ứng nhƣ nút bấm, hộp thoại, nhãn…, và nhờ đó cho phép mô tả chính xác diện mạo của giao diện ngƣời dùng. Các phần tử XAML cũng chứa các thuộc tính, cho phép thiết lập nhiều tính chất khác nhau của đối tƣợng đồ họa tƣơng ứng. Ví dụ, đoạn mã sau sẽ tạo ra một nút bấm màu đỏ có nội dung là “No”. Mỗi phần tử XAML lại tƣơng ứng với một lớp WPF, và mỗi thuộc tính của phần tử đó lại tƣơng ứng với thuộc tính hay sự kiện của lớp này. Chẳng hạn, nút bấm màu đỏ trong ví dụ trên có thể tạo bằng mã lệnh C# nhƣ sau: Button btn = new Button(); btn.Background = Brushes.Red; btn.Content = "No"; 15 Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa Nếu nhƣ mọi thứ có thể biểu diễn bằng XAML thì cũng có thể biểu diễn bằng đoạn mã, thì câu hỏi đặt ra là XAML có ý nghĩa gì? Câu trả lời là việc xây dựng các ứng dụng và sử dụng các đặc tả bằng XAML dễ dàng hơn nhiều so với xây dựng một công cụ tƣơng tự làm việc với đoạn mã. Bởi vậy, XAML mở ra một cách thức tốt hơn để lập trình viên và ngƣời thiết kế làm việc với nhau. Hình 1.1 minh họa quá trình này. Hình 1.1:XAML hỗ trợ lập trình viên và ngƣời thiết kế làm việc chung. 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 Blend (hình 1.2). 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 mở file XAML bằng tool nhƣ Visual Studio (hình 1.3) để 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 lập trình viên và ngƣời thiết kế giao diện với vai trò khác nhau có thể tiến hành song song công việc. 16 Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa Hình 1.2: Visual Studio 2008. Hình 1.3: Microsoft Expression Blend 2. 17 Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa Thay vì lập trình viên phải tái tạo lại giao diện từ đầu dựa trên một ảnh tĩnh mà ngƣời thiết kế cung cấp, bản thân các đoạn XAML sẽ đƣợc Microsoft Visual Studio biên dịch để tái tạo thành giao diện đồ họa đúng theo mô tả. Lập trình viên chỉ tập trung vào việc viết mã trình cho giao diện đƣợc sinh ra, chẳng hạn nhƣ xử lý các sự kiện, theo những chức năng đề ra của ứng dụng. Việc cho phép ngƣời thiết kế và lập trình viên làm việc chung nhƣ vậy sẽ hạn chế những lỗi phát sinh khi hiện thực hóa giao diện từ thiết kế. Thêm vào đó, nó còn cho phép hai nhóm làm việc song song, khiến mỗi bƣớc lặp trong quy trình phát triển phần mềm ngắn đi và việc phản hồi đƣợc tốt hơn. Vì cả hai môi trƣờng đều có khả năng hiểu và sử dụng XAML, ứng dụng WPF có thể chuyển qua lại giữa hai môi trƣờng phát triển để sửa đổi hay bổ sung giao diện. Với tất cả những lợi điểm này, vai trò của ngƣời thiết kế trong việc xây dựng giao diện đƣợc đặt lên hàng đầu. 1.3 Kiến trúc của WPF WPF nằm trong .NET Framework, nên các ứng dụng WPF có thể kết hợp các thành phần khác có trong thƣ viện lớp của .NET Framework. WPF sử dụng kiến kiến trúc nhiều tầng (multilayer), tầng trên cùng ứng dụng tƣơng tác các dịch vụ high-level đƣợc viết hoàn tất bởi đoạn mã quản lí đƣợc (managed code) nhƣ C#. Sau đó dịch các đối tƣợng .NET thành các kết cấu Direct3D, sử dụng lower-level là milcore.dll là thành phần unmagened code (sinh ra mã máy trực tiếp), millcore.dll là unmanaged code bởi vì milcore.dll tƣơng tác chặt chẽ với Direct3D để tăng hiệu suất xử lí nhanh chóng. Kiến trúc WPF hình 1.4: PresentationFramework.dll WindowsBase.dll PresentationCore.dll milcore.dll Direct3D User32 Hình 1.4: Kiến trúc WPF 18 Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa PresentationFramework.dll gồm các loại WPF top-level nhƣ windows, panel và các control khác. PresentationCore.dll nắm các loại nhƣ UIElement và Visual là các hình dạng và dẫn xuất ra các control WindowBase.dll nắm giữ các thành phần cơ bản để có khả năng bên ngoài sử dụng lại WPF nhƣ DispatcherObject và DependencyObject. milcore.dll là nhân của hệ thống trình diễn (render) WPF, mặc dù là thành phần của WPF, milcore còn là thành phần cốt yếu của Window Vista. Direct3D là API low-level mang tất cả các đồ họa trong WPF đƣợc trình diễn ra. 1.4 Các đặc điểm tạo nên sự khác biệt của WPF: Đồ 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 ellipese. Bạn cũng có những đặc điểm mới nhƣ điều khiển độ trong suốt, độ 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 với WPF đặ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: 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). Độ 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 19 Đề Tài: Nghiên Cứu Công Nghệ WPF và Xây Dựng Ứng Dụng Minh Họa 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.WPF sử dụng chính DirectX làm nền tảng cho bất cứ giao diện nào đƣợc tạo, hiện thị text thì nó cũng đƣợc tạo 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ó đƣợc những hiệu ứng đồ họa phực tạp, ví dụ nhƣ các 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à card màn hình. 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ƣ XML 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. 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, Page Application…. 20
- Xem thêm -

Tài liệu liên quan