用Silverlight 3的位图API实现可写位图

Silverlight 3 这次带来的全新位图API实现了如下的三个首要目标:

◆从无到有创建位图,以像素为单位

◆在客户端处理从服务器或本地加载的图像

◆从视觉树到位图的分区渲染,以达成类似于截屏的功能(另外,预渲染和缓存元素有时也能起到提 高性能的作用)

从无到有创建位图

创建位图的关键在于System.Windows.Media.Imaging下的WriteableBitmap类。运用此类可以创建一个 预先分配到普通图像元素上的源。

﹤Grid x:Name="LayoutRoot"﹥
﹤Image x:Name="MyBitmap"
Width="200"
Height="200" /﹥
﹤/Grid﹥

以下提供的代码可以实现一些很有趣的图形效果。

private void BuildBitmap()
{
const int imageWidth = 200;
const int imageHeight = 200;

WriteableBitmap b =
new WriteableBitmap(imageWidth, imageHeight,
PixelFormats.Bgr32);

b.Lock();

for (int x = 0; x ﹤ imageWidth; x++)
{
for (int y = 0; y ﹤ imageHeight; y++)
{
// generate a color in Pbgra32 format
byte[] components = new byte[4];
components[0] = (byte)(x % 255); // blue
components[1] = (byte)(y % 255); // green
components[2] = (byte)(x * y % 255); // red
components[3] = 0; // unused

// you could certainly do your own masking here
int pixelValue = BitConverter.ToInt32(components, 0);

// set the pixel value
b[y * imageWidth + x] = pixelValue;
}
}

b.Invalidate();
b.Unlock();

MyBitmap.Source = b;

}

最终成品如下:

可以明显看出,以上代码经历了四个流程:锁定,写入,无效化,解锁。这是WPF兼容所需要的。

你也可以修改一个现有的位图,并渲染该位图的内容控件。

时间: 2024-10-03 01:01:28

用Silverlight 3的位图API实现可写位图的相关文章

256色位图格式与256色位图编程

下面就一个C++程序(DrawBmp.cpp, Borland C++ Builder 6.0 编译运行通过)具体分析 //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "DrawBitmap.h" //------------------------------------------

c#-C# 无法创建与屏幕兼容的位图。无法确定屏幕位图格式。

问题描述 C# 无法创建与屏幕兼容的位图.无法确定屏幕位图格式. 我在程序中有用到根据文件类型获取ICON做的资源管理器 但是,如果切换的比较频繁的情况下,会出现"无法创建与屏幕兼容的位图.无法确定屏幕位图格式."这个异常,用try catch也无法捕获,程序就自动退出了,在网上我查询了相关资料里面说可能是资源没有及时释放的原因,可是 我在程序很多地方都加了GC回收,在获取文件ICON的时候也没用到Graphics对象,有没有大神能够告诉我.碰到这种问题有没有什么解决方法!

api-c# 开发的系统需要嵌入腾讯企业邮箱API代码如何写

问题描述 c# 开发的系统需要嵌入腾讯企业邮箱API代码如何写 C#开发的管理系统,现在想嵌入腾讯企业邮箱,只有登录系统同时就登录腾讯企业邮箱,直接就可以查收信件,API都有 但是没弄过 找不到怎么加入代码??. 求高手指点 万分感谢!----------腾讯提供的api部分代码说明-----------4. OAuth 验证授权目前,腾讯企业邮箱采用 OAuth2.0 协议对第三方进行授权,关于 OAuth2.0 的详细介绍,请参考 OAuth 协议标准.根据申请到的 client_id 和

Direct2D教程V——位图(Bitmap)和位图笔刷(BitmapBrush)

目前博客园中成系列的Direct2D的教程有 1.万一的 Direct2D 系列,用的是Delphi 2009 2.zdd的 Direct2D 系列,用的是VS中的C++ 3.本文所在的 Direct2D教程 系列,用的是VS2010的Visual Basic语言(可以很方便的转为C#),基于Windows API Code Pack 1.1.   还有官方的说明文档 Direct2D ,用的是C++.   本系列的前几篇文章: Direct2D教程I--简介及首个例子 Direct2D教程II

位图读取-关于”%d.bmp“位图的读取问题

问题描述 关于"%d.bmp"位图的读取问题 如果将位图用str.Format ("%d.bmp",counts);保存 再次读这些位图时怎么读 解决方案 要看你的位图保存的目录路径是在哪里,然后直接从带路径下获取完整的文件路径,然后加载. 解决方案二: 这个问题问得好,不太好回答 解决方案三: 你这个存储方案不是很好,因为你的文件名是变量,如果外部不知道你这个counts的生成策略的话,很难确定你的文件名.你的counts的策略是什么?

开发API完成,写个文档

Jira对接Prism开发API指南   部门 证系统运维团队 文档制作人 陈刚() 时间 2017-04-05 版本 第一版     目录 目的... 1 通例:... 1 认证... 2 新建版本单... 2 获取指定版本单的发布单信息... 3     目的 为了提升工作效率,打通jira和prism之间的联系,让软件项目管理人员可以在jira上新建版本单,并跟踪发布进度,特在prism上制作相关API供jira调用.   通例: l  Prism的web址会因环境不同或构架变更而发生变更

API之位图、图标和光栅运算函数

BitBlt 将一幅位图从一个设备场景复制到另一个 CopyIcon 制作指定图标或鼠标指针的一个副本.这个副本从属于发出调用的应用程序 CopyImage 复制位图.图标或指针,同时在复制过程中进行一些转换工作 CreateBitmap 按照规定的格式创建一幅与设备有关位图 CreateBitmapIndirect 创建一幅与设备有关位图 CreateCompatibleBitmap 创建一幅与设备有关位图,它与指定的设备场景兼容 CreateCursor 创建一个鼠标指针 CreateDIB

Silverlight游戏设计(Game Design):(十五)如果还有梦(完)

Silverlight游戏设计系列到此就全部结束了,原先计划至少为大家献上5个最有影响力的Demo,由于 近期生活及工作的原因让我感到实在疲惫不堪因而未能如愿,还望大家见谅. Silverlight在游戏开发方面拥有它独到之处,目前最新版本为4.0,开发环境集成于强大的 VisualStudio2010中.Silverlight在短短的数年时间里能成长得如此迅速与微软的强力支持分不开,从 Silverlight 5 Wishlist字里行间中我再次感受到世界对Silverlight未来的强烈期待

稳扎稳打Silverlight(38)

返回"稳扎稳打Silverlight 3.0系列文章索引" 稳扎稳打Silverlight(38) - 3.0滤镜之BlurEffect,DropShadowEffect,自定义滤镜,3D效果之PlaneProjection,位图API之WriteableBitmap 介绍 Silverlight 3.0 图形系统的相关新增功能 BlurEffect - 模糊滤镜 DropShadowEffect - 阴影滤镜 自定义滤镜 PlaneProjection - 将平面的 UIElemen