在Browser Application中使用XNA
摘要:在WPF中,我们使用Mode3D等API来绘制三维场景,当期间的“三角形”超过一定数量时,整个场景的渲染速率直线下降,无论显卡的运行速度有多快,帧率都维持在3、5帧每秒。XNA是微软推出的一套游戏开发API,作为Managed DirectX的进化版,XNA同样封装了DirectX的底层API,此外还提供了一系列和游戏生命周期相关的类,大大减轻了传统Win32下DirectX开发的烦琐。本文试图让XNA“嵌入”在WPF的Browser Application中,使用XNA来渲染场景,并以XBAP的方式在互联网上发布,集XNA的高效和WPF的部署方便为一生,免除了开发人员在部署、安装、升级应用程
阅读全文
posted @
2011-05-06 17:03
carekee
阅读(662)
推荐(0) 编辑
解决ClickOnce应用程序发布时,可能出现的缺少GAC文件问题
摘要:客户端运行ClickOnce应用程序时,有可能会出现如下错误: 这是由于在客户端的GAC(全局程序集缓存)中,缺少相应的dll文件。这些Dll文件一般是第三方类库,或是一些系统库,本来需要客户端自己安装的,但客户端没有安装这些dll文件,最终导致我们的应用程序无法运行。因此我们要帮客户装上这些东西。ClickOnce应用程序和Windows Installer应用程序不同,客户不需要安装就能运行。但带来的不便之处是,我们在运行ClickOnce应用程序时,不能像运行Windows Installer那样在ClickOnce中把这些缺少的dll文件安装到GAC目录下。所幸可以通过发布选项中的Pr
阅读全文
posted @
2011-05-06 16:58
carekee
阅读(2753)
推荐(0) 编辑
在WPF里使用指纹认证(一、安装SDK)
摘要:下载SDK实验室的指纹工具是U.are.U 4000,在http://www.digitalpersona.com,经过一系列登陆后,可以下得SDK。这是一个压缩包,解压后如下: 安装SDK进入SDK目录,双击安装文件: 一系列Next后,可以看到,该SDK支持.Net、Java等托管语言,这是我想要的:)进入.Net目录,打开一个Sample工程,运行后:点击Enroll登记指纹: 点击Verify验证刚才登记的指纹:这是正确的情况: 这是错误的情况:完了!
阅读全文
posted @
2011-05-06 16:56
carekee
阅读(540)
推荐(0) 编辑
在WPF中进行碰撞检测
摘要:前文我简要的介绍了在WPF中,如何控制摄像头移动,已达到动画的效果。也带来了一个新的问题:摄像头移动的时候,毫无阻拦,这就是所谓的“穿墙模式”。有没有什么办法解决这个问题呢?有,就是在移动摄像头前先进行“碰撞检测”,确定摄像头的新位置区间中没有其他的三维模型。本文将介绍如何在WPF中进行三维碰撞检测。利用Rect3D.IntersectsWith 方法在进入下一节前,先看看最简单的碰撞检测方式:利用Rect3D.IntersectsWith 方法。Model3D有一个Bounds属性,用来表示该Model3D的边界: 该属性是Rect3D类型的,我们可以使用IntersectsWith 来确定
阅读全文
posted @
2011-05-06 16:55
carekee
阅读(1375)
推荐(0) 编辑
Viewport3D中的摄像机
摘要:概述在三维场景里,Camera是不可或缺的元素。和人的眼睛一样,场景中现实的内容,实际上是Camera“看到”的。下图是在Google Sketchup里,Left视角的Camera所“看到”的内容: 和常见三维建模软件类似,在WPF的3D里,也涉及到Camera对象,在WPF里,有三种Camera:MatrixCameraPerspectiveCameraOrthographicCamera投影摄像机上述三种Camera中,PerspectiveCamera和OrthographicCamera属于投影摄像机,它将三维空间里的物体,投影到一个平面上,而这的不同之处在于,Orthographi
阅读全文
posted @
2011-05-06 16:54
carekee
阅读(5142)
推荐(0) 编辑
Viewport3D中的摄像机(二、摄像机动作)
摘要:前文介绍了Viewport3D中的两种摄像机:OrthographicCamera和PerspectiveCamera。在3D场景里漫游,最主要的工作就是针对用户输入(例如鼠标左右移动、键盘按下A、W、S、D等键)来改变摄像机的位置、方向。本文接下来介绍如何通过改变PerspectiveCamera的属性,来达到场景的漫游效果。摄像机动作我摄像机的动作可以分成三类、移动、旋转、拉升镜头。用一个枚举来描述这些动作:public enum SceneCameraAction{ MoveForward, //向前移动 MoveBack, //向后移动 MoveLeft, //向左移动 MoveRig
阅读全文
posted @
2011-05-06 16:54
carekee
阅读(780)
推荐(0) 编辑
建立Full Trust的Browser Application
摘要:WPF 的 Browser Application,运行于IE、Firefox(需要插件)等浏览器中,方便了部署,但也受至于浏览器的安全性限制。例如,有时候,需要访问磁盘上某个文件时,普通的Browser Application会出现“为授予信任(Trust not granted)”的错误: 以下是解决方案修改安全属性打开项目属性,选择Security选项卡,选择“This is a full trust application”单选框: 也可以根据项目具体内容,选择“This is a partial trust application”,然后设置相应权限。添加代码签名申请一个证书在开发阶
阅读全文
posted @
2011-05-06 16:52
carekee
阅读(737)
推荐(0) 编辑
WPF中,一个文件选择控件的例子
摘要:对我来说,WPF比MFC好了不止一百倍:同样的工作,用C#比用C++,开发效率至少提高了200%;在UI制作方面,WPF比MFC更容易做出绚丽的效果;WPF应用程序能嵌入在IE浏览器中,方便部署、维护。随着Windows 7发布脚步的渐进,未来桌面程序的开发,必定属于WPF的。现在,我们还有理由拒绝WPF吗?接下是一个WPF中文件选择控件的例子,先上效果图: 点击后,出现选择文件对话框: 选择文件后,自动将文件显示在图片框中:代码上很简单,除去VS自动生成的代码,总代码不超过10行,且都是在设计器里用鼠标完成的,整个过程除了输入一些名称,不需要敲一下键盘,历时2分钟:<Window x:
阅读全文
posted @
2011-05-06 16:50
carekee
阅读(9254)
推荐(0) 编辑