Es wird von einem Koordinatensystem mit den beiden unten aufgeführten Codesnippets erstellt. Leider speichert das zweite Code-Snippet das Bild auf dem Desktop. Ich möchte das "Bild" zurückgeben lassen. Wie kann ich das Bild des Koordinatensystems zurückgeben? (Ich habe eine Methode, die einen Rückgabewert als Bild hat)Wie kann ich das Bild zurückgeben?
Am Ende soll es preview = image;
So sein, dass aus dem Koordinatensystem ein „Bild“ und nicht auf den Desktop gespeichert ist, aber ich kann Gib es zurück.
var stream = new MemoryStream();
var pngExporter = new PngExporter { Width = 600, Height = 400, Background = OxyColors.White };
pngExporter.Export(plotModel, stream);
preview = stream; //Does not work unfortunately
var pngExporter = new PngExporter { Width = 350, Height = 350, Background = OxyColors.White };
pngExporter.ExportToFile(plotModel, @"C:\Users\user\Desktop\test.png");
public bool createPreview(out string errorMessage, out System.Drawing.Image preview, int pWidth, int pHeight, int pMargin)
{
errorMessage = null;
preview = null;
bool folded = false;
try
{
PlotModel plotModel = new PlotModel { Title = "Vorschaukomponente" };
plotModel.Axes.Add(new OxyPlot.Axes.LinearAxis { Position = OxyPlot.Axes.AxisPosition.Bottom, MinimumPadding = 0.1, MaximumPadding = 0.1 });
plotModel.Axes.Add(new OxyPlot.Axes.LinearAxis { Position = OxyPlot.Axes.AxisPosition.Left, MinimumPadding = 0.1, MaximumPadding = 0.1 });
var series1 = new OxyPlot.Series.LineSeries
{
LineStyle = LineStyle.None,
MarkerType = MarkerType.Circle,
MarkerSize = 2,
MarkerFill = OxyColors.Transparent,
MarkerStroke = OxyColors.Black,
MarkerStrokeThickness = 1
};
if (pointX.Count == pointY.Count)
{
for (int i = 0; i < pointX.Count; i++)
{
for (int g = i; g < pointY.Count; g++)
{
series1.Points.Add(new DataPoint(pointX[i], pointY[g]));
Console.WriteLine(i+1 + " | "+ pointX[i].ToString() + "/" + pointY[g]);
break;
}
}
series1.Smooth = true;
plotModel.Series.Add(series1);
try
{
var stream = new MemoryStream();
var pngExporter = new PngExporter { Width = 600, Height = 400, Background = OxyColors.White };
pngExporter.Export(plotModel, stream);
preview = stream;
// var pngExporter = new PngExporter { Width = 350, Height = 350, Background = OxyColors.White };
// pngExporter.ExportToFile(plotModel, @"C:\Users\user\Desktop\test.png");
folded = true;
}
catch (Exception exc)
{
System.Diagnostics.Debug.WriteLine(exc.Message);
errorMessage = "Es konnt kein Bild erstellt werden.";
folded = false;
}
}
else
{
errorMessage = "Es ist nicht die gleiche Anzahl von xen und yen vorhanden.";
folded = false;
}
}
catch (Exception)
{
errorMessage= "Es trat ein unerwarteter Fehler auf";
folded = false;
}
return folded;
}
hilft _Können nicht "System.Drawing.Image" konvertieren "System.Uri" ._ 'System.Drawing.Image sa; BitmapEncoder-Encoder = neuer PngBitmapEncoder(); Encoder.Frames.Add (BitmapFrame.Create (sa)); Encoder.Save (fileStream); ' Ist jetzt in MainWindow, was ist falsch? – GabelUndMesser
Das ist eine ganz andere Frage. Zu wenig Informationen zu beantworten, bitte stellen Sie eine neue Frage. – jeroenh
Leider kann ich dann Ihren Lösungsansatz nicht testen, aber danach werde ich eine neue Frage stellen. Danke für deine Antwort. – GabelUndMesser