- 浏览: 2011149 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (1409)
- asp/asp.net学习 (241)
- oracle (10)
- delphi (295)
- java (27)
- pb (1)
- 每日点滴 (49)
- 学习方法 (40)
- 思想方面 (104)
- C语言 (5)
- C++ (1)
- 代码重构经验 (5)
- 软件工程 (3)
- 数据库 (99)
- 英语学习 (3)
- mysql (1)
- 该关注的网站或者网页 (42)
- 总结 (7)
- 要去做的事情 (33)
- 算法 (1)
- 网络方面 (29)
- 随感 (96)
- 操作系统 (36)
- UML (12)
- 常用工具的使用 (55)
- 脚本 (7)
- 汇编 (62)
- 数据结构 (2)
- 财务 (38)
- 语文作文 (16)
- 法律 (1)
- 股票 (88)
最新评论
-
devwang_com:
可以,学习了~~
列出文件夹下所有文件夹的树形结构--Dos命令 tree的使用 -
hvang1988:
不管用啊 frxrprt1.PreviewForm.Pare ...
fastReport预览时嵌入到别的窗体 -
00915132:
我也有这个疑问,非常 感 谢
left join加上where条件的困惑 --SQL优化 -
zhuyoulong:
学习了,高效读书
软件架构师要读的书 -
nTalgar:
非常感谢分享!
Application.ProcessMessages用法:
一个windows自带的画图/tool/">工具是无论如何也不能满足我们的画图需要的,很多效果都需要我们在另外的/tool/">工具中来实现。这些高级的功能是如何实现的呢,如何操纵一些基本的属性和函数,让它们最终能作出我们想要的效果呢?这里我们以绘制统计图来说明这些问题。
解决思路――
这里,我们暂且先撇开具体的问题,综合地一下讨论画图的问题。
画图/tool/">工具是基本元素的具体实现,对于我们初学者来说,还是有很好的参考价值的,在delphi 5中有一个自带的工程例子"……Borland\Delphi5\Demos\Doc\Graphex",这个例子可以实现一些基本的绘图功能。对这个例子多加修改,一定会有所收获的。这里就不列出它的详细代码了,有心的读者可以自己找到这个例子。我这里只是想综合地讨论这方面的问题。使用DELPHI编写绘图软件的灵魂就在于操作画布,画笔和刷子,尽可能地挖掘它们的属性和相关参数的设置。
(一)画布
画布,画笔和刷子之间的关系很明了.其实,画笔和刷子都是画布的一个属性.而画布也只是TForm,TImage,TShape等/com/">组件对象的一个属性,专门负责与图象相关的信息打交道.它的主要作用可以概括如下几点: 字串2
1.指定使用画笔,刷子和字体的使用类型;
2.绘制和填充指定形状的线或图形;
3.修饰和改变图象;
画布的主要属性有:
Brush--指定填充图形和背景的样式
CanvasOrientation--指定画布的定位类型,有coLeftToRight, coRightToLeft两个属性;
ClipRect--指定剪切矩形的边界;
CopyMode--指定图形图象的复制模式;
Font--指定画布上使用的字体;
Handle--为画布指定窗口GDI对象的设备描述表;
LockCount--指定画布被别的线程锁定的次数;
Pen--指定画布上使用的画笔,具体见下面描述;
PenPos--指定画笔当前的位置;
Pixels--指定当前剪切矩形的象素颜色;
TextFlags--指定字体在画布上的显示方式,有ETO_CLIPPED,ETO_OPAQUE,ETO_RTLREADING, ETO_GLYPH_INDEX,ETO_IGNORELANGUAGE,ETO_NUMERICSLOCALETO_NUMERICSLATIN等值可选; 字串2
画布相关的API函数及其注释如下:
Arc--按指定方式画一条弧;
BrushCopy--把位图复制到指定的画布的矩形中,用画布刷子颜色替换位图的颜色;
Chord--按指定方式画弦;
CopyRect--从一个矩形区域复制部分图象到另一个矩形区域;
Draw--用指定参数在指定位置画图;
DrawFocusRect--按指定焦点风格,通过异或操作来绘制一焦点矩形;
Ellipse--按指定参数画一椭圆;
FillRect--按指定的刷子填充一矩形;
FloodFill--使用当前选定的刷子填充指定设备描述表中的一块区域;
FrameRect--使用指定的方式画一矩形的边框;
LineTo--使用当前画笔从当前位置到指定点画一条直线;
Lock--防止其它线程在画布上绘图;
MoveTo--指定一新的当前画笔位置;
字串3
Pie--按指定方式画饼状图;
PolyBezier--按指定方式画多条贝塞尔线;
PolyBezierTo--按指定方式画多条贝塞尔线并更新当前的画笔位置值;
Polygon--绘制一个由多个顶点的任意序列组成 的多边形;
Polyline--使用当前画笔画一系列的多边形;
Rectangle--绘制矩形;
RoundRect--绘制圆角矩形;
StretchDraw--在指定的矩形区域通过指定的绘图参数来绘制图形;
TextExtent--返回使用当前字体设置的字符的象素宽度和高度等参数;
TextHeight--返回使用当前字体设置的字符的象素高度;
TextOut--在指定位置绘制文本,并更新画笔的当前位置;
TextRect--在一剪切矩形区域中绘制文本;
TextWidth--返回使用当前字体设置的字符的象素宽度; 字串4
TryLock--对当前没加锁的画布进行加锁;
Unlock--对当前加锁的画布进行解锁;
例如以下是两个小例子:
procedure TForm1.Button2Click(Sender: TObject);
var
ARect: TRect;
begin //实现了剪切效果;
with Image1.Canvas do
begin
CopyMode := cmWhiteness; //设置复制模式;
ARect := Rect(0, 0, Image1.Width, Image1.Height);
CopyRect(ARect, Image1.Canvas, ARect);
CopyMode := cmSrcCopy; //恢复复制模式;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
字串1
W: Word;
begin //在窗口中画一条彩线;
for W := 10 to 200 do
Canvas.Pixels[W, 10] :=RGB(random(255),random(255),random(255));;
end;
灵活使用这些函数及其内部参数会让我们得到意想不到的效果;
(二) 画笔
画笔是一个GDI对象,定义了绘制直线或轮廓形状的方法.
画笔内部共有五种属性:颜色,句柄,模式,风格和宽度.
Color--决定指定直线或轮廓形状的RGB颜色。
Handle--指向了窗口画笔对象句柄。
Mode--指定了画笔以何种方式在画布(canvas)上画线,在帮助/doc/">文档中的该定义是(全部以pm_开头):
type TPenMode =( pmBlack, //总是黑色;
pmWhite, //总是白色;
字串7
pmNop, //颜色不变;
pmNot, //画布颜色取反;
pmCopy, //颜色属性中指定的画笔颜色;
pmNotCopy, //画笔颜色取反;
pmMergePenNot, //画笔颜色和画布背景色取反后颜色的结合;
pmMaskPenNot, //画笔颜色和画笔背景色取反后颜色共同色的结合;
pmMergeNotPen, //画笔颜色取反后和画布背景色的结合;
pmMaskNotPen, //画布颜色和画笔颜色取反后颜色共同色的结合;
pmMerge, //画笔和画布背景色的结合;
pmNotMerge, //画笔颜色和画布背景色的结合;
pmMask, //画笔和画布背景色共同色的结合;
字串1
pmNotMask, //pmMask取反,画笔和画布背景色共同色的结合;
pmXor, //取画笔或画布背景中的任一种颜色;
pmNotXor //pmXor取反,取画笔或画布背景中的任一种颜色;
);
Style--则指定了画笔操作的风格,在线/doc/">文档中的定义是(全部以ps_开头):
type TPenStyle=( psSolid, //画笔是───
psDash, //画笔是------
psDot, //画笔是......
psDashDot, //画笔是_._._.
psDashDotDot, //画笔是_.._..
psClear, //画笔是透明色
psInsideFrame //画笔是实线,但设置大于1时会抖动; 字串9
);
另外,在windows.pas中还有其他扩展的画笔风格定义,只在特殊的支持设备上
才有效,如PS_ENDCAP_ROUND, PS_JOIN_ROUND等;
Width--指定了待使用画笔的宽度,单位是象素.
和画笔相关的函数有:
CreatePen--用指定风格创建画笔;
CreatePenIndirect--根据LOGPEN数据结构创建一画笔;
ExtCreatePen-- 创建带指定风格,宽度和刷子属性的几何画笔;
(三)刷子
刷子定义了区域填充的GDI对象,刷子是一个8×8象素的区域,它可以被绘制在指定的设
备上.刷子不仅可以是纯色的,也可以由不同的位图图案组成.
刷子的属性有位图,颜色,句柄和风格四种:
Bitmap--是指定一个外部位图文件来填充指定的区域.如果指定的图象比填充的区域大, 字串6
则只有左上角与填充区域等大的部分有效,其余的被自动裁减了.
Color--指定了刷子的颜色.当刷子风格为bsClear时,该属性无效.
Handle--指向指定设备窗口.
Style--则指定了当前刷子的填充风格,在线/doc/">文档中的定义是(都以bs_开头):
type TBrushStyle=( bsSolid, //填充格式为实体填充
bsClear, //填充格式为透明填充
bsHorizontal, //填充格式为------
bsVertical, // 填充格式为|||||
bsFDiagonal, // 填充格式为/////
bsBDiagonal, // 填充格式为\\\\\
bsCross, // 填充格式为+++++
bsDiagCross // 填充格式为xxxxx
字串1
);
和刷子有关的API函数有:
CreateBrushIndirect--根据LOGBRUSH创建一刷子;
CreateDIBPatternBrushPt--使用设备无关位图来创建刷子,以便指定刷子的模式;
CreateHatchBrush--创建一带有阴影模式的刷子,阴影模式为以HS_开头的常数;
CreatePatternBrush--用位图来创建刷子,以便指定刷子的模式;
CreateSolidBrush--创建一实体颜色刷子;
GetBrushOrgEx--获取指定设备描述表中当前选择刷子的原点;
GetSysColorBrush--获取和指定颜色索引相关的逻辑刷子的句柄;
SetBrushOrgEx--设置指定设备描述表中当前选择刷子的原点;
(四)画图和填充相关的API函数;
BeginPaint--准备在指定窗口绘画或对指定区域进行填充;
字串5
DrawAnimatedRects--NT支持函数,画一环有游动边框的矩形;
DrawCaption--NT支持函数,为指定窗口的标题赋值;
DrawEdge--为指定矩形画一道或多道边框;
DrawFocusRect--画焦点矩形;
DrawFrameControl--画一指定类型和风格的边框/com/">控件;
DrawState--NT支持函数,为图象画一可视效果标明其状态;
DrawStateProc--NT支持函数,调用为图象画一可视效果标明其状态的函数;
DrawTextEx--NT支持函数,在指定区域输出格式化文本;
EndPaint--结束绘画;
ExcludeUpdateRgn--将窗口无效部分(更新区域)从裁剪区中排除掉;
GdiFlush--使当前GDI闪烁;
GdiGetBatchLimit--获取缓冲GDI函数数量;
GdiSetBatchLimit--设置缓冲GDI函数数量;
GetBkColor--获取背景颜色;
GetBkMode--获取背景模式;
字串8
GetBoundsRect--获取边界矩形;
GetROP2--获取当前绘图模式;
GetUpdateRect--获取指定窗口最小的矩形;
GetUpdateRgn--获取描述窗口中无效区的区域;
GetWindowDC--获取窗口DC;
GetWindowRgn--获取窗口区域;
GrayString--在指定位置画灰色文本;
InvalidateRect--使DC指定的矩形无效;
InvalidateRgn--使DC指定的矩形无效;
LockWindowUpdate--禁止或允许在指定窗口中绘画;
OutputProc--调用输出进程,向GrayString输送文本;
PaintDesktop--NT支持函数,在指定的窗口区域用指定的桌面颜色或墙纸填充裁剪区;
RedrawWindow--更新客户区的指定区域或矩形;
SetBkColor--设置背景颜色;
SetBkMode--设置背景模式;
SetBoundsRect--设置边界矩形; 字串1
SetRectRgn--设置矩形区域;
SetROP2--设置当前绘图模式;
SetWindowRgn--设置窗口区域;
UpdateWindow--更新窗口;
ValidateRect--使客户区中指定矩形有效;
ValidateRgn--使客户区中的指定区域有效;
WindowFromDC--获取和指定窗口相关的句柄;
具体实现――
1.本例以常见的统计图来说明问题。该例能实现对统计图的动态绘制,并且可以自定义设置统计图的形状和颜色。在说明问题之前,来了解/doc/">程序用到的一些比较复杂的函数或算法:
函数――
1.Polygon(Points: array of TPoint)
用于绘出指定的多边形。括号内是预定点的集合,该集合可以在使用之前定义,也可以在使用时同时定义,本例属于后者;
2.Pie(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Longint) 字串7
用于绘制饼状图,饼状图其实就是椭圆的一部分。在这些参数中,其中(X1, Y1)和(X2, Y2)定义了框住饼状图的矩形,而从椭圆中心发出的射线经过(X3, Y3)和(X4, Y4)两点,就把一个饼状图截出来了。
3.FormatFloat(const Format: string; Value: Extended)
函数的意义是按指定方式格式化字符串,Format指定了格式化的方式,Value则指定了要格式化的文本或其他数据。下面列举了一些范例,可供我们学习时参考:
格式化符号(Format) 1234 -1234 0.5 0
1234 -1234 0.5 0
0 1234 -1234 1 0
0.00 1234.00 -1234.00 0.50 0.00
#.## 1234 -1234 .5
#,##0.00 1,234.00 -1,234.00 0.50 0.00
#,##0.00;(#,##0.00) 1,234.00 (1,234.00) 0.50 0.00 字串9
#,##0.00;;Zero 1,234.00 -1,234.00 0.50 Zero
0.000E+00 1.234E+03 -1.234E+03 5.000E-01 0.000E+00
#.###E-0 1.234E3 -1.234E3 5E-1 0E0
该例是在小数点后保留两位小数,因此用"##.##",具体见/doc/">程序代码中。
算法――
本例的实现依赖一定的算法。这里介绍主要的两点:
1)在连接多边形各点时,我们要注意那几个点一定要构成一个闭合的图形,这就要保证最后一个点要和第一个点重合。至于其他的点怎么布局,则要有一定的空间感。
我们先画一个矩形,然后再根据平行关系确定其他的点:
rectangle(50,x,70,220); //画主视面;
Canvas.Polygon([Point(50, x), Point(70,x-10),Point(90,x-10), Point(70, x),Point(50, x)]); //画顶面;
Canvas.Polygon([Point(90,x-10), Point(70, x),Point(70,220),Point(90,210),Point(90,x-10)]); //画侧面; 字串1
2)确定圆上指定角度的边与圆的交点
在该例中画饼状图时,我们要按照一定的比例画扇形,这就要确定扇形的起始点和终止点。我们把起始点设为一个定点,而终止点则根据实际情况设置,如图:
――饼状图的数学原理――
假设画图时已知一个比例数是K,则在饼状图中的角度是θ=(K*360),根据图中的关系(Y轴向下符合屏幕坐标系定义),可以用三角函数知识求得PX,PY:
PX=op*cosθ
PY=op*sinθ
上述式子的前提条件是O点是原点,OP是圆的半径。如果O点不是原点,而是坐标系中的一个点(X0,Y0),则此时的P点坐标是
PX=X0+op*cosθ
PY=Y0+op*sinθ
3.本例的界面布局可以参考/doc/">程序运行的结果图,其中代表"刷子类型"的combobox1的items的属性设置如图。该例实现的主要代码如下:
字串6
procedure TForm1.Button1Click(Sender: TObject);
var
x,i,j:integer;
k:real;
begin
refresh;
//标明写上"Y"轴;
label4.left:=25;
label4.top:=2;
label4.caption:='Y';
label4.Transparent:=true;
//标明写上"X"轴;
label5.left:=395;
label5.top:=227;
label5.caption:='X';
label5.Transparent:=true;
x:=220-round(strtofloat(edit1.text)/strtofloat(edit2.text)*200);
with form1.Canvas do
begin
pen.width:=strtoint(edit3.text); //设置画笔宽度;
字串4
case combobox1.Items.IndexOf(combobox1.text) of //设置刷子的填充风格;
0: brush.style:=bsSolid;
1: brush.style:=bsClear;
2: brush.style:=bsHorizontal;
3: brush.style:=bsVertical;
4: brush.style:=bsFDiagonal;
5: brush.style:=bsBDiagonal;
6: brush.style:=bsCross;
7: brush.style:=bsDiagCross;
end;
//画出X轴;
MoveTo(2,220);
LineTo(400,220);
//画出Y轴;
MoveTo(20,5);
LineTo(20,230);
//画出Y轴的箭头方向"∧";
moveto(20,5);
lineto(15,12);
字串2
moveto(20,5);
lineto(25,12);
//画出X轴的箭头方向"∧";
moveto(400,220);
lineto(395,213);
moveto(400,220);
lineto(395,227);
if checkbox1.Checked then //绘制立体的直方柱图;
begin
//画正面的矩形图;,可以根据实际情况动态定义它的高度;
rectangle(50,x,70,220);
//画顶面,随着正面矩形的高度变化而变化;
Canvas.Polygon([Point(50, x), Point(70,x-10),Point(90,x-10), Point(70, x),Point(50, x)]);
//画侧面,随着正面矩形的高度变化而变化;
Canvas.Polygon([Point(90,x-10), Point(70, x),Point(70,220),Point(90,210),Point(90,x-10)]);
end
else
字串9
rectangle(50,x,70,220); //如果没有选中要以立体形式绘制,则以平面形式绘制的直方柱图;
//画饼状统计图
k:=(strtofloat(edit1.text)/strtofloat(edit2.text))*360; //将数据按比例转换成;
i:=round(250+100*cos(k*3.14159/180));
j:=round(120+100*sin(k*3.14159/180));
pie(150,20,350,220,i,j,350,120);
label3.caption:='比例是'+formatfloat('##.##',(k/360)*100)+'%'; //设置比例的函数;
end;
end;
procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if colordialog1.Execute then //设置窗口背景颜色;
shape1.Brush.color:=colordialog1.Color; 字串7
form1.color:=ColorDialog1.Color;
end;
procedure TForm1.Shape2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if colordialog2.Execute then //设置刷子颜色;
shape2.Brush.color:=colordialog2.Color;
form1.Canvas.Brush.color:=colordialog2.Color;
end;
procedure TForm1.Shape3MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if colordialog3.Execute then //设置画笔颜色;
shape3.Brush.color:=colordialog3.Color;
form1.Canvas.Pen.color:=colordialog3.Color;
字串6
end;
发表评论
-
form打开时的关闭代码
2011-10-25 20:29 1525摘自:http://topic.csdn.n ... -
TUpdateSQL更新问题 提示Update Failed
2011-08-29 20:26 1201摘自:http://topic.csdn.net/u/200 ... -
图解如何用Eurekalog跟踪程序错误
2011-08-12 07:28 910图解如何用Eurekalog跟踪程序错误 摘自:h ... -
VirtualBox 复制VDI 并能创建新的虚拟机
2011-07-21 11:14 2692摘自:http://www.nonabyte.net/how- ... -
截获所有异常 不报错
2011-07-12 16:52 1202摘自:http://media.ccidnet.c ... -
delphi exe程序以及DLL程序如何在模块内部获得各自的路径
2011-07-11 16:38 1273delphi Exe程序以及DLL程序如何在模块内部获得各自的 ... -
Delphi文本文件读写
2011-07-11 14:55 1183Delphi文本文件读写 (2008-10-31 1 ... -
Delphi自定义的消息的使用
2011-05-31 14:12 2273阅:已验证,可通过; 摘自:http://blog.1 ... -
怎么查看OutputDebugString输出的信息?debugview
2011-05-25 16:02 3803网上很多说用debugview查看,我自己写了一个程序,里面用 ... -
Delphi里查看该变量的内存值
2011-05-25 13:32 1094Delphi里查看该变量的内存值:Run==>Evalu ... -
注册表操作 写入autorun启动项,键值为本程序的全路径
2011-05-20 15:40 1787procedure TForm4.Button2Click ... -
报说包frx7和frxdb7都包含了某个单元的错误
2011-05-11 09:59 9821. 问题描述:在安装FastReport3的时候,安装到- ... -
Delphi中使用ListView和TreeView的Item中的Data可能被忽略的内存泄漏
2011-05-03 14:34 1432摘自:http://blog.csdn.net/g ... -
WM_USER的说明 用户消息ID
2011-04-28 10:46 1646WM_USER 摘自:http://baike.bai ... -
ToolButton不能改变大小
2011-04-28 10:38 3435问题描述:ToolButton不能改变大小? 问 ... -
Delphi里TOOLBAR 上的button的caption为什么显示不出来啊
2011-04-20 17:55 1711Delphi里TOOLBAR 上的button的caption ... -
delphi指针简单入门
2011-04-11 21:42 1120摘自:http://topic.csdn.net/t/2003 ... -
Delphi中paramstr的用法 应用程序间传递数据
2011-04-01 14:33 2051Delphi中paramstr的用法 应用程序间传递数据 ... -
Delphi中的THashedStringList对象 --大数据量时
2011-04-01 13:54 5102Delphi中的THashedStringLi ... -
inherited Create(AOwner); 和直接写inherited有区别吗
2011-03-26 15:44 1286摘自:http://zhidao.baidu.com/que ...
相关推荐
利用qcustomplot绘制经典清晰度函数的用时直方图 ...利用qcustomplot绘制经典清晰度函数的用时直方图利用qcustomplot绘制经典清晰度函数的用时直方图利用qcustomplot绘制经典清晰度函数的用时直方图
MATLAB 数理统计图像绘制 可以将频率分布直方图与核密度曲线、正态分布函数密度曲线叠加在一起。可以将频率分布直方图与核密度曲线、正态分布函数密度曲线叠加在一起。可以将累计频率直方图和正态分布频率分布直方图...
主要给大家介绍了关于Python使用统计函数绘制简单图形的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
使用ggstatsplot包绘制一张包含统计数据和可视化的图形,让你的sci论文再上一个档次,亮瞎审稿专家的眼睛!
统计图像各波段的直方图 并用stem函数绘制直方图
史上最全的山脊图(峰峦图)绘制代码汇总,各种类型统计图形附代码,如果没有你需要的麻烦请联系帮你解决
应用VB编程,实现比较简单函数图像的绘制。
使用键盘控制输入输出 */ #include <stdio.h> /* 调用标准输入输出头文件 */ #include <stdlib.h> /* 调用标准库函数,工具函数 */ #include <graphics.h> /* 调用图形库 */ int main() /* 整数型主函数 */ {...
1Matlab基本操作函数 2 SIMULINK仿真函数 3插值与拟合函数 4符号运算函数 5概率统计函数 6级数与微积分函数 7矩阵运算函数 8神经网络函数 9图形用户界面GUI函数 10小波变换函数 11信号处理函数 12遗传...
4、编写M函数文件,产生均值为0.5,方差为0.1的白噪声序列,并绘制序列图。 5、编写M函数文件,实现如下几种函数图形的绘制如:sin(x),cos(x),y=2x+1,y=x2,y=1/x,函数形式由输入参数指定。 6、编写M函数文件,求解...
在这个示例中,我们使用了histogram函数绘制了第一列数据的直方图,并使用scatter函数绘制了第一列数据和第二列数据的散点图。通过这些图形,我们可以直观地了解数据的分布情况、频数分布等信息,并对数据进行初步的...
箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图,因形状如箱子而得名。箱线图的绘制方法是:先找出一组数据的上边缘、下边缘、中位数和两个四分位数;然后, 连接两...
要创建经验半变异函数,确定所有位置对值平方差。将这些位置对绘制成图后(y 轴坐标为平方差的一半,x 轴坐标为位置间距),该图称为半变异函数云。
在PHP中,有一些简单的图像函数是可以直接使用的,但大多数要处理的图像,都需要在编译PHP时加上GD库。除了安装GD库之外,在PHP中还可能需要其他的库,这可以根据需要支持哪些图像格式而定。GD库可以在...
1、利用php gd库的函数绘制3D扇形统计图 <?php header(content-type,text/html;charset=utf-8); /*扇形统计图*/ $image = imagecreatetruecolor(100, 100); /*创建画布*/ /*设置画布需要的颜色*/ $white =...
利用Python计算1000以内自然数的约数个数,然后通过matplotlib绘制统计图。 下图为约数个数的散点图及其分布情况的条形图。 Python代码: import collections import matplotlib.pyplot as plt def countDivisors...
这个Matlab工具箱已经开发出来,可以根据(纳米)压痕结果绘制和分析机械性能图。 要开始使用TriDiMap工具箱,请克隆存储库,然后运行Matlab,并cd进入包含此README文件的文件夹。 您可以通过在Matlab命令提示符下...
由于工作的需要,需要以报表和图形的形式对数据进行统计分析,由于手头没有相关的开发组件,于是自己利用GDI 函数进行底层的图形绘制,配合中间层的数据统计及组合,表层嵌入HTML文件中,形成了一整套生成饼状图、...
如Excel常用函数的应用、在Excel 2010中绘制编辑图表、数据透视表和数据透视图、Excel函数在企业人事管理中的应用、Excel函数在工资管理中的应用、Excel函数在销售数据统计中的应用、Excel函数在财务计算中的应用、...