Entwickler-Ecke
WPF / Silverlight - WPF Element dynamisch erstellen
matt951 - Fr 21.08.09 09:30
Titel: WPF Element dynamisch erstellen
hi
ich möchte bei einem doppelklick auf das aktuelle fenster einen kreis an der aktuellen mausposition erstellen.
dazu meine frage.
wie kann ich im quellcode von c# einen kreis auf der anzeige erzeugen?
diesen kreis sollte möchte ich auch anklicken können, sodas ein popup fenster aufgeht. Wie kann ich das realisieren?
wenn ihr nicht versteht was ich meine bzw mehr infos braucht, dann fragt bitte nach. ich bin noch ein anfänger ;)
ich programmiere mit Microsoft Visual c# 2008
matt951 - Mo 24.08.09 08:11
hat den niemand eine idee?
gruß
matt
Christian S. - Mo 24.08.09 08:31
Kannst Du einfach ein Objekt der Klasse Ellipse erzeugen? :gruebel:
matt951 - Mo 24.08.09 08:38
ja das schon.
aber wie füge ich das dann meinem window hinzu? das hat bei mir nicht geklappt.
habs mit mywindow.AddChild(ellipse) versucht. natürlcih vorher ellipse erstellt und höhe und breite festgelegt. muss ich da erst noch die position festlegen? wahrscheinlich schon. aber wie? hab da nicht gefunden
Christian S. - Mo 24.08.09 08:49
Das Window hat doch als Child-Element meist ein Grid. Dem würde ich das hinzufügen.
matt951 - Mo 24.08.09 09:16
ja aber wie denn?
bei mywindow.win1grid. gibts keine AddChildren(Object object).
sondern nur win1grid.Children.Add(ellipse);
aber da seh ich noch nichts. wahrscheinlcih fehlt noch die angabe der position. wie mach ich das? ich finde keine variable in der ich das angeben kann
Christian S. - Mo 24.08.09 09:32
Das hier funktioniert bei mir:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| private void button1_Click(object sender, RoutedEventArgs e) { var el = new Ellipse(); el.Width = 100; el.Height = 100; el.Stroke = new SolidColorBrush(Colors.Black);
theGrid.Children.Add(el); } |
Hast Du vielleicht weder Stroke noch Fill gesetzt?
Die Position der Ellipse bestimmst wie die jedes anderen Elements: HorizontalAlignment und VerticalAlignment setzen, anschließend den Margin.
matt951 - Mo 24.08.09 09:58
ja das wirds wohl gewesensein. jetzt hab ich stroke gesetzt und scho gehts ;) Danke
nochmal wegen der position.
mit HorizontalAlignment und VerticalAlignment kann ich doch nur sagen obs oben, unten, rechts oder links ist. stimmts?
ich wills aber an der aktuellen mausposition, dich ich scho gespeichert hab.
also ich muss nur noch den wert irdendwie zuweisen. aber wie??
Christian S. - Mo 24.08.09 10:12
matt951 hat folgendes geschrieben : |
mit HorizontalAlignment und VerticalAlignment kann ich doch nur sagen obs oben, unten, rechts oder links ist. stimmts?
ich wills aber an der aktuellen mausposition, dich ich scho gespeichert hab. |
Mein Satz ging nach den Alignment-Dingern ja auch noch weiter ;-)
matt951 - Mo 24.08.09 10:39
ja stimmt danke. es ist zwar etwas getrickst aber es geht ;)
naja fast. ich bekomm grad für meine mauposition ehr zufallswerte. und bei jedem durchlauf sinds die gleichen, bis ich das programm neustarte.
C#-Quelltext
1: 2: 3: 4: 5: 6:
| private void myWindow_MouseDoubleClick(object sender, MouseButtonEventArgs e) { xPos = e.GetPosition(this).X; yPos = e.GetPosition(this).Y; ... } |
geht das nciht so?
Moderiert von
Kha: C#-Tags hinzugefügt
Kha - Mo 24.08.09 22:26
matt951 hat folgendes geschrieben : |
| naja fast. ich bekomm grad für meine mauposition ehr zufallswerte. und bei jedem durchlauf sinds die gleichen, bis ich das programm neustarte. |
Sind die Punkte so positioniert oder hast du im Debugger die zwei Variablen inspiziert? Wie auch immer, der Fehler dürfte sich hinter dem "..." verstecken ;) .
PS: Keine großartige Verbesserung, aber statt Grid und Margin kannst du auch ein Canvas-Panel benutzen. Und am schönsten ist es, wenn man im Code überhaupt keine Elemente erzeugt, sondern das den DataTemplates überlasst, aber das hat noch Zeit ;) .
matt951 - Mi 26.08.09 07:01
Danke das funktioniert mittlwerweile
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!