游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4622|回复: 16

提问:一个底层的关于界面的问题

[复制链接]

1

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2005-12-17 00:40:00 | 显示全部楼层 |阅读模式
我们知道我们平时create一个dialog 这个dialog就出现在我们面前,其他的基本控件也是这样,菜单啊 工具栏啊 按钮啊, 这些是怎么创建出来的??或许大家都会说,这是人家的工具包写好了,我们用接口就行了,但是,总得有个实现的过程吧,我用tc 画了一些框框,但是很粗糙,根本就不是我们现在看到的这么细腻, 于是到网上搜 ,用“可视化” “图形用户界面” “计算机图形学” 关键字都没有找到我想要的东西,于是想到这了 ,希望大家帮帮看 ,就算是科普扫盲吧,谢谢先:)

0

主题

20

帖子

22

积分

注册会员

Rank: 2

积分
22
发表于 2005-12-17 02:42:00 | 显示全部楼层

Re:提问:一个底层的关于界面的问题

用tc画了框框?

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-12-17 09:48:00 | 显示全部楼层

Re:提问:一个底层的关于界面的问题

界面就是框框,没错,但是一堆框框,主要分成处理鼠标事件的框框和显示用的框框。这个粗糙是纯绘图的问题吧,以前在dos时代就有很漂亮的界面了。

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2005-12-17 10:18:00 | 显示全部楼层

Re:提问:一个底层的关于界面的问题

我也想过这个问题,应该是把全屏幕的缓存改成窗口式的缓存,加上一些相对坐标 , 其他应该不难吧,就是消息的检测 , 可以考虑自己做消息,不过很难,毕竟那些触发机制已经和操作系统相关了,如果用windows的消息的话,自己就画画界面就可以了 , 稍微好点可以考虑做一下IDE的那种拖动编辑式的控件.

32

主题

377

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
发表于 2005-12-17 11:20:00 | 显示全部楼层

Re:提问:一个底层的关于界面的问题

几乎所有的控件(mfc里面的比如)在windows里面都是一个窗口.
所以,楼主的问题其实是:
windows的窗口在系统的最低层是怎么绘制出来的......
说不定也是事先画好的位图或者计算好的象素矩阵吧....
[em10]

1

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
 楼主| 发表于 2005-12-17 14:04:00 | 显示全部楼层

Re:提问:一个底层的关于界面的问题

谢谢以上各位的热心回复,确实,我有很多的好奇心:桌面是怎么做出来的?IDE是怎么做出来的?在没有IDE的时候界面程序都是怎么设计的?vc,java,dephi这些可视化的集成环境是怎么做出来的?我先不管什么消息啊,判断坐标啊,我只想要一个很“白痴”的对话框 ,不要菜单 不要工具栏,只要一个窗口,不要通过操作系统的接口,也不要工具的接口 ,只要c++写的一个叫dialog的类,不要误解,其实我是想知道而已,并没有说什么我要做“中国人自己的” IDE,继续吧 ,谢谢了

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2005-12-17 15:48:00 | 显示全部楼层

Re: Re:提问:一个底层的关于界面的问题

研究僧: Re:提问:一个底层的关于界面的问题

谢谢以上各位的热心回复,确实,我有很多的好奇心:桌面是怎么做出来的?IDE是怎么做出来的?在没有IDE的时...


看这个GUI示例

界面全是自绘的,对鼠标,键盘的处理也是自行处理的.

1

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
 楼主| 发表于 2005-12-17 16:34:00 | 显示全部楼层

Re:提问:一个底层的关于界面的问题

谢谢hyzboy的回答,谢谢你的丰富的资料,可是下载到我的机器上看了一下,要opengl的库的支持的,难道我们现在的桌面系统、IDE的控件也是通过opengl来做出来的??还有一个可能大家会觉得 很可笑的问题:“一个点是怎么在屏幕上画出来的”,要注意的是,要保证在不同的系统中正确画出。因为qt可是做到,不管你在那个环境 它的对话框的类qdialog都能正确出现在你的面前。我猜测啊,会不会是在unix下包装了motif ,在windows下包装了windows的一些图形接口,但是有不像,因为它没有ID的概念。所以我就提出了这个有些可笑的问题:“一个点是怎么在屏幕上画出来的” 不知道标准的c有没有图像这方面的函数呢,因为我们接触的某个具体的c,比如tc啊vc啊bc啊这些都是自带的绘图函数,刨根问底的说,这些c是怎么画点的?汇编?但是汇编是针对不同的处理器,unix下有汇编吗?apple下有汇编吗?我都不知道,还请大家多多指教?不为别的,只是想知道而已,谢谢各位了。

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-12-17 16:54:00 | 显示全部楼层

Re:提问:一个底层的关于界面的问题

针对不同操作系统的编码是必要的,因为接口不同。
在dos下编写过图形程序的人因该有映像。那时是直接改变显存来画点。
后来有了一些别人编写好的接口。
基本上UI的根本还是建立在直接改变显存上,可能各个操作系统底层都在做着同样的事。

Windows9x以来就要通过驱动程序操作显存了。建立在windows平台上的程序,绘图必过GDI,GDI可以工作在所有的显示驱动上,或者说他只利用了最低的标准。
现在在windows屏幕下改变图像,只有两个选择利用GDI、或者利用驱动程序提供的能力。

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2005-12-17 20:28:00 | 显示全部楼层

Re:提问:一个底层的关于界面的问题

一、C/C++语言本身并不提供绘图函数,绘图函数来自操作系统API或是自行根据硬件实现。
二、QT是针对不同操作系统API并对开发者提供统一的接口
三、任何操作系统都有汇编支持

最后: Apple MacOS X的图形用户界面是使用OpenGL做出来的。未来的Windows Vista是使用Direct3D做出来的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 02:23

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表