按钮-图形交互-人机交互技术
日常我们接触的软件都是可人机交互的,从早期的键盘输入,到鼠标的发明,还有游戏中的操作杆,用户已经习惯于各种菜单按钮,游戏中的角色,这种人机交互技术伴随着机电控制,传感器,算法,图形显示甚至心理学,医学等等多个子技术的配合和成熟,最后在windows 图形操作系统的推出达到顶峰,现代计算机用户完全离不开这种空气般自然存在的技术,以至于青少年出生后没有谁怀疑过手机触摸屏平板等是人造产物,以为是像牛奶是从牛挤出来的一样,这个笔记记录下一个计算机工程师视角下对这类人机交互技术的及软件层面的可交互性对象等原理的理解。
首先是鼠标,鼠标技术发明这么多年,已经有很多文章介绍它的原理和制作方法,操作系统会提供应用程序开发者使用鼠标的统一方式,一般都是消息响应方式,下面是的windows操作系统提供的鼠标 消息
WM_LBUTOONDOWN WM_RBUTTONDOWN
WM_LBUTTONUP WM_RBUTTONDOWN
WM_MOUSEMOVE
WM_MOUSEWHELL
鼠标事件是标准的,左键按下,释放,右键按下释放,中键滚动,中键按下,释放
而在win32 api 提供的C语言写法框架简化则是
WndProc(...)
{
switch(msgId):
{
case WM_LBUTTONDOWN:
...
x=getMouseX()
y= getMouseY()
onMousePress(...)
break;
case WM_LBUTTONUP:
...
x=getMouseX()
y=getMouseY()
onMouseRelease(...)
break;
case WM_MOUSEMOVE:
x=
y=
onMouseMove(...)
break;
...
default:…
}
…
}
当鼠标移动,或者左键按下,释放,操作系统将产生对应的消息,而我们写的exe,包括浏览器的页面也是在浏览器exe上将在底层有对应的消息响应代码被执行,对应的onMouseXXX消息响应方法将被调用。
计算机上还有一个重要的硬件设备叫显卡,显卡上面有个很大的芯片叫GPU,它是负责在屏幕上画画的,当然操作系统管理了这些设备并开放给应用软件开发者的是窗口和OpenGL或者DX这两种C/C++形式的API,具体使用资料或者GPU原理有很多细节省略,在这里我们常见的一个窗口的人机交互对象,或者叫GUI对象,不妨以一个按钮对象来说明。
按钮类一般叫class PushButton:public Object这样的类,这是现在常见的面向对象的应用开发方式,而pushbutton类一般都有一些属性,比如宽度 width,高度height,相对父窗口对象的位置pos,而有一个paint 事件,参考QT方法名称就叫paintEvent
class PushButton
{
void paintEvent(...)
{
....
glDrawElement(...);
}
};
这里是示意性的,不同的GUI实现,不一定是在paintEvent处立即使用OpenGL或者DX绘制。
当鼠标晃到按钮上,一般我们看到按钮光照会变化,一般有的window系统是绘制了不同的图片,通过视觉变化给人一种按钮动的感觉,其实在单击按钮,也就是左键按下绘制一种不同样式的按钮,当释放绘制缺省的按钮,所以这些绘制都是在鼠标响应方法中去实现,描述性代码就是
class PushButton:
{
paintEvent()
{
opengl资源变化
通知底层绘制
}
void drawDefaultStyle()
{
绘制缺省的按钮,一般是修改texture,vbo等opengl资源
}
void drawPressedStyle()
{
按钮被按下去时候的样式绘制代码
}
void drawHoverStyle()
{
鼠标在按钮上晃动时候的样式绘制
}
void onMouseMove()
{
如果 没有按钮被按下
drawHoverStyle()
触发 paintEvent,
}
}
void onMousePressed(...)
{
如果左键按下
drawPressedStyle()
触发paintEvent
}
void onMouseReleased()
{
如果左键释放
drawDefaultStyle
触发paintEvent
}
...
};
所以是响应鼠标事件及组合事件下的对象重绘,从而使的操作者产生视觉上的动态或者可移动可操控的假象,虚拟出对象存在的感觉,而这种感觉对于提高使用者使用计算机系统的友好,便利及无障碍是键盘输入方式没法可比的,所谓无障碍指的是,虚拟按键从外观,对操作行为的反映都和真实按钮高度接近,那人在按真实的按钮和按鼠标其实不会感到不同,体验特别自然,我们这时可以说Push Button是真实按钮的一个虚拟对象,这样这种人机交互技术其实也可以被称作做虚拟现实技术,现在平板上很多按钮界面,可以直接触碰平板,已经被做的非常逼真了。 不光图形用户界面,图形操作系统得溢于人机交互技术和图形技术的发展,计算机辅助设计制造仿真,游戏,虚拟现实等都是这一类技术的衍生品,加上AI的不断进步,可能以后真的虚拟系统会和实际物理世界人类会区别不开,反而要考虑这类技术的极限和弊端,毕竟技术本身是把双刃剑,但是人类好奇心和事物的可能性没有极限。
浙公网安备 33010602011771号