|
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
|
Übersetzung
Original
|
Übersicht über das WPF-Grafikrendering
Dieses Thema enthält folgende Abschnitte.
-
Ausgabeanzeige: Rendern des beibehaltenen, serialisierten Zeichnungsinhalts eines visuellen Objekts. -
Transformationen: Ausführen von Transformationen für ein visuelles Element. -
Clipping: Bereitstellen von Clippingbereichunterstützung für ein visuelles Objekt. -
Treffertests: Bestimmen, ob eine Koordinate oder eine Geometrie innerhalb der Grenzen eines visuellen Objekts enthalten ist. -
Berechnungen für umgebende Felder: Bestimmen des umgebenden Rechtecks eines visuellen Objekts.
-
Ereignisbehandlung -
Layout -
Stile -
Datenbindung -
Globalisierung
DrawingVisual-Klasse
Viewport3DVisual-Klasse
ContainerVisual-Klasse
Zeichnungsinhalt in visuellen Objekten
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Zeichnungsinhalt auf der Visual-Ebene
// Create a DrawingVisual that contains a rectangle. private DrawingVisual CreateDrawingVisualRectangle() { DrawingVisual drawingVisual = new DrawingVisual(); // Retrieve the DrawingContext in order to create new drawing content. DrawingContext drawingContext = drawingVisual.RenderOpen(); // Create a rectangle and draw it in the DrawingContext. Rect rect = new Rect(new System.Windows.Point(160, 100), new System.Windows.Size(320, 80)); drawingContext.DrawRectangle(System.Windows.Media.Brushes.LightBlue, (System.Windows.Media.Pen)null, rect); // Persist the drawing content. drawingContext.Close(); return drawingVisual; }
Auflisten von Zeichnungsinhalt auf der Visual-Ebene
Hinweis
|
|---|
|
|
public void RetrieveDrawing(Visual v) { DrawingGroup dGroup = VisualTreeHelper.GetDrawing(v); EnumDrawingGroup(dGroup); } // Enumerate the drawings in the DrawingGroup. public void EnumDrawingGroup(DrawingGroup drawingGroup) { DrawingCollection dc = drawingGroup.Children; // Enumerate the drawings in the DrawingCollection. foreach (Drawing drawing in dc) { // If the drawing is a DrawingGroup, call the function recursively. if (drawing.GetType() == typeof(DrawingGroup)) { EnumDrawingGroup((DrawingGroup)drawing); } else if (drawing.GetType() == typeof(GeometryDrawing)) { // Perform action based on drawing type. } else if (drawing.GetType() == typeof(ImageDrawing)) { // Perform action based on drawing type. } else if (drawing.GetType() == typeof(GlyphRunDrawing)) { // Perform action based on drawing type. } else if (drawing.GetType() == typeof(VideoDrawing)) { // Perform action based on drawing type. } } }
<Button Click="OnClick">OK</Button>
Steuerelementvorlagen
<Button Click="OnClick"> <Image Source="images\greenlight.jpg"></Image> </Button>
-
Die Reihenfolge in der Hierarchie stellt die Renderingreihenfolge der Zeichnungsinformationen dar. Vom visuellen Stammelement werden untergeordnete Elemente von links nach rechts und von oben nach unten traversiert. Wenn ein Element über visuelle untergeordnete Elemente verfügt, werden sie vor den Geschwistern des Elements traversiert. -
Elemente in der Hierarchie, die keine Blattknoten sind, z. B. ContentPresenter, werden für die Aufnahme von untergeordneten Elementen verwendet. Sie enthalten keine Anweisungslisten. -
Wenn ein visuelles Element sowohl eine Anweisungsliste für Vektorgrafiken als auch untergeordnete visuelle Elemente enthält, wird die Anweisungsliste im übergeordneten visuellen Element vor Zeichnungen in einem der untergeordneten visuellen Objekte gerendert. -
Die Elemente in der Anweisungsliste für Vektorgrafiken werden von links nach rechts gerendert.
<StackPanel> <Label>User name:</Label> <TextBox /> <Button Click="OnClick">OK</Button> </StackPanel>
Renderingreihenfolge
Visuelles Stammelement
Beziehung zur logischen Struktur
<DockPanel> <ListBox> <ListBoxItem>Dog</ListBoxItem> <ListBoxItem>Cat</ListBoxItem> <ListBoxItem>Fish</ListBoxItem> </ListBox> <Button Click="OnClick">OK</Button> </DockPanel>
Anzeigen der visuellen Struktur mit XamlPad
Erstellen von visuellen Leistungsprofilen
Grafiken mit Speichermodus
Intelligentes Neuzeichnen
Vektorgrafiken
<Path Data="M10,100 C 60,0 100,200 150,100 z" Fill="{StaticResource linearGradientBackground}" Stroke="Black" StrokeThickness="2" /> <Path Data="M10,100 C 60,0 100,200 150,100 z" Fill="{StaticResource linearGradientBackground}" Stroke="Black" StrokeThickness="2" > <Path.RenderTransform> <ScaleTransform ScaleX="3.0" ScaleY="3.0" /> </Path.RenderTransform> </Path>
Informationen über Auflösung und geräteunabhängige Grafiken
Treffertests
Auflisten der visuellen Struktur
// Enumerate all the descendants of the visual object. static public void EnumVisual(Visual myVisual) { for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i++) { // Retrieve child visual at specified index value. Visual childVisual = (Visual)VisualTreeHelper.GetChild(myVisual, i); // Do processing of the child visual object. // Enumerate children of the child visual object. EnumVisual(childVisual); } }
Hinweis