- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4基于像素的图像合成(ForWPF)
WPF/Silverlight深度解决方案:(四)基于像素的图像合成(For WPF)
?
传统的基于GDI或GDI+的图形开发大家再熟悉不过了,通过Drawing类可以轻松的对位图进行处理,那么在WPF中的Media类是否也拥有同样类似的方法功能呢?这是肯定的。
本节我以精灵装备合成Show(纸娃娃)为例向大家演示如何在WPF中实现基于像素的图象合成。
首先准备一下合成用的素材:
统一好它们的规格尺寸及命名后将之嵌入进项目资源:
接下来是进行绘图的第一步:创建绘图工具实例并开启绘图:
DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
接着按深度顺序从底到外逐个对象绘制:
BitmapSource weapon = GetImage(
string.Format(Image/Weapon_{0}.png,
(comboBox1.SelectedItem as ComboBoxItem).Content)
);
drawingContext.DrawImage(weapon, new Rect(18, 18, 120, 120));
通过以上代码,我们将位于Image/Weapon_{0}.png的武器图片绘制到一个x,y方向偏移量分别为(18,18)的120*120像素的矩形上,其中的GetImage方法为:
//图片加载
private BitmapSource GetImage(string uri) {
try {
return BitmapFrame.Create(new Uri(string.Format(@{0}, uri), UriKind.Relative));
} catch {
return null;
}
}
然后通过相类似的代码再分别依次绘制身体、左手、右手、头部、坐骑等部位:
//绘制身体
BitmapSource body = GetImage(
string.Format(Image/Body_{0}.png,
(comboBox2.SelectedItem as ComboBoxItem).Content)
);
drawingContext.DrawImage(body, new Rect(50, 50, 100, 100));
//绘制左手
BitmapSource LeftHand = GetImage(
string.Format(Image/LeftHand_{0}.png,
(comboBox3.SelectedItem as ComboBoxItem).Content)
);
drawingContext.DrawImage(LeftHand, new Rect(72, 52, 30, 30));
//绘制右手
BitmapSource RightHand = GetImage(
string.Format(Image/RightHand_{0}.png,
(comboBox4.SelectedItem as ComboBoxItem).Content)
);
drawingContext.DrawImage(RightHand, new Rect(98, 59, 30, 30));
//绘制头部
BitmapSource Head = GetImage(
string.Format(Image/Head_{0}.png,
(comboBox5.SelectedItem as ComboBoxItem).Content)
);
drawingContext.DrawImage(Head, new Rect(86, 38, 20, 30));
//绘制坐骑
BitmapSource Horse = GetImage(
string.Format(Image/Horse_{0}.png,
(comboBox6.SelectedItem as ComboBoxItem).Content)
);
drawingContext.DrawImage(Horse, new Rect(63, 71, 70, 120));
所有对象绘制完后即可以关闭画板并呈现出来:
dra
您可能关注的文档
- 42377_002_框架结构定型组合钢模板的安装与拆.doc
- 42《DNA分子结构与复制第一课时》教案(苏教版必修2).doc
- 42CrMo钢的热处理.doc
- 42《熔化和凝固》测试题2.doc
- 42全球气候变化对人类活动的影响教案.doc
- 42内层正片的制作.doc
- 42定量认识化学变化1教案.doc
- 42期航海学真题.doc
- 42山地的形成.doc
- 42熔化和凝固学案.doc
- 实验室危废随意倾倒查处规范.ppt
- 实验室危废废液处理设施规范.ppt
- 实验室危废处置应急管理规范.ppt
- 初中地理中考总复习精品教学课件课堂讲本 基础梳理篇 主题10 中国的地理差异 第20课时 中国的地理差异.ppt
- 初中地理中考总复习精品教学课件课堂讲本 基础梳理篇 主题10 中国的地理差异 第21课时 北方地区.ppt
- 危险废物处置人员防护培训办法.ppt
- 危险废物处置隐患排查技术指南.ppt
- 2026部编版小学数学二年级下册期末综合学业能力测试试卷(3套含答案解析).docx
- 危险废物处置违法案例分析汇编.ppt
- 2026部编版小学数学一年级下册期末综合学业能力测试试卷3套精选(含答案解析).docx
最近下载
- fdm3d打印知识培训课件.pptx VIP
- 2026人教版小学三年级下册数学期末综合试卷3套打印版(含答案解析).pdf
- 创业管理(第5版)张玉利_课后习题答案.pdf
- 西北师范大学《高等数学(D)》2025 - 2026学年第一学期期末试卷.docx VIP
- 2026人教版小学语文三年级上册期末综合试卷3套(打印版含答案解析).docx
- TSG 31-2025 工业管道安全技术规程.pdf
- 焊接机器人结构设计[六自由度工业机器人].docx
- 服装缝纫基础.doc VIP
- 新建保温材料生产线项目环评(2021年新版环评)环境影响报告表.docx VIP
- 西北师范大学《高等数学(II)》2025 - 2026学年第一学期期末试卷.docx VIP
原创力文档


文档评论(0)