`
jiasongmao
  • 浏览: 670686 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

基于像素的图像合成(For Silverlight)

    博客分类:
  • WPF
阅读更多

本节我将为大家讲解如何在Silverlight平台上实现上一节中的纸娃娃系统,即WPF->Silverlight的移植。

众所周知Silverlight是WPF的子集,Silverlight对像素位图的处理是在3.0版本之后才开始支持,本节我将大量的用到它: WriteableBitmap – 传说中神话的代言人。

移植过程分两步。

首先移植表现层xaml,大家需要特别注意的是Silverlight中ComboBoxItem中的IsSelected和Content与WPF中的有明显书写区别,不清楚为什么微软不对此进行一致化以便可以轻松移植。

接着移值逻辑代码:

首先创建绘图用对象WriteableBitmap writeableBitmap = new WriteableBitmap(200, 200);

接着定义平移对象TranslateTransform translateTransform = new TranslateTransform();

该对象将用于实现上一节中的x,y偏移处理。

然后同样的首先以绘制武器为例:

     Image image = new Image();

     image.Source = GetImage(

string.Format("/Image/Weapon_{0}.png",

(comboBox1.SelectedItem as ComboBoxItem).Content)

);

     translateTransform.X = 18; translateTransform.Y = 18;

     writeableBitmap.Render(image, translateTransform);

大家不妨与上一节的代码进行比较,就会发现非常之相似,只是用了不同的类工具替换罢了。

那么后面是同样的,逐层绘制其他部位:

//绘制身体

     image.Source = GetImage(

string.Format("/Image/Body_{0}.png",

(comboBox2.SelectedItem as ComboBoxItem).Content)

);

     translateTransform.X = 50; translateTransform.Y = 50;

     writeableBitmap.Render(image, translateTransform);

//绘制左手

     image.Source = GetImage(

string.Format("/Image/LeftHand_{0}.png",

(comboBox3.SelectedItem as ComboBoxItem).Content)

);

     translateTransform.X = 72; translateTransform.Y = 52;

     writeableBitmap.Render(image, translateTransform);

//绘制右手

     image.Source = GetImage(

string.Format("/Image/RightHand_{0}.png",

(comboBox4.SelectedItem as ComboBoxItem).Content)

);

     translateTransform.X = 98; translateTransform.Y = 59;

     writeableBitmap.Render(image, translateTransform);

//绘制头部

     image.Source = GetImage(

string.Format("/Image/Head_{0}.png",

(comboBox5.SelectedItem as ComboBoxItem).Content)

);

     translateTransform.X = 86; translateTransform.Y = 38;

     writeableBitmap.Render(image, translateTransform);

//绘制坐骑

     image.Source = GetImage(

string.Format("/Image/Horse_{0}.png",

(comboBox6.SelectedItem as ComboBoxItem).Content)

);

      translateTransform.X = 63; translateTransform.Y = 71;

      writeableBitmap.Render(image, translateTransform);

全部绘制完后别忘记了将之提交writeableBitmap.Invalidate();

并将最终的合成图象赋值给精灵:

Spirit.Source = writeableBitmap;

是不是很神奇~原来移植可以这么简单的,更重要的,WriteableBitmap使我们能够在Silverlight中对像素位图进行处理,这难道不是伟大的历史时刻吗?

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/alamiye010/archive/2009/09/21/4574496.aspx

分享到:
评论

相关推荐

    ArcGIS API for Silverlight 3.0

    **ArcGIS API for Silverlight 3.0** 是Esri公司推出的一款强大的地图和地理信息系统开发工具,专门针对Microsoft Silverlight平台设计。这个API允许开发者构建丰富的、交互式的Web应用程序,展示地图信息,进行地理...

    ArcGIS 3.1 for Silverlight

    **ArcGIS 3.1 for Silverlight** 是Esri公司推出的一款基于Silverlight技术的Web GIS开发框架。这款产品主要用于构建交互式的、丰富的地理信息系统应用,让用户能够在浏览器中享受到类似桌面应用的体验。ArcGIS API ...

    ArcGIS Viewer for Silverlight 离线文档

    ArcGIS Viewer for Silverlight是由Esri公司开发的一款基于Silverlight技术的轻量级GIS客户端应用,它提供了丰富的地图展示、交互和分析功能,使得开发者能够构建功能强大的在线地图应用。 该离线文档详细介绍了...

    Json.NET For Silverlight API

    Json.NET For Silverlight API

    arcgis api for silverlight

    ArcGIS API for Silverlight是Esri公司开发的一款用于构建地理信息系统(GIS)Web应用程序的开发框架,主要针对Microsoft Silverlight技术。此API使得开发者能够利用Silverlight的强大功能和丰富的用户体验来展示、...

    arcgis api for silverlight开发入门

    ### ArcGIS API for Silverlight 开发入门 #### 一、为何选择 Silverlight API? 随着信息技术的发展,GIS领域也需要不断地更新迭代以适应新的技术趋势。Silverlight作为一种新兴的技术平台,为GIS开发提供了新的...

    ComponentOne Studio for Silverlight 2012 v3 1/3

    ComponentOne Studio for Silverlight 2012 v3 1/3 一共有 3 个压缩文件,请全部下载后解压 ComponentOne Studio Silverlight 2012 v3 Silverlight UI Controls with Power and Style Get the controls and ...

    Telerik RadControls for Silverlight Beta2

    **Telerik RadControls for Silverlight Beta2** 是一个专门针对微软Silverlight开发平台的UI控件库,由Telerik公司提供。这个库包含了丰富的用户界面元素,旨在帮助开发者快速、高效地构建出交互性强、视觉效果优秀...

    ComponentOne Studio for Silverlight 2012 v3 2/3

    ComponentOne Studio for Silverlight 2012 v3 1/3 一共有 3 个压缩文件,请全部下载后解压 ComponentOne Studio Silverlight 2012 v3 Silverlight UI Controls with Power and Style Get the controls and ...

    ArcGIS API 3.3 for Silverlight

    ArcGIS API 3.3 for Silverlight

    ComponentOne Studio for Silverlight 2013 v1 2/3

    ComponentOne Studio for Silverlight 2013 v1 1/3 共三个压缩文件,请全部下载后解压 Part of: Ultimate | Enterprise 60+ powerful, yet lightweight, controls offer the latest Web UI trends and take ...

    ComponentOne Studio for Silverlight 2013 v1

    ComponentOne Studio for Silverlight 2013 v1 Part of: Ultimate | Enterprise 60+ powerful, yet lightweight, controls offer the latest Web UI trends and take advantage of everything Silverlight 5 has...

    ArcGIS API for Silverlight 完整实例

    此应用实例是一个全功能的展示应用。运行调试通过,共享出来,大家参考、...实例充分利用的Silverlight 3的功能,比如:触发器、元件结合等,程序结构合理,实例开发了一系列的用户控件来构建应用,可复用性较强....

    ComponentOne Studio for Silverlight 2013 v1 3/3

    ComponentOne Studio for Silverlight 2013 v1 1/3 共三个压缩文件,请全部下载后解压 Part of: Ultimate | Enterprise 60+ powerful, yet lightweight, controls offer the latest Web UI trends and take ...

    Telerik 2019 SP1系列之 Telerik UI For Silverlight

    Telerik UI for Silverlight是Telerik公司开发的一套完整的用户界面组件库,专门针对Microsoft的Silverlight技术。这个组件库提供了丰富的控件和工具,帮助开发者构建功能强大的、具有现代感的Web应用程序。2019 SP1...

    arcgis api 3.0 for silverlight

    目前最新的api for silverlight 版本,供学习使用。

    Telerik RadControls for Silverlight 5 2013 Q1 SP1 Demos

    【Telerik RadControls for Silverlight 5 2013 Q1 SP1 Demos】是Telerik公司推出的一款专门针对Silverlight 5平台的UI控件库,它为开发者提供了丰富的用户界面组件,用于构建高性能、高交互性的Web应用程序。...

    [开发工具] RadControls for Silverlight 5 2012.3

    【RadControls for Silverlight 5 2012.3】是Telerik公司推出的一套针对Silverlight 5平台的高级UI控件集,专为.NET开发者设计,旨在提升应用程序的用户界面体验和开发效率。这个版本是2012年3月的1017更新,提供的...

Global site tag (gtag.js) - Google Analytics