繁体   English   中英

何时在silverlight中使用WriteableBitmap和BitmapImage

when to use WriteableBitmap and BitmapImage in silverlight

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我试图使用BitmapImage显示图像一段时间了,但是我更改了图像并且停止了工作。

对于Bitmapimage我使用了以下代码:

                            `ms.Seek(0, SeekOrigin.Begin); // ms is memory stream
                            BitmapImage b = new BitmapImage();
                            b.SetSource(ms);
                            image.ImageSource = b;`

我遇到了一段代码,它正在检查字节的长度[] == 14400

 if(bytes.length == 14400)
  {
  var bmp = new WriteableBitmap(width, height);
  Buffer.BlockCopy(buffer, 0, bmp.Pixels, 0, buffer.Length);
 }

我想知道何时使用WriteableBitmap和BitmapImage。

1 个回复

从iProgrammer:

位图通常实现为不可变的对象。 这意味着一旦创建了位图,就无法对其进行任何更改。 您可以通过创建新版本来操纵位图,然后立即将其变为不变。

顾名思义,WriteableBitmap并不是一成不变的,您可以获取其各个像素并根据需要进行任意操作。 当您需要动态位图时,这是理想的工作方式。 iProgrammer-WriteableBitmap

从MSDN:

“使用WriteableBitmap类在每帧的基础上更新和呈现位图...” MSDN-WriteableBitmap类

MSDN文章的“示例”部分还显示了在响应鼠标事件时如何更新WritableBitmap图像。 该示例中的代码通过在鼠标右键按下时将像素的ARGB值设置为0来擦除图像的像素。 该代码还显示了如何在鼠标左键按下的情况下更新图像中的各个像素。 基本上,代码显示了基本的像素图像编辑器。

但是,要点是,使用常规位图时不能更改图像数据-必须使用WritableBitmap。 但是,您可以根据需要渲染两者。

1 Silverlight:BitmapImage到WriteableBitmap

我可以像这样成功加载下面的Bitmap,并在视图的Image控件中显示它。 但是,只要我添加此行以从位图创建WriteableBitmap, 我在上面的行中收到运行时错误:“对象引用未设置为对象的实例。” 似乎BitmapImage创建被延迟了,可能是吗? 我该怎么解决这 ...

5 在Silverlight中使用BitmapImage,会丢失我的DPI信息

我正在尝试将高分辨率(300 dpi)图像加载到BitmapImage对象中(该对象将显示在嵌套在Canvas中的Image控件中)。 问题是,当我将图像保存到硬盘驱动器时,它丢失了dpi信息。 我正在使用没有压缩功能的PNG编码器,所以我知道这不是问题。 它会由于加载到Bitma ...

10 UWP将BitmapImage转换为WriteableBitmap

最终,我的目标是将通过http从远程服务器获得的图像保存到本地存储中。 我这样看 触发ImageDownloaded ,我希望能够将图像另存为.jpg文件。 我已经对目标文件夹具有写权限。 我已经找到了将图像读入WriteableBitmap方法,但是构造函数需要宽度和高度 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM