社区
MS-SQL Server
帖子详情
用VF3.0如何根据提供数据生成曲线图,并自动存为位图
ycp
2000-05-31 08:58:00
各位大虾,用VF3.0如何根据提供数据生成曲线图,并自动存为位图,谢谢!
...全文
250
3
打赏
收藏
用VF3.0如何根据提供数据生成曲线图,并自动存为位图
各位大虾,用VF3.0如何根据提供数据生成曲线图,并自动存为位图,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
w102272
2000-06-27
打赏
举报
回复
保存为位图的,你自己研究吧,不是很难,调个WINDOW API就行。
至于绘制统计图,我可以提供给你一个通用函数,我使用的是MSGRAPH,不过程序很长,而且我不用VFP很久了,你自行研究吧。
*function 刷新图形
* 通用的统计图形制作函数
*功能, 从一个任意指定的数据库建立统计或刷新统计图形.参数是作图数据的数据别名,统计图形数据库别名,和刷新的通用类型字段名
* 用于作图的数据库应该是一个统计结果数据库,其作图数据格式如下:
* X轴 <--------分组---------> 数据以连续的字符串传递,行间用回车分隔,列间用制表符分隔.
* TAB 字段1 字段2 字段...
* X1 (y1 y3 )
* X2 (y2 y3 )
* 用于作图的数据库只应包括字符,数组,日期,等基本类型,不应该包含备注和通用型.但是本函数可以自动容错,不处理备注和通用类型的字段数据.
* 统计图形的类型等参数保存在统计图数据库的GENERAL字段中, 追加数据不会改变其风格, 如果需要改变风格, 应使用OLE绑定控件来设置
#define 最大数据量 100
#define 统计图服务类 "msgraph.chart" && vfp 自己使用的是"msgraph.chart"类, 将来可以考虑使用其他更强大的统计图类.
#DEFINE CRLF CHR(13)+CHR(10)
#DEFINE TAB CHR(9)
lPARAMETERS _数据别名, _图形库别名,_字段名
* 检查参数, 并校核可能的错误
if parameters()!=3 .or. type('_数据别名')!='C' .or. type('_图形库别名')!='C' .or.type('_字段名')!='C'
return 'ERROR: 调用刷新统计图形方法的参数错误'
endif
_图形库别名=alltrim(_图形库别名)
_数据别名=alltrim(_数据别名)
_字段名 =alltrim(_字段名)
if !used(_数据别名)
return 'ERROR: 用于刷新统计图形的统计数据库必须以<'+_数据别名+'>的别名没有打开.'
else
if reccount(_数据别名) > 最大数据量
return 'ERROR: 用于刷新统计图形的统计数据库数据记录太多,将影响系统性能问题和最终的统计图效果.'
endif
endif
if !used(_图形库别名)
return 'ERROR: 要刷新统计图形的统计图数据库必须以<'+_图形库别名+'>的别名没有打开.'
else
local _字段计数,_字段正确,_当前字段名
_字段正确 = .f.
for _字段计数=1 to fcount(_图形库别名)
_当前字段名=_图形库别名+'.'+upper(alltrim(field(_字段计数,_图形库别名)))
if upper(alltrim(field(_字段计数,_图形库别名)))=upper(_字段名) .and. type(_当前字段名)='G'
_字段正确=.t.
exit
endif
endfor
if !_字段正确
return 'ERROR: 统计图形数据库不包含名为:<'+_字段名+'>的通用类型字段!'
endif
endif
local _sav_select
_sav_select =select()
select (_数据别名)
local cGData
cGData = ""+TAB && 第一行列头, 并将作图数据库的第一个字段作为X轴的标记,其它为数据
local _字段计数,_当前字段名,_类型
for _字段计数=2 to fcount(_数据别名)
_当前字段名=upper(alltrim(field(_字段计数,_数据别名)))
_类型=type(_当前字段名)
if _类型 $ 'CNFYLDT' && 忽略M,G类型的数据
if _字段计数<fcount(_数据别名)
cGData=cGdata + _当前字段名+TAB
else
cGData=cGdata + _当前字段名+CRLF
endif
else 'MG'
if _字段计数<fcount(_数据别名)
cGData=cGdata
else
cGData=cGdata + CRLF
endif
endif
endfor
select (_sav_select)
* 一切都正确后, 开始建立统计图形的数据,这个数据是连续字符串形式的.
local _sav_select
_sav_select =select()
select (_数据别名)
go top
do while not eof(_数据别名)
* 只处理能够转换为字符类型的数据
local _字段计数,_当前字段名,_类型,_值,_字符值
for _字段计数=1 to fcount(_数据别名)
_当前字段名=upper(alltrim(field(_字段计数,_数据别名)))
_类型=type(_当前字段名)
_值=&_当前字段名
do case
case _类型='C'
_字符值 = alltrim(_值)
case _类型='N' .OR. _类型='F' .OR. _类型='Y'
_字符值 = alltrim(str(_值))
case _类型='L'
_字符值 = alltrim(iif(_值,'1','0'))
case _类型='D'
_字符值 = alltrim(dtoc(_值))
case _类型='T'
_字符值 = alltrim(ttoc(_值))
otherwise 'M','G'
_字符值 =''
endcase
if _类型 $ 'CNFYLDT' && 忽略M,G类型的数据
if _字段计数<fcount(_数据别名)
cGData=cGdata + _字符值+TAB
else
cGData=cGdata + _字符值+CRLF
endif
else 'MG'
if _字段计数<fcount(_数据别名)
cGData=cGdata
else
cGData=cGdata + CRLF
endif
endif
endfor
skip && 处理下一行
enddo
select (_数据别名)
select (_sav_select)
* 仅刷新统计图
select (_图形库别名)
* 这一步要求使用OLE控制,但是如果发生错误,将无法控制, 程序员必须保证正确安装VFP软件.
* 如果发生OLE错误, 简单地返回不处理, 目前尚无法捕捉,也没有必要处理所有的OLE错误
local _catch_err
_catch_err = on('error')
on error donothing=1
append general (_字段名) class 统计图服务类 DATA m.cGData
on error &_catch_err
return '已经使用了'+_数据别名 +'更新了'+_图形库别名+'的'+_字段名+'字段.' && 完成,返回
* 一旦建立了统计图形, 对于VFP 5.0的统计图形, 可以使用下面的属性来动态设置统计图形的属性.
*!* #DEFINE bartype -4099
*!* #DEFINE coltype -4100
*!* #DEFINE pietype -4102
*!* this.OleBoundControl1.ControlSource = _图形库别名
*!* this.OleBoundControl1.HasLegend = .F.
*!* this.OleBoundControl1.autoformat(bartype,1)
*!* this.OleBoundControl1.autoformat(coltype,1)
*!* this.OleBoundControl1.autoformat(pietype,7)
*!* #DEFINE C_GRAPHTITLE_LOC "It's Raining Cats and Dogs!"
*!* this.OleBoundControl1.HasTitle = !this.OleBoundControl1.HasTitle
*!* IF this.OleBoundControl1.HasTitle = .T.
*!* this.OleBoundControl1.ChartTitle.Caption = C_GRAPHTITLE_LOC
*!* ENDIF
*测试本函数的例子
*!* close database
*!* set defa to c:\1
*!* use sample in 1
*!* use genparse in 2
*!* select genparse
*!* go bottom
*!* append blank
*!* messagebox(刷新图形('sample','genparse','olegraph'))
*!* set
*!* close data
*!* return
ycp
2000-06-27
打赏
举报
回复
请关注
ycp
2000-06-12
打赏
举报
回复
请关注
mplayer 使用手册(中文)
MPlayer 名称 概要 说明 一般注记 播放选项 ( 仅用于 MPLAYER) 分路器 / 媒体流选项 OSD/ 字幕选项 音频输出选项 ( 仅用于 MPLAYER) 视频输出选项 ( 仅用于 MPLAYER) 解码 / 滤镜选项 编码选项 ( 仅用于 MENCODER) 键盘控制 SLAVE 模式协议 文件 示例 BUGS
视频滤镜参数
在配置编译FFmpeg时可以通过--disable-filters来禁止所有滤镜的编译。也可以配置编译脚本来输出所有包含进编译的滤镜信息。下面是当前可用的视频滤镜介绍。 alphaextract 把输入视频作为灰度视频来提取透明通道,它通常和alphamerge滤镜联用。 alphamerge 通过添加或者替换透明通道,让主要视频与另外一路视频混合。这里主要是使用alpha
ffmpeg翻译文档
转自 http://xdsnet.github.io/other-doc-cn-ffmpeg/index.html 1 命令语法 ffmpeg [全局选项] {[输入文件选项] -i 输入文件} ... {[输出文件选项] 输出文件} ... 即 ffmpeg [global_options] {[input_file_options] -i input_file} ....
ubuntu下mplayer 使用(3)-使用手册(中文)
MPlayer 名称 概要 说明 一般注记 播放选项 ( 仅用于 MPLAYER) 分路器 / 媒体流选项 OSD/ 字幕选项 音频输出选项 ( 仅用于 MPLAYER) 视频输出选项 ( 仅用于 MPLAYER) 解码 / 滤镜选项 编码选项 ( 仅用于 MENCODER) 键盘控制 SLAVE 模式协议 文件 示例 BUGS 作者 标准声明 名称 mp
向量几何在游戏编程中的使用
简单的2-D追踪-Twinsen编写-本人水平有限,疏忽错误在所难免,还请各位数学高手、编程高手不吝赐教-我的Email-address: popyy@netease.comAndre Lamothe说:“向量几何是游戏程序员最好的朋友”。一点不假,向量几何在游戏编程中的地位不容忽视,因为在游戏程序员的眼中,显示屏幕就是一个坐标 系,运动物体的轨迹就是物体在这个坐标系曲线运动结果,而描述这些曲线运
MS-SQL Server
34,576
社区成员
254,587
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章