WPF -> Image, PictureBox, ... Zeichnen in WPF

13/07/2008 - 16:01 von Stampede | Report spam
Hallo,
ich bin neu bei WPF, habe jedoch viel Erfahrung mit .NET und C# bis .NET2.0.

Ich schreibe an einem Program, welches größere Datenmengen graphisch
aufbereitet. In .NET2.0 lief das mit einer PictureBox ja sehr gut, aber in
WPF komme ich mit dem Image und den Drawings irgendwie nicht zurecht. Die
Beispiele für fertige Bilder oder auch geometrische Formen sind ja sehr nett,
jedoch muss ich bei einer Flàche von ca. 480 * 50 Pixel, jedes Pixel in einer
bestimmten Farbe bemalen.

Hat jemand eine Idee bzw. einen Hinweis, wie ich das (wenn möglich halbwegs
performant) erledigen kann?

Und weiters habe ich noch eine Frage: Theoretisch müsste ich doch mittels
der DrawingGroup soetwas wie Layer realisieren können oder? Das ist jetzt ein
Schuss ins Blaue, aber ich wàre sehr für eine Hilfestellung dankbar. Ich muss
nàmlich, wenn das "Hauptbild" (also die 480*50px) gemalt sind, noch weitere
Schichten darüber malen, die sich aber veràndern können. Da das "Hauptbild"
aber gleich bleibt, würde ich selbiges gerne nur einmal zeichnen.

Ich hoffe wirklich, dass mir hier jemand weiterhelfen kann, da ich langsam
verzweifle.

Danke vielmals im Vorraus!

Florian
 

Lesen sie die antworten

#1 Frank Dzaebel
14/07/2008 - 08:13 | Warnen spam
Hallo Florian,

pass mal Deinen Usernamen ggf. an.

jedoch muss ich bei einer Flàche von ca. 480 * 50 Pixel, jedes
Pixel in einer bestimmten Farbe bemalen.
Hat jemand eine Idee bzw. einen Hinweis, wie ich das (wenn
möglich halbwegs performant) erledigen kann?



Man zeichnet in WPF normal unabhàngig von Pixeln des
Ausgabe-Geràtes, also vektororientiert.
Für Dinge wie DrawLine etc. wàre ggf. ein
[SnapsToDevicePixels = true] eine Möglichkeit:
http://forums.msdn.microsoft.com/en...109965bdb/
Ggf. erstellt man ja auch eine Bitmap aus einem DrawingContext, die
man dann z.B. über ein Image darstellen làsst:

[Gewusst wie: Erstellen einer Bitmap mit einem visuellen Element]
http://msdn.microsoft.com/de-de/lib...69775.aspx





Und weiters habe ich noch eine Frage: Theoretisch müsste ich doch mittels
der DrawingGroup soetwas wie Layer realisieren können oder?



Wenn Du Schichten übereinander malen willst/musst, dann kannst
Du doch z.B. einfach ein Canvas-Layoutelement nehmen
und die Positionen der einzelen Layer ggf. überlappend machen.
Das *letzte* Element im XAML wird auch als letzte gezeichnet,
überdeckt also die Elemente davor.
Für Opacity/OpacityMask also Durchsichtigkeit der Layer ggf.:

[Übersicht über das Grafikrendering in Windows Presentation Foundation]
http://msdn.microsoft.com/de-de/lib...48373.aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen