WPF - Grafica 2D
WPF fornisce un'ampia gamma di grafica 2D che può essere migliorata in base ai requisiti dell'applicazione. WPF supporta gli oggetti Drawing e Shape utilizzati per disegnare il contenuto grafico.
Forme e disegno
La classe Shape è derivata dalla classe FrameworkElement, gli oggetti Shape possono essere utilizzati all'interno dei pannelli e nella maggior parte dei controlli.
WPF fornisce alcuni oggetti forma di base derivati dalla classe Shape come Ellipse, Line, Path, Polygon, Polyline e Rectangle.
Gli oggetti di disegno, d'altra parte, non derivano dalla classe FrameworkElement e forniscono un'implementazione più leggera.
Gli oggetti di disegno sono più semplici rispetto agli oggetti Forma. Hanno anche caratteristiche di prestazione migliori.
Esempio
Facciamo un semplice esempio per capire come utilizzare oggetti di diverse forme.
Crea un nuovo progetto WPF con il nome WPF2DGraphics.
Il codice seguente crea diversi tipi di forme.
<Window x:Class = "WPF2DGraphics.MainWindow"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local = "clr-namespace:WPF2DGraphics"
xmlns:PresentationOptions = "http://schemas.microsoft.com/winfx/2006/xaml/present ation/options"
mc:Ignorable = "PresentationOptions" Title = "MainWindow" Height = "400" Width = "604">
<StackPanel>
<Ellipse Width = "100" Height = "60" Name = "sample" Margin = "10">
<Ellipse.Fill>
<RadialGradientBrush>
<GradientStop Offset = "0" Color = "AliceBlue"/>
<GradientStop Offset = "1" Color = "Gray"/>
<GradientStop Offset = "2" Color = "Red"/>
</RadialGradientBrush>
</Ellipse.Fill>
</Ellipse>
<Path Stroke = "Red" StrokeThickness = "5" Data = "M 10,70 L 200,70"
Height = "42.085" Stretch = "Fill" Margin = "140.598,0,146.581,0" />
<Path Stroke = "BlueViolet" StrokeThickness = "5" Data = "M 20,100 A 100,56 42 1 0 200,10"
Height = "81.316" Stretch = "Fill" Margin = "236.325,0,211.396,0" />
<Path Fill = "LightCoral" Margin = "201.424,0,236.325,0"
Stretch = "Fill" Height = "124.929">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint = "50,0" IsClosed = "True">
<LineSegment Point = "100,50"/>
<LineSegment Point = "50,100"/>
<LineSegment Point = "0,50"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
</StackPanel>
</Window>
Quando compili ed esegui il codice sopra, produrrà un'ellisse, una linea retta, un arco e un poligono.
Esempio
Diamo un'occhiata a un altro esempio che mostra come dipingere un'area con un disegno.
Crea un nuovo progetto WPF con il nome WPF2DGraphics1.
Il codice XAML seguente mostra come dipingere in modo diverso con il disegno di immagini.
<Window x:Class = "WPF2DGraphics1.MainWindow"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
xmlns:PresentationOptions = "http://schemas.microsoft.com/winfx/2006/xaml/present ation/options"
xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable = "PresentationOptions"
xmlns:local = "clr-namespace:WPF2DGraphics1" Title = "MainWindow" Height = "350" Width = "604">
<Grid>
<Border BorderBrush = "Gray" BorderThickness = "1"
HorizontalAlignment = "Left" VerticalAlignment = "Top"
Margin = "20">
<Image Stretch = "None">
<Image.Source>
<DrawingImage PresentationOptions:Freeze = "True">
<DrawingImage.Drawing>
<DrawingGroup>
<ImageDrawing Rect = "300,100,300,180" ImageSource = "Images\DSC_0104.JPG"/>
<ImageDrawing Rect = "0,100,250,100" ImageSource = "Images\DSC_0104.JPG"/>
<ImageDrawing Rect = "150,0,25,25" ImageSource = "Images\DSC_0104.JPG"/>
<ImageDrawing Rect = "0,0,75,75" ImageSource = "Images\DSC_0104.JPG"/>
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
</Border>
</Grid>
</Window>
Quando esegui la tua applicazione, produrrà il seguente output:
Ti consigliamo di eseguire il codice sopra e provare più forme e disegni 2D.