![]() |
c# - Canvas
Servus,
hab ein kleines Problemchen mit einem Canvas in ner WPF. Hab schonr elativ viel ausprobiert jedoch bekomm ichs nicht hin in ein Canvas zu zeichnen ohne direkt in der Main class zu sein. ich poste einfach mal ein Beispiel Lg DerGecko in der main.xaml steht: Code:
Canvas Height="288" HorizontalAlignment="Left" Margin="0,23,0,0" Name="myCanvas" VerticalAlignment="Top" Width="501" / Code:
public partial class MainWindow : Window |
Kann auch nicht funktionieren. Du versuchst die Klasse MainWindow zu erben. MainWindow wird aber durch die Klasse App bereits instanziert.
Einfachste Lösung wäre, dass Du Deiner Klasse test einfach das instanzierte MainWindow im Konstruktor übergibst. |
wenn du mir noch sagen könntest wie das funktioniert wär ich dir sehr dankbar.
edit: also wenn ich mit Window main-copy = this; und main-copy im konstruktor übergebe wie greif ich dann wiederum auf das Canvas zu :-( ok habs :-) in der MainWindow Klasse: Code:
private Canvas myCanvas = new Canvas(); Code:
class test |
Ich hab leider ein weiteres Problem.
Wenn ich ein Objekt bewegen will mit Canvas.Setleft(poly, pos_x) wird das Objekt nicht neu gezeichnet. Es erhält zwar die pos_x aber das Canvas zeichnet es nicht, außer ich füge es neu mit MyCanvas.Children.Add hinzu. Dann allerdings ist das Polygon 2 mal vorhanden. Main Class: test Class: So wird es natürlich gezeichnet aber eben immer nebeneinander und selbst mit MyCanvas.Children.Remove(tester.Paint()); verschwindet das Polygon nicht. Die möglichkeit MyCanvas.Children.clear() würde funktionieren nur will ich später mehrere Objekt auf dem Bildschirm haben. MUSS ich wirklich bei jeder bewegung ALLE objekte neu zum Canvas hinzufügen? Das funktioniert: Ich hoffe ihr könnt mir weiterhelfen :-) |
Ich sehe schon das Problem. Du definierst in Deiner Paint-Funktion ein neues Polygon. Jedesmal, wenn Du move aufrufst, ruft dies wiederum Paint auf, welches ein neues Polygon zeichnet.
Lösung? Überdenke Dein Klassendesign. Wenn ich Du wäre, würde ich das Polygon selbst im Konstruktor definieren. Dann kannst Du im Canvas selbst das Objekt so übergeben: Code:
MyCanvas.Children.Add(new tester()); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:33 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.