gpt4 book ai didi

c# - WriteableBitmapEx 不适用于 C# metro 应用程序

转载 作者:太空宇宙 更新时间:2023-11-03 11:21:12 25 4
gpt4 key购买 nike

我为 winrt (win 8 metro) 下载了 WriteableBitmapEx。我用扩展方法添加了对 dll 的引用,在我的代码中使用了它们,一切都编译正常。

问题是扩展方法没有效果。这是我的部分代码:

WriteableBitmap wb = new WriteableBitmap((int)pictureSize.Width,   (int)pictureSize.Height);
wb.SetSource(fileStream);
var newWB = wb.Flip(FlipMode.Vertical);
ImageControl.Source = newWB;
newWB.Invalidate();

图像没有出现在屏幕上。但是如果我尝试在图像上画一些东西,比如一条线,图像在屏幕上显示时不会发生变化。

谢谢!

最佳答案

我猜想当您使用 wb.Flip 时图像没有完全加载。 IIRC wb.SetSource 异步运行。

WriteableBitmapEx 库中还有另一个可用的方法,称为 FromContent。有了它,您可以从应用程序的内容加载图像,该方法会在后台为您处理所有事情。

下面的代码片段只是加载 logo.png,翻转它并将 WriteableBitmap 分配给图像控件。

var wb = await BitmapFactory.New(1, 1).FromContent(new Uri(BaseUri, @"///assets/logo.png"));
wb = wb.Flip(WriteableBitmapExtensions.FlipMode.Vertical);
Viewport.Source = wb;

如果查看 WriteableBitmapEx.FromContent 方法的 WinRT 版本的源代码,您将看到流是如何转换为 WriteableBitmap 的。使用以下代码段将任何图像格式 IRandomAccessStream 解码为 WriteableBitmap:

// Decode image format
var decoder = await BitmapDecoder.CreateAsync(fileStream);
var transform = new BitmapTransform();
var pixelData = await decoder.GetPixelDataAsync(decoder.BitmapPixelFormat, decoder.BitmapAlphaMode, transform, ExifOrientationMode.RespectExifOrientation, ColorManagementMode.ColorManageToSRgb);

// Swap R and B channels since it's reversed
var pixels = pixelData.DetachPixelData();
for (var i = 0; i < pixels.Length; i += 4)
{
var r = pixels[i];
var b = pixels[i + 2];
pixels[i] = b;
pixels[i + 2] = r;
}

// Copy pixels to WriteableBitmap
var wb = new WriteableBitmap((int)decoder.PixelWidth, (int)decoder.PixelHeight);
using (var bmpStream = wb.PixelBuffer.AsStream())
{
bmpStream.Seek(0, SeekOrigin.Begin);
bmpStream.Write(pixels, 0, (int)bmpStream.Length);
}


// Your original code
var newWB = wb.Flip(FlipMode.Vertical);
ImageControl.Source = newWB;

是的,这比一个代码要多得多,尤其是。如果您之前在 Silverlight 或 WPF 中执行过此操作。

关于c# - WriteableBitmapEx 不适用于 C# metro 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10944203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com