Я пытаюсь нарисовать линии на графике, который я сохранил как массив байтов, а затем сохранить как jpg в моем универсальном приложении Windows 10.Windows универсальное приложение нарисовать на WriteableBitmap
У меня есть байт [], который я преобразуется в BitmapImage, чтобы получить размер пикселя с помощью
BitmapImage bImage;
using (InMemoryRandomAccessStream ms = new InMemoryRandomAccessStream())
{
using (DataWriter writer = new DataWriter(ms.GetOutputStreamAt(0)))
{
writer.WriteBytes(myByteArray);
await writer.StoreAsync();
}
bImage = new BitmapImage();
bImage.SetSource(ms);
}
Затем я создал WriteableBitmap используя
WriteableBitmap writeableBmp = BitmapFactory.New(bImage.PixelWidth, bImage.PixelHeight).FromByteArray(myByteArray);
Я тогда нарисовать линию на графический
writeableBmp.DrawLine(10, 10, 200, 10, Colors.Black);
, а затем сохранить его как JPG
var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("graphic.jpg");
using (var storageStream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, storageStream);
var pixelStream = writeableBmp.PixelBuffer.AsStream();
var pixels = new byte[pixelStream.Length];
await pixelStream.ReadAsync(pixels, 0, pixels.Length);
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)writeableBmp.PixelWidth, (uint)writeableBmp.PixelHeight, 48, 48, pixels);
await encoder.FlushAsync();
}
К сожалению, результирующее изображение представляет собой лишь тонкую горизонтальную линию цветов. Исходное изображение потеряно, и черная линия не отображается.
Я новичок в графическом программировании, а фрагменты кода - это просто кусочки и куски, которые я собрал из разных источников.
Любая помощь приветствуется.