Laden...

Rechteck in OnRender() von System.Controls.Image über Imagesource zeichnen

Erstellt von ByteDevil vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.604 Views
ByteDevil Themenstarter:in
132 Beiträge seit 2013
vor 7 Jahren
Rechteck in OnRender() von System.Controls.Image über Imagesource zeichnen

Hi liebe Community,

ich habe eine Klasse geschrieben die von System.Controls.Image erbt. Dort möchte ich in OnRender einen Rahmen mit der Maus zeichnen (der User soll etwas Selektieren können).

Soweit kein Problem, doch wird mein Rahmen unter dem Bild angezeigt was über die Eigenschaft "Source" zugewiesen wird. Kann ich diesem Control das Verhalten irgendwie abgewöhnen? Vielleicht gibt es eine Layerreihenfolge?
Google konnte mir leider nicht helfen 😕

Vielen Dank,
Bytedevil

709 Beiträge seit 2008
vor 7 Jahren

Hallo ByteDevil,
für die Umsetzung einer solchen Funktion kannst du mal nach Rubberband Adorner suchen.

ByteDevil Themenstarter:in
132 Beiträge seit 2013
vor 7 Jahren

Hallo pinki,

danke für den Hinweiß, aber ich finde hier nur wenige Links in denen es um ein Canvas geht. Kannst du mir vielleicht noch einen genaueren Tipp geben?
Am liebsten wäre mir natürlich eine Methode um die Zeichenreihenfolge des Image-Controlls zu verändern...

5.299 Beiträge seit 2008
vor 7 Jahren

vlt. hast du auch nur ein paar Anweisungen in deim Control in falscher Reihenfolge.
Mehr kann ich dazu nicht sagen, denn ich kenne die Anweisungen in deim Control ja nicht.

Der frühe Apfel fängt den Wurm.

S
248 Beiträge seit 2008
vor 7 Jahren

Hallo ByteDevil,

dieser Code zeichnet bei mir über das verwendete Bild:

    public class Test : Image
    {
        protected override void OnRender(DrawingContext dc)
        {
            base.OnRender(dc);
            var size = RenderSize;
            dc.DrawRectangle(Brushes.Red, null, new Rect(size.Width / 4, size.Height / 4, size.Width / 2, size.Height / 2));
        }
    }

Grüße
spooky

ByteDevil Themenstarter:in
132 Beiträge seit 2013
vor 7 Jahren

Oh Gott ich schäme mich gerade 😄

ErfinderDesRades & Spook ihr habt beide recht. Ich hab base.OnRender() erst nacht meinem Code aufgerufen und natürlich wird dann das Ganze über meinem Rahmen gezeichnet 😕

Ich danke euch 😃