大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> 实现以复杂线条为基础的图形绘图

实现以复杂线条为基础的图形绘图

时间: 2021-07-31 作者:daque

郎锐 一、弁言 在gis(地舆消息体例)类软硬件安排中常常须要在画图时运用少许对立恒定但又一再运用的少许用以代办地舆状况的标记如河道、铁路、海岸线之类。每一种标记均有其各自的作风,但在各别的场所的简直表白却不尽沟通,比方代办铁路的标记是一段口角相间的细矩形,但偶尔是笔直的,在转弯时用委曲的矩形来表白。所以对于上述标记的绘制普遍不易用恒定的图标去实行,而多沿用精巧反复无常的用因变量来径直绘制的本领。明显动作gis基础标记的图形普遍都是对立比拟搀杂的线条,在mfc供给的基础类库中并未供给不妨径直运用的关系因变量。纵然是在画图功效比拟宏大的cdc中也只是供给了lineto()、setpixel()等少许通用的最基础的画图因变量,固然也不妨运用那些基础因变量来绘制gis里的基础标记,但这是功效比拟卑下的一种方法,这在洪量的画图操纵中将会展现的比拟鲜明,所以不宜倡导。正文底下将引见一种运用win32 api因变量linedda来绘制搀杂作风线条的本领来处置上述一致题目。 二、把搀杂作风的线条动作基础画图操纵 在windows nt 3.第11中学初次展示了win32 api因变量linedda,用以创造虚线或点划线,以及其余少许更搀杂的线条。所以不妨从该因变量动手来处置以搀杂线条动作基础画图操纵的题目。linedda因变量主假如经过回调体制来实行其功效的,其绘制线条老是被运用暂时表露辨别率的缺省变换和映照形式来计划的。即使不运用缺省办法,也不妨向其回调因变量lineddaproc传播细工变换的x和y值。linedda是一个32位的图形摆设接口库因变量挪用,从如次所示的因变量究竟中不妨看出其进口参数是一组线条坐标、一个回调因变量的地方以及一个指向运用步调设置数据的南针: bool linedda( int nxstart, // 线条开始的x坐标 int nystart, // 线条开始的y坐标 int nxend, // 线条尽头的x坐标 int nyend, // 线条尽头的y坐标 lineddaproc lplinefunc, // 回调因变量的南针 lparam lpdata // 运用步调设置数据的南针); 由lplinefunc南针指向的回调因变量将在除尽头外的线段的每个点上被挪用,明显这边是实行搀杂线条算法的最好场合。该回调因变量普遍不妨设置如次: void callback lineddaproc(int x, // 被求值点的x坐标 int y, // 被求值点的y坐标 lparam lpdata // 运用步调设置数据的南针); 在本质挪用时普遍选暂时的摆设情况句柄动作运用步调设置数据的南针,该南针会在挪用linedda因变量时将其传递给回调因变量lineddaproc,在回调因变量中经过cdc* pdc= (cdc*)lpdata;强迫变换即可在个中运用暂时的摆设情况句柄,并经过该句柄举行画图等处事。底下经过一个简直范例来做进一步的引见: 一致于cdc类库中的画图因变量,当咱们把那种较搀杂线条动作一个完全元素举行画图操纵时有以次几个元素须要决定:开始点、中断点坐标,画图时用的脸色等。所以不妨发端决定绘制搀杂线条的因变量采用如次情势: void clineddaview::drawwave(cpoint ptfrom, cpoint ptto, colorref crvalue) { g_crvalue=crvalue; //绘绘图形用的脸色 cdc* pdc=getdc(); //获得暂时摆设情况句柄 //经过linedda因变量挪用回调因变量proc以实行搀杂线条的画图处事 linedda(ptfrom.x,ptfrom.y,ptto.x,ptto.y,(lineddaproc)proc,(long)pdc); releasedc(pdc); //开释请求到的摆设情况句柄 } 简直的本质性处事普遍都是放在回调因变量中举行的,在这边不过标记性的实行一个海浪弧线的画图处事: void callback proc(int x, int y, lparam lpdata) { //运用lpdata传播用来画图的cdc东西的援用 cdc* pdc; pdc = (cdc*)lpdata; //该回调因变量将在线上每个点处被挪用,所以跟着x坐目标变革,横坐标y+sin(x) //也就呈正弦波形振动,经过cdc类的setpixel因变量将计划出的海浪线上的每一点 //都表露出来。 pdc->setpixel(x,y+sin(x),g_crvalue); } 在运用时该当按照需要的各别采用各别的线条作风安排算法,以至不妨在回调因变量中运用textout因变量实行文本笔墨的弧线表露等功效。在运用咱们安排的drawwave因变量举行画图操纵时,不妨象是运用cdc供给的lineto等因变量一律特殊大略的画出一条在cdc类中并未供给的海浪线。 总结:linedda因变量为画出搀杂线条典型供给了一种处置方法。固然是一种win32的处置方法,在mfc中并不径直扶助,但动作一个普遍的处置方法,它仍旧格外有效的,并且它能处置少许没有径直处置方法的比拟特殊的题目。经过对linedda因变量的发掘不妨安排出符合本人须要的不妨动作画图基础单位的搀杂线条。本步调在windows 98下,以microsoft visual c++ 6.0编写翻译经过。 

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.