Hallo,
ich erzeuge mir mit folgendem Code ein Fenster indem ich mehrere Shapes (Rectangle,Ellipse,Line) einfüge:
Fenster = new Window();
Fenster.SizeToContent = SizeToContent.WidthAndHeight;
Border rand = new Border();
rand.BorderBrush = Brushes.Black;
rand.BorderThickness = new Thickness(2);
Canvas canvas = new Canvas();
canvas.Background = Brushes.White;
canvas.Width = 800;
canvas.Height = 600;
Rectangle rect = new Rectangle();
rect.Width = 10;
rect.Height = 10;
rect.Stroke = Brushes.Green;
rect.Fill = Brushes.Green;
Canvas.SetTop(rect, 100.00);
Canvas.SetLeft(rect, 100.00);
......(das gleiche für Ellipse/Line/etc)...
canvas.Children.Add(rect);
....alle einfügen
rand.Child = canvas;
Fenster.Content = rand;
Fenster.Show();
Nun habe ich hier ein Button eingefügt, mit dem ich den Fensterinhalt als Grafik exportieren möchte.
Weiß jemand einen Rat oder einen Link?
Hi Create,
was genau meinst du mit Grafikdatei? Du kannst die Canvas ganz einfach mit dem XamlSerializer als XAML-Datei speichern. Das können viele Grafikprogramme lesen. Falls du andere vektorbasierte Formate benötigst, kannst du das XAML selbst konvertieren oder dir dafür im Internet eine entsprechende Bibliothek suchen.
Falls du Bilddateien wie JPG oder PNG meinst, dann schau dir mal die RenderTargetBitmap-Klasse an.
Christian
Weeks of programming can save you hours of planning
Hallo Christian,
sorry das ich mich missverständlich ausgedrückt hatte. Ich meinte den Export als Bilddatei, also als PNG, JPEG, GIF.
Deine genannte Klasse hatte ich auch bereits gefunden. So war mein Ansatz:
Image myImage = new Image();
try
{
RenderTargetBitmap render = new RenderTargetBitmap((int)canvas.Width, (int)canvas.Height, 96d, 96d, PixelFormats.Default);
canvas.Measure(new Size((int)canvas.Width, (int)canvas.Height));
canvas.Arrange(new Rect(new Size((int)canvas.Width, (int)canvas.Height)));
render.Render(canvas);
myImage.Source = render;
}
catch (NullReferenceException)
{
MessageBox.Show("Fehler");
}
Es wird auch die Exception ausgeworfen.
Weeks of programming can save you hours of planning
Ich weiß, dass sicherlich jetzt eine "lernedieGrundlagen-Antwort" kommt. Aber ich finde gerade den Fehler nicht.
Im Canvas sind Elemente enthalten und werden mit show() auch angezeigt.
Ich weiß, dass sicherlich jetzt eine "lernedieGrundlagen-Antwort" kommt. Aber ich finde gerade den Fehler nicht.
Kennst du schon Breakpoints und Einzelschritt-Debugging? Wenn nicht: Bitte lerne die Grundlagen. Ansonsten: Ausprobieren.
Weeks of programming can save you hours of planning
Wenn es wirklich an der NullReferenceException liegt und es klingt eindeutig so, dann folge bitte wirklich der FAQ. Und ja, bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 1.1.