Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałŁucyna Paluszek Został zmieniony 10 lat temu
1
WINDOWS PRESENTATION FOUNDATION platforma tworzenia aplikacji okienkowych z bogatą warstwą prezentacji (.NET 3.0 ) rozdzielenie warstwy prezentacji (język XAML) i warstwy interakcji (język C# ) możliwe przejście do aplikacji pobieranej z serwera internetowego i osadzanej w przeglądarce (XBAP - XAML Browser Application) A. Troelsen, Pro C# 2010 and the.NET 4 Platform, APRESS, 2010 M. MacDonald, Pro WPF in C# 2010: Windows Presentation Foundation in.NET 4.0, APRESS, 2010
2
podstawowe cechy –– rozbudowane możliwości kształtowania wyglądu i stylu okien ( szablony, czcionki ) –– wiązania danych –– obsługa grafiki 2D i 3D (grafika wektorowa) oraz animacji –– obsługa dokumentów –– współpraca z Windows Forms
3
podstawowe klasy –– Visual : generacja obrazu okna –– DispatcherObject : obsługa wątków –– Control : klasa bazowa elementów sterujących –– Application : nadzorowanie cyklu życia aplikacji inne główne klasy –– UIElement –– FrameworkElement –– ContentElement –– FrameworkContentElement
4
przestrzenie nazw using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Media; using System.Windows.Navigation; using System.Windows.Shapes; FirstWPF
5
język XAML Extensible Application Markup Language –– dialekt XML –– opis warstwy prezentacji program w języku XAML jest tłumaczony na BAML ( Binary Application Markup Language ) język XAML jest używany w innych narzędziach Expression Design ; Expression Blend ; Kaxaml
6
www.kaxaml.com
7
aplikacje WPF mogą nie korzystać z XAML // 1 - przybornik + właściwości // 2 - C# System.Windows.Controls.Button btn = new Button(); btn.Content = "Duś"; // 3 - XAML // lub Duś // XAML udostępnia podzbiór możliwości C# NewButton
8
rozmieszczanie elementów na formie panele ( tylko jeden w danym oknie, ale można zagnieżdżać ) – Canvas // bez narzuconego układu, elementy // pozycjonowane dowolnie względem panelu // Width,Height : Auto // Alignments : Stretch całe okno..... // definicje elementów CanvasPanel
9
– DockPanel // rozmieszczenie przy krawędziach Lewy1 Lewy2 Góra1 Góra2 Dół1 Prawy1 DockPanel
10
– Grid // układ tabelaryczny, domyślny.................. // Margin gdy nie ma wypełnić całego pola GridPanel
11
– StackPanel// układ stosowy Button 1 Button 2 // Width, Height Auto // Alignments Stretch // adaptacja szerokości elementów // między MinWidth a MaxWidth StackPanel
12
– WrapPanel// stos z przewijaniem........ // Width, Height Auto // Alignments Stretch WrapPanel
13
menu, przyciski narzędzi, status..............
14
..............
15
// private void AlfaME(object sender, MouseEventArgs e) { StatText.Text = "Alfa"; } MenuToolbarStatus
16
elementy sterujące Button, Ellipse, Expander Slider Lists FlowDocument TabControl ButElipExpa Przesuwka Lista F_Dokument Zakładki
17
wiązanie elementów sterujących // // Wiąz
18
style System.Window.Style // klasa stylu // dodać do klasy Application // styl nazwany <Style x:Key ="BigGreenButton " TargetType="Button">........
19
// dodać do klasy Window <Button x:Name="btnTestButton" Content="Jestem Stylowy" Cursor="Help" Style="{StaticResource BigGreenButton}" Width="250" />
20
// style anonimowe, wyzwalacze..... <Trigger Property = "IsFocused" Value = "True"> <Setter Property = "Background " Value = "Yellow"/> Styles
21
zasoby logiczne statyczne i dynamiczne // dodać plik zasobów ( BGB.xaml ) // Add/Resource Dictionary.....
22
// uzupełnić klasę Application // utworzyć element stosując Background= // nie można zmienić zasobu "{StaticResource BackgroundGradientBrush}" // lub Background= // można zmienić zasób "{DynamicResource BackgroundGradientBrush}" StatDynRes
23
zasoby graficzne włączane do pakietu SolutionExplorer / ProjectName / AddFolder Folder / Add Existing Item // doda ć pliki.jpg // // List images = new List (); images.Add(new BitmapImage( new Uri(@"/Images/A.jpg", UriKind.Relative))); int currImage = 0; // imageHolder.Source = images[currImage++]; GraphRes
24
polecenia standardowe // działają od razu <TextBox Name= " TextData " AcceptsReturn ="True" VerticalScrollBarVisibility="Auto " HorizontalScrollBarVisibility="Auto">
25
// dodać powiązania i obsługę <CommandBinding Command="ApplicationCommands.Open" Executed="OpenCmdExecuted" CanExecute="OpenCmdCanExecute"/>......
26
// dodać System.IO, Microsoft.Win32 private void OpenCmdCanExecute( object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = true; } // private void OpenCmdExecuted( object sender, ExecutedRoutedEventArgs e) { OpenFileDialog openDlg = new OpenFileDialog(); if (openDlg.ShowDialog() == true) { string dataFromFile = File.ReadAllText(openDlg.FileName); TextData.Text = dataFromFile; }} PoleStand
27
generowanie obiektów graficznych – kształty ( Windows.Shapes ) proste figury 2D z interakcją – rysowanie i geometrie ( Windows.Media.Drawing ) bardziej złożona grafika raczej bez interakcji – obiekty wizualne ( Windows.Media.Visual ) przetwarzanie dużych ilości danych graficznych ( tylko C# )
28
Pędzle i pióra DrawingBrush, ImageBrush, LinearGradientBrush, RadialGradientBrush, SolidColorBrush, Pen // //
29
Shapes : Ellipse, Rectangle, Line, Polygon, Polyline, Path // Shape shapeToRender = new Line() { Stroke = Brushes.Blue, StrokeThickness = 10, X1 = 0, X2 = 50, Y1 = 0, Y2 = 50, StrokeStartLineCap = PenLineCap.Triangle, StrokeEndLineCap = PenLineCap.Round } Figury
30
Path set of Geometry Objects : LineGeometry, RectangleGeometry, EllipseGeometry,... <EllipseGeometry Center = "75,70" RadiusX = "30" RadiusY = "30" />
31
<BezierSegment Point1="100,0" Point3="300,100"/>..... // <Path Grid.Row="1" Stroke="Black" StrokeThickness="3" Data="M 10,75 C 70,15 250,270 300,175 H 240" /> // M – start, C – Bezier, H – linia pozioma,... Ścieżka
32
Transformacje MatrixTransform, RotateTransform, ScaleTransform, SkewTransform, TranslateTransform ( move ) Trans
33
Grupowanie i łączenie geometrii // // NonZero // // Intersect, Xor, Exclude DrawGeom
35
Rysowanie geometria + pędzel + pióro... // custom pen // custom brush... Draw
36
Obiekty wizualne i efekty DrawingVisual visual = new DrawingVisual(); DrawingContext dc = visual.RenderOpen(); // dc.DrawLine(), dc.DrawRectangle(), // dc.DrawRoundedRectangle(), dc.DrawText(), // dc.DrawEllipse() dc.Close(); // public class DrawingCanvas : Panel { private List visuals = new List (); public void AddVisual(Visual visual) { visuals.Add(visual); base.AddVisualChild(visual); base.AddLogicalChild(visual); } }
37
Blur DropShadow Basic dropshadow
38
DropShadow public class CustomEffect : ShaderEffect { public CustomEffect() { Uri pixelShaderUri = new Uri("Effect.ps", UriKind.Relative); PixelShader = new PixelShader(); PixelShader.UriSource = pixelShaderUri; } } VisusEfe
39
animacja using System.Windows.Media.Animation; DataTypeAnimation ByteAnimation, ColorAnimation, DoubleAnimation, In32Animation,... DataTypeAnimationUsingKeyFrames StringAnimationUsingKeyFrames, DoubleAnimationUsingKeyFrames, PointAnimationUsingKeyFrames,... DataTypeAnimationUsingPath DoubleAnimationUsingPath, PointAnimationUsingPath,... Ani_1 Ani_2
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.