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.