0 概述
dislin是一个完全跨平台的绘图程序,它不需要其他任何依赖库。可以在cmd窗口下或者windows窗口下绘图,支持多种编程语言。支持8种字体,数学公式等。
1 下载安装编译链接
我是用在visual c++上绘图。
从Distributions | Max Planck Institute for Solar System Research下载windows 32-bit和windows 64-bit。
然后解压缩,然后点击setup.exe安装。windows 10 smart screen 会提示说有风险,点击 仍要运行。安装在c盘dislin目录下。
然后设置环境变量path。添加c:\dislin目录。
visual studio项目设置:
1)项目-c\c++-常规,添加c:\dislin目录;
2) 项目-c\c++-代码生成,设置成/MTd;
Other Questions | Max Planck Institute for Solar System Research网站上说要设置成/MT,但是我的只能设置才/MTd才可编译成功。为啥?
3) 项目-链接器-输入添加disvc.lib,discpp.lib。
2 编程绘图
dislin有一个重要的概念,调用层级level 0, level 1, level 2等等。意思是有一些函数可以随时调用,而有一些函数必须按照预定的顺序进行调用,因为这些函数需要其他函数的信息。dislin将这种调用规定为层级。
0 before initialization or after termination;层级0:在初始化之前或绘图结束之后调用
1 after initialization or a call to ENDGRF;层级1:在初始化或者endgrf调用之后
2 after a call to GRAF, GRAFP or GRAFMP;层级2:在graf、grafp、grafmp调用之后
3 after a call to GRAF3 or GRAF3D.;层级3:在graf3或graf3d调用之后
在DISLIN中,图形仅限于称为页面的矩形区域。在默认模式下,每厘米有100个点,而点(0,0)位于左上角。
(0,0) +----------------------------------+
| |
| |
| |
| DIN A 4 Landscape |
| |
| |
| |
+----------------------------------+ (2969,2099)
通常,程序应具有以下结构:
(1)页面格式,文件格式和文件名的设置
(2)初始化
(3)绘图参数设置
(4)绘制轴系统
(5)绘制标题
(6)绘制数据点
(7)终止。
C库使用int,float和char变量。实例程序DISHLP给出了C例程语法的详细描述,或者可以在头文件’dislin.h’中找到,该文件必须包含在所有C程序中。
#include <stdio.h>
#include "dislin.h"
main()
{
disini ();
messag ("This is a test", 100, 100);
disfin ();
}
c++程序:
#include <iostream>
#include "discpp.h"
main()
{ Dislin g;
g.metafl("XWIN");
g.disini ();
g.messag ("This is a test", 100, 100);
g.disfin ();
}
1 metafl函数定义显示输出格式。
可以“BMP”、“GIF”、“PNG”等格式输出,也可以“XWIN”等显示器输出。XWIN输出窗口大小为屏幕的大约2/3。
2 disini函数初始化。
3 绘图
带有坐标轴的曲线用graf函数绘制。
graf (float xa, float xe, float xor, float xstp, float ya, float ye, float yor, float ystp); |
XA, XE | x轴的最小值和最大值. |
XOR, XSTP | x轴刻度标签起始值及间隔. |
YA, YE | y轴的最小值和最大值. |
YOR, YSTP | y轴刻度标签起始值及间隔. |
平面曲线用curve绘制。
curve (const float *xray, const float *yray, int n); |
XRAY, YRAY | 是包含x和y坐标的数组。 |
N | 为数据点的个数。 |
三维图形用graf3d和curv3d绘制。 语法与二维对应。
4 disfin函数结束绘制。
默认为黑白图形。
The default size of GIF, TIFF, PNG, PPM, BMP, IMAGE, SVG, EMF and virtual files is set to 853 x 603 points but can be modified with the routine WINSIZ.
3 示例
Dislin g;
g.metafl("BMP");
g.disini();
g.line(0, 0, 2970, 2100);
g.disfin();