没有合适的资源?快使用搜索试试~ 我知道了~
用VFP为可视类增添绘图功能

温馨提示


试读
3页
Visual Foxpro中提供了基于 _Screen和表单窗口的绘图方法,如用Pset、Line画点、线等。 然而感到其方法较有限,如有时需绘制圆弧、扇形或想对多边形填充, 却发现Visual Foxpro可视类未提供相应的方法。现笔者找到两种解决方法:
资源推荐
资源详情
资源评论












用VFP为可视类增添绘图功能
________________________________________
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 win32api 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 函数动态设计饼形图的简单实例。图为执行程序后屏幕输出。三个文本
框中任一数据改变后,饼形图将立即重绘。
资源评论

- xiaodao_2015-04-19是个方法,不过已经有现成的GDI+的类可用
- jjcoarthur2012-10-31還要加工美化

luckeey
- 粉丝: 4
- 资源: 20
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
