菜鸟想做个2D界面,先请教下茴字有几种写法

Simality 2011-06-17 05:17:34
我做了5年硬件工程师,软件方面基础薄弱,而且没认识几个会软件的人。现在需要做一个软件,只能硬着头皮自己上了。在动手之前我想先看看有多少种可能的方法,哪种最省时间。


软件是一个2D图形界面,上面有些图形标尺、指针和文本之类,在一个预定显示区内显示。

有一个外部socket UDP server数据源,我可以控制它发过来的文本格式。在不同的数字域前面加上报头用来辅助解析。

我写的软件首先要创建一个UDP client,然后要解析server发过来的文本,把数据提取到本地变量里面。Socket每收到一个包,本地变量会刷新一次,产生一次更新事件。

每次更新事件触发一次GUI的刷新。GUI上面的元素运行规则很简单。我举个例子,见下图。



图中只有绿色对象是动态的,其余颜色对象都是静止的。

有两个图层,静止的对象在顶层,动态对象在底层。静止顶层的透明部分是窗口,不透明部分会遮盖底层的对象。上图中有一个矩形窗口框住左侧标尺,右侧粗线圆形内部区域是一个窗口,外侧不透明,底部三个文本框各有一个矩形窗口用来显示数字。

图中用到三个float型变量,值显示在底部方框里。socket报文格式可以是"Incoming V1=65.7; V2=6; V3=298.5"。解析后分别赋值给三个变量。

“平移A”用来驱动左侧的垂直标尺,三角形指向的位置就是“平移A”的值。标尺顶端是-10,低端是110,我可以保存为一个狭长的BMP位图。然后在软件里纵向平移到正确位置。

“旋转”用来驱动右侧圆形窗口内的绿色十字线绕圆心转动。绿色箭头指向正上方时旋转值=0,旋转值增大时箭头顺时针方向转动。值到359.99之后会归0。

“平移B”用来驱动旋转后的绿色十字线沿绿色箭头的方向平移,沿箭头方向的那根绿线始终穿过窗口圆心。平移值为正的时候绿线交点在圆心一侧,为负的时候在圆心另一侧,值越大离圆心越远。

做这么个例子就是想说明有对象需要平移和旋转叠加,这个用矩阵应该非常容易实现。


我的环境是Visual Studio 2010 x64,有DirectX SDK(Feb.2010)。我用过MFC、VB、C#,基本上就是Visual Studio里头的这些东西。不过我经验有限,写过基本对话框界面,一些常用的控件都能用,不熟的看MSDN或者来CSDN搜索都可以学会。读英语文档无任何障碍。手里有《Visual C++.NET中文版新概念百例》、《把脉VC++》、《OpenGL游戏编程》,还有两本分别针对WDM和WDF驱动设计的书,跟这个主题关联不大。

因为这个涉及一些图形处理,我没做过。应该有很多种方法。我看见别人做的类似功能的小软件连位图一起才1.6MB,实现的功能和涉及的对象比我贴的范例图示复杂很多。不知是用什么方法做的。

昨天下载了这篇文档《基于Direct3D的2D游戏开发与实现》
http://wenku.baidu.com/view/9a92dcfb770bf78a652954b3.html

看了用DX做2D游戏的大致思路,不过不太清楚是不是有点杀鸡用牛刀了,还希望做过类似东西的朋友指点一下用哪种方法比较快捷,我好进一步查找资料,多谢了。
...全文
294 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
actionwill 2011-06-21
  • 打赏
  • 举报
回复
你说的图形界面在VS的世界里还是比较容易实现的,而且运行的硬件应该也是PC,那么就不用考虑资源和效率的问题,不过看着你的描述,这个软件的界面还是比较简洁的。不过对于做硬件的来说 还是需要学习一些东西的,花的是时间。
Simality 2011-06-18
  • 打赏
  • 举报
回复
我昨天看了GDI+的一些教程,也下到了GDIplus SDK。出乎意料的小,就是一组封装好的库和一些头文件。回想起以前下载DDK、WDK、DXSDK时那个寒。

现在试着用MFC和GDI+先写写看,待会儿也建立个C#的项目对比着看看。此帖暂不结贴,有什么大问题会回来补充一下。东一帖西一帖容易扰乱版面。
CSharp_XinBing 2011-06-18
  • 打赏
  • 举报
回复
GDI和GDI+都可以,但GDI+更方便些。
CSharp_XinBing 2011-06-18
  • 打赏
  • 举报
回复
应该使用VB或是C#来做这个软件的。使用它们的界面控件来做,会方便很多。
Simality 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ilysony 的回复:]

去看看GDI, 就可以解决你的问题了。
[/Quote]

多谢,刚才换了几次关键字后也搜索到了别人用GDI的只言片语。我吃完饭就去找找(下午边发帖子边跟美国那边视频调放大器电路,后半夜上网的鬼佬有木有,快11点吃晚饭的技术宅有木有……)。
Sou2012 2011-06-17
  • 打赏
  • 举报
回复
去看看GDI, 就可以解决你的问题了。

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧