如大家所知,DirectX与Xna之间有着千丝万缕的联系,而后者更侧重于跨平台,于是便在前者的基础上砍掉了部分PC的专属功能,新增了一些各平台通用的功能。

如果仅仅是使用Xna写PC平台下的游戏,而不考虑跨平台问题。我们依然可以通过某些手段,重拾部分PC功能,但要切记,这些功能为PC专有,不满足跨平台的需要。

1.Xna播放视频文件(借助ManagedDirectX)

using Microsoft.DirectX.AudioVideoPlayback;

using System.Windows.Forms;

Video video;

string videoFile = "clock.avi";

video = new Video(videoFile);

video.Owner = Form.FromHandle(this.Window.Handle);

video.Owner.Size = new System.Drawing.Size(1024,768);

video.Size = new System.Drawing.Size(1024, 768 - 30); // 30是窗口任务栏的高度

video.Play();

Xna目前貌似还没有现成的视频管线,要自己实现的话具备相当的难度。如果是PC平台下,则可使用这个现成的方法。

2.Xna播放音频文件(借助ManagedDirectX)

using Microsoft.DirectX.AudioVideoPlayback;

Audio audio;

string mp3File = "HunDouLuo.mp3";

audio = new Audio(mp3File);

audio.Play();

Xna2.0之前仅支持wav的音频播放,3.0、3.1具备了支持MP3的内容管线。如果要播放MP3,而又不借助于Xna的内容管线,可以用这个方法。

3.Xna绘制中文字体(借助Gdi+)

少量灵活的字体或者效率要求不高时,可以采用这个方法。参看我以前的文章即可。

如下是一些常见的Xna类型与WinApp类型间的平行接口,熟练掌握有利于更加灵活的扩展Xna环境在PC平台下的功能。

1. GameWindow <==> Control

Control = Form.FromHandle(GameWindow .Handle);

2. Texture2D <==> MemoryStream

Texture2D = Texture2D.FormFile(GraphicsDevice, MemoryStream);

Xna在PC平台下常用的初始化操作总结:

1.设置鼠标可见,且感应游戏窗口操作
     Mouse.WindowHandle = this.Window.Handle;
     this.IsMouseVisible = true;

2.修改游戏窗口大小
     graphics.PreferredBackBufferWidth = 1280;
     graphics.PreferredBackBufferHeight = 720;

3.设置全屏效果
     graphics.IsFullScreen = true;

Xna环境在PC平台下的功能扩展相关推荐

  1. 在windows上模拟linux环境,MSYS2——Windows平台下模拟linux环境的搭建-Go语言中文社区...

    最近从MSYS1.0迁移到了MSYS2.0,简单讲,MSYS2.0功能更强大,其环境模拟更加符合linux.虽然本身来自cygwin,但其集成了pacman软件管理工具,很有linux范,并且可以直接 ...

  2. GIS+=地理信息+行业+大数据——基于云环境流处理平台下的实时交通创新型app

    应用程序已经是近代的一个最重要的IT创新.应用程序是连接用户和数据之间的桥梁,提供即时访问信息是最方便且呈现的方式也是容易理解的和令人满意的.然而,app开发者,尤其是后端平台能力,一直在努力跟上用户 ...

  3. 在Simulink中建模,生成C++代码,在vs平台下进行功能验证

    引言 前一阵看了一下无人驾驶汽车的局部路径跟踪算法,导师的想法是让先在我们的实验车辆上跑起来,但使用模型预测的C代码又不是简单就能够编出来的,因此就想到了使用基于模型设计的方法. 花了一下午的时间,简 ...

  4. 乐鑫Esp32学习之旅27 带你在Windows10平台下用自带的Linux安装 ESP8266/ESP32 环境,再无需额外安装虚拟机了。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  5. ubuntu平台下搭建PHPWind网站运行环境

    ubuntu平台下搭建PHPWind网站运行环境 前提: 要打开root权限 sudo password [这里填写root密码] 在Linux平台安装PhpWind的是比较麻烦的事,相对来说在Ubu ...

  6. 【android开发】如何在Linux平台下安装JDK环境

    原文:http://android.eoe.cn/topic/android_sdk Linux平台JDK安装 本文主要描述如何在Linux平台下安装JDK环境. 进入网页: http://www.o ...

  7. Win7平台下配置Sublime Text2 的C++编译环境

    Win7平台下配置Sublime Text2 的C++编译环境 Sublime Text 是一个跨平台的编辑器,之前在 Mac 上成功配置了 C++ 在 Sublime Text 的编译环境,接下来介 ...

  8. 基于MacOSX平台下的二维码扫码功能

    基于MacOSX平台下的二维码扫码功能 最近项目接受了一个需求,要在macOS的系统上实现一个二维码扫码的功能.通过多方面的学习,最终实现了要求,具体的实现步骤将会在下面展示. 核心功能模块 实现途径 ...

  9. .NET平台下开源框架

    一.AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面(as ...

最新文章

  1. dist包编译html_gulp4 多页面项目管理打包(html, es6,less编译压缩版本控制)
  2. 老段mysql,老段视频汇总
  3. jvm from space 很小_JVM真香系列:堆内存详解
  4. 敏捷软件开发之结对编程
  5. 【KPGNN】运行错误与成功后的合集
  6. 图片跟随鼠标移动并放大js特效
  7. Django:模型层ORM
  8. bat脚本 -- 初步接触
  9. 论文笔记_S2D.62_VIL-SLAM_立体视觉惯性激光雷达同时定位和建图
  10. [android] init进程 .rc文件中service、action的parsing
  11. NOSQL数据库习题
  12. win10程序员计算器中HEX、DEC、OCT和BIN的含义
  13. app不走系统代理?如何抓包?
  14. 数据分析小练手【5】 之 搜狗新闻(文本分析)
  15. Android ViewModel与LiveData组件组合使用详解
  16. 企业如何从0到1落地BI项目
  17. 基于MFC开发的单文档画图(线段,多线段,矩形,椭圆,多边形),选中,变色,平移,线段长度,区域面积计算
  18. 镂空数学符号空心体数学符号
  19. 数据分析之淘宝数据简介
  20. 开机自动播放视频,开机就自动播放视频,开机自动播放u盘视频

热门文章

  1. java引用复制_Java中引用的浅复制和深复制
  2. 洛谷——P2077 红绿灯
  3. Vue报错Module build failed Error Node Sass version 6.0.1 is incompatible with ^4.0.0.解决方案
  4. 处理中文乱码以及登陆验证的过滤器Filter(建议收藏)
  5. Cookie、Session
  6. antimalware service executable占用内存_解决 vue 项目运行过程中内存泄漏问题
  7. 2019-5-5学习心得
  8. 发布一个MsBuild任务组件-可用于同时发布多个网站
  9. 会自动消失的提示信息
  10. 智慧城市近两年来受到国家高度重视