Laden...

DrawingImage selbst malen?

Erstellt von wpf23 vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.904 Views
W
wpf23 Themenstarter:in
185 Beiträge seit 2009
vor 13 Jahren
DrawingImage selbst malen?

Hi,

ich habe ein DrawingImage und möchte dieses Selbst in meinem eigenen Control malen.

Wie kann ich das tun?

Ich weiß man kann Image Control verwenden und Source jedoch schaffe ich es nicht mit erweitern dieser Klasse meine Anforderungen zu erfüllen.

Viele Grüße

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo wpf23,

in WPF braucht man in der Regel nicht selbst irgendwas zu Zeichnen, da man alles mit Templates / Styles usw. anpassen kann bis zum Abwinken.

Was genau willst du denn erreichen dass du das ImageControl ableiten willst, bzw. selbst Zeichen willst?

Gruss
Michael

W
wpf23 Themenstarter:in
185 Beiträge seit 2009
vor 13 Jahren

Ich kenne die Möglichkeite von WPF...

Naja ich machs kurz ich habe ein DrawingImage und möchte in meinem Control z.B. sagen das sich diese Farbe ändert...

Da das DrawingImage jedoch an das Control gebunden ist kann ich nicht wegen DynamicRes dieses DrawingImage verändern also möchte ich flexibel sein und ein eigenes Control bauen und dort eine Property zum binden und intern wird eine Kopie für meine Anforderungen verwendet...

Sobald sich die Source Property ändert wird alles neu geladen...

Also wie kann ich zeichnen?

6.862 Beiträge seit 2003
vor 13 Jahren

Hallo,

ich versteh auch nach der ausführlicheren Erklärung nicht was du möchtest.

Baka wa shinanakya naoranai.

Mein XING Profil.

W
wpf23 Themenstarter:in
185 Beiträge seit 2009
vor 13 Jahren

Zeichnen 😄

Man kann doch irgendwie ein DrawingImage zeichen oder nicht?

Welche MEthode muss ich überschreiben zum zeichnen?

W
wpf23 Themenstarter:in
185 Beiträge seit 2009
vor 13 Jahren

Ok ich erkläre es anderst:

Ich habe ein Bild das in einem ResourceDic liegt.

Ich möchte nun auf einem Control sagen benutze dieses Bild und ändere Farbe XZY in ABC.

Nun lege ich fünf dieser Controls an und binde an die Resource im RD.

Bei zwei der Objekte schlate ich das "Farbenändern" an.

Nun soll sich wirklich nur bei diesen 3 Controls die Farbe ändern...

Es darf nicht sein das sich die Farbe im ResourceDic ändern... durch Binding mit DynamicResource ist dies jedoch der Fall...

6.862 Beiträge seit 2003
vor 13 Jahren

Okay, jetzt versteh ich das 😃

Das Verhalten beim Binding ist ja normal. Jetzt die Frage: Soll die Farbänderung permanent sein (sprich du möchstest das geänderte Bild speichern) oder nur temporär.

Für ersten Fall kannst du ja problemlos eine Kopie erstellen, ist ja ein Freezable welches du clonen kannst. Im zweiten Fall würde ich das Bild ganz in Ruhe lassen und einfach beim bildanzeigenden Control einen entsprechenden Effect zuschalten der die Farbänderung übernimmt.

Baka wa shinanakya naoranai.

Mein XING Profil.

W
wpf23 Themenstarter:in
185 Beiträge seit 2009
vor 13 Jahren

Ok.

Das Bild ist ein DrawingImage Objekt.

Ich wollte einfach über alle Elemente laufen und die Farbe halt ändern also auf einer Kopie!. Die Farbe bekomme ich weil das Control über eine FarbProperty verfügt.

Irgendwie kann ich jedoch nicht über den logischen Tree laufen.


        private void TravelLogicalTree(object current)
        {

            DependencyObject obj = current as DependencyObject;

            Debug.WriteLine(obj.ToString());
      
            if (obj != null)
            {
                foreach (object logicalChild in LogicalTreeHelper.GetChildren(obj))
                    TravelLogicalTree(logicalChild);

            }

        }

Der visuelle Tree kann ich ebenfalls nicht mit dem Tree Helper durchlaufen da dieser nur Visual oder Visual3d verwendet und DrawingImage ist keines von beiden...

Hier mal ein Aufbau:


<DrawingImage x:Key="iconname">
		<DrawingImage.Drawing>
      <DrawingGroup ClipGeometry="F1 M 0,0L 172,0L 172,172L 0,172L 0,0">
        <DrawingGroup.Children>
          <GeometryDrawing Brush="#1A0096FF" Geometry="... " />
          <GeometryDrawing Brush="#4DFFFFFF" Geom....

W
wpf23 Themenstarter:in
185 Beiträge seit 2009
vor 13 Jahren

So sehr ich WPF liebe aber am einfachsten wäre es nun wenn ich alles von Hand zeichnen könnte 😃