Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort zur 5. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Klassendesign
4 Vererbung, Polymorphie und Interfaces
5 Delegates und Ereignisse
6 Weitere .NET-Datentypen
7 Weitere Möglichkeiten von C#
8 Auflistungsklassen (Collections)
9 Fehlerbehandlung und Debugging
10 LINQ to Objects
11 Multithreading und die Task Parallel Library (TPL)
12 Arbeiten mit Dateien und Streams
13 Binäre Serialisierung
14 Einige wichtige .NET-Klassen
15 Projektmanagement und Visual Studio 2010
16 XML
17 WPF – Die Grundlagen
18 WPF-Containerelemente
19 WPF-Steuerelemente
20 Konzepte der WPF
21 Datenbindung
22 2D-Grafik
23 ADO.NET – verbindungsorientierte Objekte
24 ADO.NET – Das Command-Objekt
25 ADO.NET – Der SqlDataAdapter
26 ADO.NET – Daten im lokalen Speicher
27 ADO.NET – Aktualisieren der Datenbank
28 Stark typisierte DataSets
29 LINQ to SQL
30 Weitergabe von Anwendungen
Stichwort

Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Visual C# 2010 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2010

Visual C# 2010
geb., mit DVD
1295 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1552-7
Pfeil 22 2D-Grafik
Pfeil 22.1 Shapes
Pfeil 22.1.1 Allgemeine Beschreibung
Pfeil 22.1.2 Line-Elemente
Pfeil 22.1.3 Ellipse- und Rectangle-Elemente
Pfeil 22.1.4 Polygon- und Polyline-Elemente
Pfeil 22.1.5 Darstellung der Linien
Pfeil 22.2 Path-Elemente
Pfeil 22.2.1 GeometryGroup
Pfeil 22.2.2 CombinedGeometry
Pfeil 22.2.3 PathGeometry
Pfeil 22.3 Brush-Objekte
Pfeil 22.3.1 SolidColorBrush
Pfeil 22.3.2 LinearGradientBrush
Pfeil 22.3.3 RadialGradientBrush
Pfeil 22.3.4 TileBrush
Pfeil 22.3.5 ImageBrush
Pfeil 22.3.6 VisualBrush
Pfeil 22.3.7 DrawingBrush

22 2D-Grafik

Langsam nähern wir uns dem Ende des WPF-Teils dieses Buches. In diesem letzten Kapitel zur WPF möchte ich Ihnen einen kurzen Einblick in die grafischen Fähigkeiten der WPF geben. Mehr noch als in den anderen Kapiteln zuvor gilt hier, dass wir uns nur auf einen oberflächlichen Streifzug durch die 2D-Grafik begeben. Auf die Betrachtung der 3D-Fähigkeiten und auch auf das Erzeugen von Animationen müssen wir leider aus Platzgründen verzichten. Eigentlich schade, denn insbesondere diese Themen bieten viele reizvolle Effekte. Allerdings wären für diese Themen bei intensiver Behandlung auch ein paar hundert Seiten mehr erforderlich. So beschränken wir uns in diesem Buch auf die Grundzüge der 2D-Grafik, was immerhin erahnen lässt, welche Fähigkeiten, jetzt rein aus grafischer Sicht, in WPF stecken.


Galileo Computing - Zum Seitenanfang

22.1 Shapes Zur nächsten ÜberschriftZur vorigen Überschrift


Galileo Computing - Zum Seitenanfang

22.1.1 Allgemeine Beschreibung Zur nächsten ÜberschriftZur vorigen Überschrift

Die einfach zu verwendenden Shapes stellen grafische Elemente dar, die sich auf der Oberfläche platzieren lassen. Allen gemeinsam ist die Basisklasse Shape, von der es sechs Ableitungen gibt. Sie haben also eine gemeinsame Grundfunktionalität. Shape selbst leitet sich aus UIElement ab, so wie auch beispielsweise der Button oder die TextBox. Somit können Sie Shapes genauso wie diese Steuerelemente behandeln: Sie zeichnen sich selbst und reagieren sogar auf Maus- und Tastatureingaben.

Eine Besonderheit sollte nicht unerwähnt bleiben. Shapes können keine anderen Elemente aufnehmen, wie es üblicherweise bei den Steuerelementen der Fall ist. Shapes eignen sich, um durch die Kombination mehrerer Shapes komplexere grafische Gebilde zu schaffen. Dazu sollten Sie einen Canvas-Container benutzen, da sich UI-Elemente darin beliebig positionieren lassen.

Als Basisklasse stellt Shape einige spezifische Eigenschaften bereit. Dazu gehört beispielsweise die Eigenschaft Fill, mit der ein Füllmuster angegeben werden kann. Füllmuster werden durch die Klasse Brush beschrieben, der wir uns später ebenfalls noch zuwenden werden. Zur Anpassung an den Umgebungsbereich dient die Eigenschaft Stretch. Zudem werden mit mehreren StrokeXxx-Eigenschaften Möglichkeiten zur Definition von Rahmen, Linien und Linienzügen angeboten.

Die von Shape abgeleiteten Klassen können Sie Tabelle 22.1 entnehmen.


Tabelle 22.1 Die von Shape abgeleiteten Klassen

Klasse Beschreibung
Ellipse

Beschreibt Ellipsen und Kreise.

Line

Beschreibt eine durch Koordinaten definierte Linie.

Path

Beschreibt eine komplexe Struktur, die aus Linien, Bögen und Rechtecken besteht.

Polygon

Beschreibt eine Reihe von Koordinatenpunkten. Der letzte Koordinatenpunkt wird mit dem ersten verbunden, sodass eine geschlossene Fläche entsteht.

Polyline

Beschreibt eine geometrische Struktur, bei der der letzte Punkt nicht mit dem ersten verbunden wird, wie das bei Polygon der Fall ist.

Rectangle

Beschreibt ein Rechteck.



Galileo Computing - Zum Seitenanfang

22.1.2 Line-Elemente Zur nächsten ÜberschriftZur vorigen Überschrift

Linien werden über zwei Punkte definiert. Dafür dienen die Eigenschaften X1, Y1 und X2, Y2. X1 und Y1 beschreiben den Startpunkt der Linie, wobei als Ursprungspunkt der linke obere Eckpunkt des Containers dient. Die Farbe der Linie wird durch Stroke beschrieben, die Zeichenbreite durch StrokeThickness. Setzen Sie zum Zeichnen die Klasse Pen ein, können Sie die Charakteristik der Linien auch frei gestalten. Beispielsweise ließen sich damit gestrichelte Linien darstellen, oder Sie könnten das Linienende abrunden:


<Canvas>
   <Line X1="10" X2="100" Y1="110" Y2="40" 
         Stroke="Blue" StrokeThickness="4" />
   <Line X1="0" X2="120" Y1="0" Y2="100" 
         Stroke="Red" StrokeThickness="2" />
</Canvas>

Abbildung 22.1 Liniendarstellung


Galileo Computing - Zum Seitenanfang

22.1.3 Ellipse- und Rectangle-Elemente Zur nächsten ÜberschriftZur vorigen Überschrift

Im XAML-Code sind sich Rectangle und Ellipse sehr ähnlich. Über Height und Width wird die Ausdehnung der beiden grafischen Elemente beschrieben. Auch hier ist der Bezugsstartpunkt der linke obere Eckpunkt des umgebenden Containers. Eine Besonderheit hat Rectangle zu bieten. Mit RadiusX und RadiusY können Sie abgerundete Ecken erzeugen. Im Gegensatz zu Line macht die Eigenschaft Fill hier Sinn, da es sich um flächenbeschreibende grafische Figuren handelt.


<Canvas>
  <Rectangle Width="120" Height="40" Stroke="Blue" 
             StrokeThickness="2" Fill="AntiqueWhite"
             RadiusX="10" RadiusY="30" />        
  <Ellipse Width="100" Height="100" Stroke="Black" StrokeThickness="2" />
</Canvas>

Abbildung 22.2 Rechteck und Ellipe


Galileo Computing - Zum Seitenanfang

22.1.4 Polygon- und Polyline-Elemente Zur nächsten ÜberschriftZur vorigen Überschrift

Zum Zeichnen eines Polygon- oder Polyline-Objekts werden die einzelnen Punkte durch den Typ Point beschrieben und einer PointCollection übergeben. Diese wird mit der Eigenschaft Points angesprochen. Bei einem Polygon werden der erste und der letzte Punkt automatisch miteinander verbunden, sodass daraus eine geschlossene Fläche resultiert.

In XAML werden die Punkte als Wertepaare angegeben. Jedes Wertepaar kann durch ein Komma getrennt werden, aber das ist optional. Somit sind die beiden folgenden XAML-Ausdrücke identisch:


<Polyline Points="0 0 20 30 40 70 60 30" Stroke="Black" />
<Polyline Points="0,0 20,30 40,70 60,30" Stroke="Black" />


Galileo Computing - Zum Seitenanfang

22.1.5 Darstellung der Linien topZur vorigen Überschrift

Eine Vielzahl von Eigenschaften ermöglicht es, die Darstellung der Linien von Shape-Objekten zu beeinflussen. Stroke und StrokeThickness haben wir bereits benutzt. In Tabelle 22.2 sind einige der beeinflussenden Eigenschaften aufgeführt.


Tabelle 22.2 Eigenschaften zur Darstellung der Linien

Eigenschaft Beschreibung
Stroke

Gibt das Füllmuster an. Die Eigenschaft erwartet ein Brush-Objekt. Im einfachsten Fall geben Sie hier nur die Farbe an.

StrokeDashArray

Gibt das Strichmuster der Linie an.

StrokeDashCap

Definiert die Form der Linienenden innerhalb der Linie bei Verwendung von Mustern. Diese Eigenschaft ist vom Typ der Enumeration PenLineCap.

StrokeDashOffset

Beschreibt den Versatz, der beim Zeichnen einer Strich-Punkt-Linie verwendet wird.

StrokeEndLineCap

Definiert die Form des Linienendes und ist vom Typ der Aufzählung PenLineCap.

StrokeLineJoin

Definiert, wie zwei Linienenden miteinander verbunden werden. Die Eigenschaft ist vom Typ der Enumeration PenLineJoin.

StrokeMiterLimit

Legt fest, wie zwei Linienenden beim Aufeinandertreffen ineinander übergehen.

StrokeStartLineCap

Definiert die Form des Linienanfangs und ist vom Typ der Aufzählung PenLineCap.

StrokeThickness

Legt die Zeichenbreite fest.


Linienenden werden durch einen Wert der Enumeration PenLineCap beschrieben. Diese Aufzählung beschreibt die Werte Flat, Round, Square und Triangle. Das dürfte keiner weiteren Erläuterung bedürfen.

Erklärungsbedürftig sind aber auf jeden Fall die beiden Eigenschaften StrokeDashArray und StrokeDashOffset. Beide gestatten die freie Definition der Linie mit Double-Werten. Die Double-Werte werden in einer Collection gelistet. Es wird immer ein Pärchen gebildet, bei dem die erste Zahl die Länge der Teillinie beschreibt und die zweite die Lücke zwischen zwei Linien. Dabei ist eine Besonderheit zu beachten: Die Werte werden immer mit der Linienbreite StrokeThickness multipliziert.

In Abbildung 22.3 sind drei Linien dargestellt, die einige der aufgeführten Eigenschaften nutzen. Die Ausgabe basiert auf dem folgenden XAML-Code:


<Canvas>
  <Line X1="10" X2="400" Y1="10" Y2="10" Stroke="Black" 
        StrokeThickness="10" 
        StrokeDashArray="2 3 2 3 2 3" StrokeStartLineCap="Square" 
        StrokeDashOffset="2" 
        StrokeDashCap="Round" />
  <Line X1="10" X2="400" Y1="30" Y2="30" Stroke="Blue" StrokeThickness="10" 
        StrokeDashArray="1 2 4 2" 
        StrokeDashCap="Triangle"/>
  <Line X1="10" X2="400" Y1="50" Y2="50" Stroke="Red" StrokeThickness="10" 
        StrokeDashArray="1 0.5 5 0.5"/>
</Canvas>

Abbildung 22.3 Verschiedene Linienmuster



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Visual C# 2010

Visual C# 2010
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: C++ Handbuch






 C++ Handbuch


Zum Katalog: C/C++






 C/C++


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2010
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern