VFP绘图功能-新.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用VFP为可视类增添绘图功能 /139/36139.shtml 分享到:我要吐槽 Visual Foxpro中提供了基于 _Screen和表单窗口的绘图方法,如用Pset、Line画点、线等。然而感到其方法较有限,如有时需绘制圆弧、扇形或想对多边形填充,却发现Visual Foxpro可视类未提供相应的方法。现笔者找到两种解决方法:   解决方法之一,可用控件自身的Pset及Point方法根据图形学基本算法设计子程序,该方法速度慢得让人无法忍受且效果不好。解决方法二,调用Windows API函数。Windows执行过程中常常通过动态连接库(DLLs)支持其所需的许多功能。这些动态函数库加载在内存中根据需要与用户程序进行连接。API 库中有丰富的图形操作函数。调用API函数有许多优点:功能全、速度快、程序代码小。   有关访问API函数的文章已不少,这里不再重复。然而使用API函数在窗口或设备中绘图时,必须得到该窗口或设备的句柄HDC。在Visual Foxpro参考函数中却找不到获得HDC的方法,虽然可用API中的GetDc函数获得某窗口的HDC。但该函数又需用到窗口句柄作参数。如何获得窗口句柄呢?API函数(如:GetActiveWindow, GetWindow等)直接返回的是整个应用程序窗口句柄,而用户窗口一般是VFP应用程序中的一个文档窗。 其实在VFP中返回用户窗口一个很方便的方法是通过FOXTOOLS.FLL库中WOnTop和WhToHwnd函数。上述函数语法如下:   WHANDLE WonTop()* 返回用户使用的活动窗口WHandle   HWND WhToHwnd(WHandle)* 返回相应的窗口句柄hWnd。   HDC GetDC(hWnd)* 返回指定窗口hWnd的设备句柄hDC   有了设备句柄调用绘图函数则很容易,例如:画矩形的API函数语法如下:   BOOL Rectangle(hDC,x1,y1,x2,y2)   其中x1,y1,x2,y2为矩形对角线的x,y坐标   使用这些API函数绘图需注意几点:   1.API函数使用前需用declare声明,另外应注意函数名称大小写(具体用法见文后程序)。   2.调用以上函数时,WHandle、hWnd、hDc、x1、y1、x2、y2参数及BOOL均可用Integer类型进行说明,以上函数返回值若为0,表示调用失败。   3.Visual FoxPro设置前景色、填充色等属性设置不影响API函数中绘图方式。   4.使用Visual FoxPro原类方法的绘图方法时,会清除API画的图形。因此,两者最好不要混合使用。   5.API函数参数中若有复合数据结构或数组,则应将该数据结构转换成String型。如下例语句可在VFP中调用Polygon函数绘制多边形。   declare integer Polygon in wi api integer, string ,integer   dime point(3,2)* point为三角形顶点坐标   trangle=′′   for i=1 to 3   point(i,1)=100+100*rand()* I点X坐标为(100~200)随机数   point(i,2)=100+100*rand()* I点Y坐标为(100~200)随机数   以下两条语句将多边形顶点的数值转化为字符,并连入字符串   trangle=trangle+chr(point(i,1))+chr(0)+chr(0)+chr(0)   trangle=trangle+chr(point(i,2))+chr(0)+chr(0)+chr(0)   endfor   polygon(thisform.hdc,trangle,3)   VPF中打开一个表单,在表单中新建属性并新建API函数编制的绘图方法,最后将其保存为新类库。这样一个集绘图与原表单各种功能的可视类就建好了。   以下是Visual Foxpro中用API函数动态设计饼形图的简单实例。图为执行程序后屏幕输出。三个文本框中任一数据改变后,饼形图将立即重绘。   程序:   为Form对象增加新属性hDc和新方法Pie。   Form1的Load 事件:   declare integer GetDC in win32api integer   declare integer Pie in win32api integer,integer,integer,integer,; integer,integer,integer,integer,integer   declare integer CreateSolidBrush in win32api long   de

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档