基于gdi++++

上传人:j****9 文档编号:47048404 上传时间:2018-06-29 格式:DOC 页数:5 大小:1.46MB
返回 下载 相关 举报
基于gdi++++_第1页
第1页 / 共5页
基于gdi++++_第2页
第2页 / 共5页
基于gdi++++_第3页
第3页 / 共5页
基于gdi++++_第4页
第4页 / 共5页
基于gdi++++_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于gdi++++》由会员分享,可在线阅读,更多相关《基于gdi++++(5页珍藏版)》请在金锄头文库上搜索。

1、基于 MVC 架构的 LED 灯具图形布局平台设计与实现 0 引言城市景观照明是美化生活环境、展示城市风采的重要手段。LED作为照明行业的第四代产品,具有寿命长、光效高、光色纯、稳定性能高、安全性好、无辐射、低功耗、抗震、耐冲击等特点,在景观照明领域及其它照明领域正在逐步地取代传统光源1,2。LED灯具规模的扩大、景观图案复杂程度的提高以及与表面结构复杂建筑物一体化的要求,导致的这种灯与灯之间空间关系的任意性,使得景观灯安装分布不均匀,LED像素点分布不均匀,从而造成在计算机屏幕上进行布局时,像素点行列间距非等比例放大,造成实际布局效果的变形,因此对LED灯具进行布局设计成为了LED灯饰异构控

2、制系统要解决的关键问题之一3。LED灯具布局软件应完成两大基本功能:实现灯光系统中LED像素物理坐标与计算机屏幕上逻辑坐标的一一对应,用以描述每个LED灯在布局平面中的位置;实现灯光系统中控制器与灯具的控制逻辑关系的映射,使得控制器得以正确地控制各个灯具,实现数据的传送和效果显示。业内在LED灯具布局软件平台的开发上有代表性的是Led Manager系列、Easy Player系列、Led Player系列,它们基本上都已实现了对以上功能的支持,但在复用扩展性和易用性方面都存在着一些问题。其中Led Manager通过填写数据表可以布局任意位置的像素点,但是操作过于复杂,一个像素点需要填写4个

3、参数(物理和逻辑上的坐标值),在进行大型工程布线时,会造成软件布局阶段工作量过大,易用性严重不够4;Easy Player在进行软件布局时操作相对简单,支持直接图形化操作,但是重用性和扩展性不足,不支持布局文件的局部修改,当工程中布线需要微调时,只能重新来过,浪费工时5;Led Player在进行软件布局制作异形文件时不够开放,如果是对一般的视频幕墙进行布局,可以直接使用其提供的布局文件,但是在工程布线需要修改时,只能通过其售后服务的技术支持进行,这样就在一定程度上延误工期6。本文在MVC架构下,结合GDI+和双缓冲技术在开发通用图形化工具方面的强大优势,设计了一个低耦合、高复用、扩展性强且操

4、作简单、支持动画编辑效果,可以在布局时进行局部微调、视图开放的LED灯具布局平台。1 MVC架构概述MVC(model-view-controller)把交互系统的组成分解成模型、视图、控制三种构件、其中模型构件独立于外在显示内容和形式,是软件所处理的问题逻辑的内在抽象,它封装了问题的核心数据、逻辑和功能的计算关系,独立于具体的界面表达和输入/输出操作;视图构件把表示模型数据及逻辑关系和状态的信息以特定形式展示给用户,它从模型获得显示信息,对于相同的信息可以有多个不同的显示形式或视图;控制构件处理用户与软件的交互操作,其职责是决定软件的控制流程,确保用户界面与模型间的对应关系,它接受用户的输入

5、,将输入反馈给模型,进而实现对模型的计算控制,它是使模型和视图协调工作的部件。模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其他依赖于这些数据的视图都应反映出这样变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新,MVC解决方案如图1所示。ObserverUpdateModelcore data setOfObservers Attach(Observer) Detach(Observer) NotifygetData serviceViewMy Model My ControllerIniti

6、alize(Model) makeController Activate Display updateControllerMy Model My ViewInitialize(Model,View) HandleEvent updateAttach getData creat Manipulate displayAttach Call service图1 MVC解决方案2 LED 灯具图形布局平台设计应用于异构LED灯饰控制系统的LED灯具图形布局平台能够对灯具的相互位置关系、控制逻辑关系进行真实地映射,支持LED像素点的异型异构。实现在布局过程中图形化操作,支持自动、手动协同布局,平面微调,

7、画面连续变换不失真。通用布局图形平台的总体技术方案如图2所示。LED像素点逻辑 绘图模型视图逻辑主分 控制器客户应用端请求页面双缓冲GDI+图元类库 图 2 基于 MVC 的 LED 灯具布局图形平台总体技术方案当控制器(即LED逻辑主分控制器)收到客户应用端的请求时,它会根据请求设置自身参数,并把请求传递给LED像素点逻辑绘图模型,绘图模型封装了与图形布局相关的业务逻辑数据及其操作并通过接口函数调用GDI+图元类库,并将产生的数据利用双缓冲技术在视图上显示出来,以页面的形式反馈给客户应用端。 2.2 GDI+GDI+图元类库设计与双缓冲图元类库设计与双缓冲技术应用技术应用GDI+是对于GDI

8、的继承,它优化了大部分GDI性能,而且提供了更多的优越特性7。本平台包含的圆、直线等多种图元,需要通过GDI+封装出不同的图元类来实现。为降低开发难度,采用Composite设计定式设计并实现了以图元作为对象的类库模型,如图3所示。在构建图元对象模型(即类库模型)时,以图元基类作为Component,简单的图元(如点、直线)作为Leaf,复杂的图元(如图形)作为Composite。通过对类的抽象以及对类的多态特性的利用完成图元类之间的交互,设计点、线、面图形的统一外部引用接口,并将图形封装为动态链接库,以方便对图元的操作和控制。图元点直线图形曲线面环线ComponentLeafComposit

9、e图3 基于Composite设计定式的图元对象模型架构在绘制LED布局平台背景时,需要频繁地改变窗口内容和大小,窗口的改变会带来画面的闪烁。双缓冲技术通过设置前、后缓冲区来加快绘图速度,同时改善屏幕画面闪烁现象9。利用双缓冲技术解决屏幕刷新过程中闪烁问题的工作流程如图4所示。使用双缓冲技 术的图元图形定义缓冲用的屏幕对象 开辟缓存区加载图元图形将缓冲区的图像显示到 布局平台的背景窗口中程序结束清除缓冲区内 的图元文件在缓冲容器内绘制下一个要显 示的图元文件图4 刷新工作流程图在绘制平台背景时,在内存中开辟一块与平台背景窗口一样大小的存储区域,作为缓冲图元的容器,同时将下一帧要显示的图元图形绘

10、制到这个缓冲容器中,在显示时将容器中的数据直接复制到可见的缓存区里,由于图元图形绘制过程是在不可见的虚拟屏幕上进行的,因此可以消除屏幕的闪烁。2.3 基于 MVC 绘图模型设计在 MVC 中,模型不依赖视图和控制器,它业务处理流程相对于其他层来说是黑箱操作。为实现与物理像素点的按比例绘制、操作和控制灯具逻辑像素点的功能,LED 像素点逻辑绘图模型需要做到:能够简单快捷地实现逻辑像素点和信号线的绘制;对已经绘制的逻辑像素点,进行图元的可视化编辑,快速地实现整体或局部的连续缩放、旋转、平移而不失真。基于GDI+技术的屏幕绘图,是通过GDI+中的坐标变换来实现对图元的可视化编辑的。首先经过“世界变换

11、”将世界坐标转换为页面坐标,然后经过“页面变换”把页面坐标转换为设备坐标。基于GDI+的图元变换基本方式有:缩放:即将坐标系统中,X轴和Y轴参数值按照需求比例缩放,有:(1)ySyxSxyx;旋转:即在坐标系统中,图元相对于原点,以逆时针旋转角度,有:(2) cossinsincosyxyyxx平移:即在坐标系统中,增加X轴或Y轴坐标的起点值,有:(3)yxTyyTxx;由式(1)、式(2)可见,缩放和旋转改变了图元的位置与形状;由式(3)可见,平移不改变图元的形状,却改变了图元的中心。因此,为保证在对图元进行可视化编辑时能够直接以当前的中心点作为变换中心,减少后台计算模型计算量,需要进行仿射

12、变换8,即先在图元中心不变的情况下进行线性变换,然后进行平移变换,但是仿射复合变换不能保证图形的长度和角度不变。为了解决仿射复合变换可能存在的失真问题,引入三维齐次坐标。若基于GDI+的图元二维坐标点为,则其三维齐次),(yx坐标为,其中是一个实数。我),(hhyhxh们将定为常数1,这样在三维坐标下,缩h放、旋转、平移的变换矩阵分别表示为:; 1 0 00 S 00 0 Syx S 1 0 00 cos sin-0 sin cos R; 1 T T0 1 00 0 1yxT因此仿射复合变换为:(4)MSRT 1 f e0 d c0 b a1 T T0 cosS sinS 0 sinS cos

13、Syxyyxx 在矩阵中,元素a、b、c、d表示线性变M换量,e、f表示平移变换量。在二维欧式空间中,正交变换不改变向量的长度和夹角,取,因此 dcbam,保证图元形状不变的充分条件是:(5)0dbca(6)1)det(m满足式(5)即可保证角度不变,满足式(6)可保证长度不变。由式(4)和式(5)得:(7)0cosyS*sinxS)sinyS (* cosxSdbca由式(7)知满足式(5)的要求,即图元在m仿射复合变换后不存在角度失真问题,可满足平台只要保证图元角度不变的设计需求。3 平台测试为了测试平台布局效果,选取了规则、非规则的两种LED灯饰视频幕墙作为布局测试对象,如图5所示。(a

14、) 规则视频幕墙(b) 不规则视频幕墙图5 布局测试对象 在测试规则的视屏幕墙时,采用自动布线的模式进行逻辑像素点的录入,自动布线参数设置界面如图6所示,按照实际工程需要设置自动布线所需的参数,做到快捷方便。在对非规则、像素点分布不均匀的视屏幕墙进行逻辑布局时,一般是在手动布线模式下一对一的像素点映射。本平台所生成的逻辑布线图如图7所示。图6 自动布线参数设置模块(a)图5(a)对应的逻辑像素点映射图 (b) 图5(b)对应的逻辑像素点映射图图7 布局映射图在具体工程布线时,物理像素点需要局部调整,使得布局的软件平台需要重新绘图。基于GDI+技术,平台实现了图元局部编辑,特别是经局部像素点的平

15、移变换而保持图形不失真。布局平台的连续复合不失真变换测试结果如图8所示。(a) 布局平台绘制原图(b) 经复合缩放变换显示图(c) 经复合缩放局部平移(微调)变换显示图图8 布局变换测试结果4 结论 本文从面向对象的角度出发,结合 GDI+和双缓冲技术,在 MVC 架构下阐述 了 LED 灯具通用布局图形平台设计方案, 经过开发测试,此方案满足工程应用上对 布局平台性能的基本要求,平台生成的数 据以二进制的方式序列化到文件,其中包 括布局平面的长、宽尺寸,以及每个 LED 逻辑像素点的二维坐标,为下一步从视频 数据源中抽取颜色数据以生成灯饰系统的 控制信息流提供基础。但是在 LED 逻辑像 素点布局上只是基于二维坐标进行的初步 研究,并没有深入到三维坐标、空间曲线、 空间立体等,在较为复杂的异构体系架构 下,要做到信号源像素点与逻辑像素点一 一对应的关系,还需要从三维实物背景进 行建模布局,能够针对 LED 灯饰控制系统 异构体系特殊布局需求,开发抽象出更高 层的组件架构。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号