Pierwsz post wprowadzający do świada grafiki 2D i 3D w WPF. Tak, tak świata, gdyż w tej kwestii sporo zostało zmienione w stosunku do WinForms. Zaczniemy od 2D. Co zatem nowego daje nam WPF?
Drawings
Reprezentują obrazek 2D, ale ponieważ dziedziczą z klasy Animatable, można do nich DataBindować i animować je. Jakie mamy klasy dostępne?
-
GeometryDrawing – pozwala połączyć obiekt klasy Geometry (więcej o tym poźniej) z obiektem Brush oraz Pen.
<Button Content=”Przycisk”>
<Button.Background>
<DrawingBrush>
<DrawingBrush.Drawing>
<GeometryDrawing>
<GeometryDrawing.Geometry>
<EllipseGeometry RadiusX=”100″ RadiusY=”100″ />
GeometryDrawing.Geometry>
<GeometryDrawing.Pen>
<Pen Thickness=”5″ Brush=”Black” />
GeometryDrawing.Pen>
GeometryDrawing>
DrawingBrush.Drawing>
DrawingBrush>
Button.Background>
Button>
-
ImageDrawing – pozwala na użycie obrazka.
<Button Content=”Przycisk”>
<Button.Background>
<ImageBrush>
<ImageBrush.ImageSource>clouds_XSmall.jpgImageBrush.ImageSource>
ImageBrush>
Button.Background>
Button>
-
VideoDrawing – podobnie jak powyżej z tą różnicą, że pokazujemy wideo.
<MediaElement x:Name=”video” Source=”short.wmv” />
<Button>
<Button.Background>
<VisualBrush Visual=”{Binding ElementName=video}”>
VisualBrush>
Button.Background>
Button>
Tak, to jest wideo i bez komentarzy proszę 😛 -
GlyphRunDrawing – pozwala na narysowanie obiektu klasy GlyphRun (typografia). Ktoś potrafi tego użyć? Dostaję wyjątek, iż nie można utworzyć GlyphTypeface..
-
DrawingGroup – pozwala zebrać powyższe elementy w grupę i dodatkowo nią sterować.
Gdzie tego użyć?
Widzimy, już z poprzednich przykładów, że elementy te trzeba użyć w konkretnych pojemnikach. Wyróżniamy 3:
-
DrawingImage – może być użyte wewnątrz obiektu Image
-
DrawingBrush – może być zastosowane w takich miejscach jak Foreground, Background itp.
-
DrawingVisual – gdy potrzebujemy czegoś wizualnego (będzie omówione w dalszych częściach).
Taka krótka rozgrzewka przed przyjrzeniem się dalej elementom 2D w WPF a będą to Gemoetries.
Founder of Octal Solutions a .NET software house.
Passionate dev, blogger, occasionally speaker, one of the leaders of Wroc.NET user group. Microsoft MVP. Podcaster – Ostrapila.pl