delphi 正弦曲线图

本实例要在窗体上直接绘制正弦曲线,为了防止窗口切换的过程中会输出不完整的图形,因此绘制图形的关键代码都放在了窗体的OnPaint过程中,代码如下:

procedure TForm1.FormPaint(Sender: TObject);

var

 x: Integer;

 y,a: Double;

begin

 Canvas.Pen.Width:=3;

 Canvas.MoveTo(0,Trunc(self.ClientHeight/2));

 for x := 0 to self.ClientWidth do

 begin

  a := (x/self.ClientWidth) * 2 * Pi;

  y := Sin(a);

  y := (1-y)*self.ClientHeight/2;

  Canvas.LineTo(Trunc(x), Trunc(y));

 end;

end;

  程序首先设置了窗体的Canvas对象中画笔的宽度,并且把绘图的起点移动到了窗体中(0,Trunc(self.ClientHeight/2))的位置。然后通过一个循环中的a:= (x/self.ClientWidth)*2*Pi语句将一个正弦周期内的角度值转换为弧度值,并且把正弦计算后的结果存储在变量y中。最后,循环中的Canvas.LineTo(Trunc(x), Trunc(y))语句就会在窗体上绘制出连续的正弦曲线。

  程序代码如下:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls;

type

 TForm1 = class(TForm)

 procedure FormPaint(Sender: TObject);

 procedure FormResize(Sender: TObject);

 procedure FormCreate(Sender: TObject);

private

 { Private declarations }

public

 { Public declarations }

end;

var

 Form1: TForm1;

 implementation

 {$R *.dfm}

 procedure TForm1.FormPaint(Sender: TObject);

var

 x: Integer;

 y,a: Double;

begin

 Canvas.Pen.Width:=3;

 Canvas.MoveTo(0,Trunc(self.ClientHeight/2));

 for x := 0 to self.ClientWidth do

 begin

  a := (x/self.ClientWidth) * 2 * Pi;

  y := Sin(a);

  y := (1-y)*self.ClientHeight/2;

  Canvas.LineTo(Trunc(x), Trunc(y));

 end;

end;

procedure TForm1.FormResize(Sender: TObject);

 begin

  Refresh;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

 self.DoubleBuffered:=true;

 //防止图形闪烁

end;

end.

  保存文件,然后按F9键运行程序。在程序运行过程中,会自动在窗体上绘制正弦曲线,运行结果如图1所示。

图1 程序运行结果

  通过本程序的学习,不但可以绘制正弦曲线,也可以绘制余弦曲线、正切曲线等各式各样的曲线,方便科学研

(0)

相关推荐

  • 在Delphi实现在数据库中存取图像的图文演示无错

    本实例演示如何在数据库中存取图像文件. 向窗体上添加一个TListBox组件.一个TImage组件和一个TTable组件,设计完成的主界面如图1所示. 图1 主界面 本系统中需要设计一个新的基于Paradox 7的数据库Image.db,图2为设计完成的Image.db数据库. 图2 设计完成的数据库 为了方便测试程序,Image.db数据库存储在实例程序所在的路径下. 设置TTable组件的TableName属性为Image.db,Active属性为True. 在程序运行初期,首先会判断Ima

  • delphi实现将BMP格式图形转化为JPG格式图形的方法

    本文实例讲述了delphi实现将BMP格式图形转化为JPG格式图形的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: procedure ConvertBMPtoJPG(SFileName,DFileName:string); Var   J:TJpegImage;   I:TBitmap;   S,D:String; begin   s:=SFileName;   d:=DFileName;   J:=TJpegImage.Create;   I:=TBitmap.Crea

  • Delphi实现图像文本旋转特效完整实例代码

    本文以实例讲述了Delphi实现图像文本旋转特效的解决方法,在本程序中利用的控件主要是Panel 控件.Image 控件.Edit 控件.Label 控件和Button 控件.本程序的关键是利用Delphi 的bmp_rotate()函数来实现旋转图像的功能.并巧妙地调用相关Windows API 函数来实现对文本的旋转特效. 完整的实例代码如下: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics,

  • delphi实现保存和读取图片的方法

    本文实例讲述了delphi实现保存和读取图片的方法,是非常实用的技巧.分享给大家供大家参考.具体实现方法如下: 首先引用jpeg 1.显示图片: if OpenPictureDialog.Execute then begin img1.Picture.LoadFromFile(OpenPictureDialog.FileName); btnPicture.Text:=OpenPictureDialog.FileName; end; 2.保存图片: var Stream:TMemoryStream

  • delphi程序全屏显示无标题栏覆盖整个屏幕(适合屏保)

    delphi 程序全屏显示无标题栏,覆盖整个屏幕,这个在做工控机或屏保时有用的,所以记下 复制代码 代码如下: procedure TMainFrm.FormCreate(Sender: TObject); begin with MainFrm do begin { Position form } Top := 0 ; Left := 0 ; { Go full screen} BorderStyle := bsNone ; WindowState := wsmaximized; ClientW

  • Delphi实现截屏存盘的方法

    本文实例讲述了Delphi实现截屏存盘的方法.分享给大家供大家参考.具体分析如下: 该实例可实现截取屏幕,并保存为JPEG文件格式的功能. procedure TForm1.ScreenCap(LeftPos,TopPos,RightPos,BottomPos:integer); var RectWidth,RectHeight:integer; SourceDC,DestDC,Bhandle:integer; Bitmap:TBitmap; MyJpeg: TJpegImage; Stream

  • Delphi实现图片滚动切换的完整实例代码

    本文以实例介绍了Delphi实现图片滚动切换的方法.该程序可以实现图像的滚动播出,并且通过本代码可控制窗口中的图像向上滚动,通过调节速度滚动条的值还可以调整滚动的速度:点击"停止"按钮,图像即停止滚动. 完整的功能代码如下: unit Unit1; interface uses Windows, Classes, Graphics, Forms, Controls, Menus, Dialogs, StdCtrls, ExtCtrls, SysUtils, ComCtrls, Butt

  • delphi 正弦曲线图

    本实例要在窗体上直接绘制正弦曲线,为了防止窗口切换的过程中会输出不完整的图形,因此绘制图形的关键代码都放在了窗体的OnPaint过程中,代码如下: procedure TForm1.FormPaint(Sender: TObject); var x: Integer; y,a: Double; begin Canvas.Pen.Width:=3; Canvas.MoveTo(0,Trunc(self.ClientHeight/2)); for x := 0 to self.ClientWidth

  • matplotlib 曲线图 和 折线图 plt.plot()实例

    我就废话不多说了,大家还是直接看代码吧! 绘制曲线: import time import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 10, 1000) y = np.sin(x) plt.figure(figsize=(6,4)) plt.plot(x,y,color="red",linewidth=1 ) plt.xlabel("x") #xlabel.ylabel:分别设置X.

  • 手把手教你用Matplotlib实现数据可视化

    目录 介绍 简单图形绘制 快速上手 自定义X/Y轴 图表实现 汇总 正弦曲线图 柱状图 散点图 饼图 量场图 等高线图 图形样式 折线图 散点图 饼图 组合图形样式 图形位置 figure对象 subplots对象 规范绘图方法 添加图标题/图例 线型.颜色.透明度 画布网格.坐标轴范围 图形标注方法 介绍 在使用机器学习方法解决问题的过程中,一定会遇到需要针对数据进行绘图的场景. Matplotlib 是支持 Python 语言的开源绘图库,因为其支持丰富的绘图类型.简单的绘图方式以及完善的接

  • matplotlib绘制正余弦曲线图的实现

    序言: 在python里面,数据可视化是python的一个亮点.在python里面,数据可视可以达到什么样的效果,这当然与我们使用的库有关.python常常需要导入库,并不断调用方法,就很像一条流数据可视化的库,有很多,很多都可以后续开发,然后我们调用.了解过pyecharts美观的可视化界面 ,将pyecharts和matplotlib相对比一下. pyecharts和matplotlib的区别在哪里呢?Matplotlib是Python数据可视化库的泰斗,尽管已有十多年的历史,但仍然是Pyt

  • Delphi中使用ISuperObject解析Json数据的实现代码

    Java.Php等语言中都有成熟的框架来解析Json数据,可以让我们使用很少的代码就把格式化好的json数据转换成程序可识别的对象或者属性,同时delphi中也有这样的组件来实现此功能,即IsuperObject.如果还没有这个组件的请在网上搜索下载或者在下面留言处留下你的邮箱向本人索取. 下面先说一下ISuperObject中几个常用的函数 function SO(const s: SOString = '{}'): ISuperObject; overload; 此函数传入json数据字符串

  • Delphi使用大图标编译程序的方法

    在Windows Vista. Windows7以上Windows系统中可以支持大图标显示了,但是Delphi编译出来的程序却只能显示32x32的图标,这使Delphi编译的程序看起来很不专业.下面就把Delphi编译大图标程序的方法分享一下. 要想使用大图标编译,首先要准备一个256x256的图标图片. 使用图标编辑软件,如IconWorkshop打开你的 ico文件,新建一个256x256的真彩色图标,将你的图片文件导入到该图标中.保存图标后,将图标文件拷贝到你的工程目录下,假设为maini

  • Delphi 实现软件自动升级的功能

    Delphi 实现软件自动升级的功能 原理简单,在FTP上维护一个Update.ini文件,里面记录着要更新文件的版本号,本地也有一个Update.ini文件,每次启动更新程序时,先从FTP上下载Update.ini文件到本地名字为Update_new.ini,然后比较这两个文件,如果新的版本号大于旧的,或者新的文件在就ini中没有,这些就表示要更新的文件,然后逐一下载. 本程序名字为AutoUpdate,你生成这个exe,然后和主程序一起打包,创建桌面快捷方式时,指向AutoUpdate,而不

  • Delphi实现获取进程列表及相关信息的实例

    Delphi实现获取进程列表及相关信息的实例 前言: 闲着没事,看着任务管理器好玩,查资料先简单实现一下,代码中没有加入获取CPU占用率的代码,这个代码网上很多,只是不喜欢那种写法,这里就不写了.以后继续完善,对于System Process和System的信息还没法获得,那位兄弟知道可以提个醒.  代码如下 unit Main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,

  • Delphi 常见文件处理及注册表文件的使用实例

    Delphi 常见文件处理及注册表文件的使用实例 前言: Registry为我们提供了操作注册表的方法,这里我们用TRegIniFile提供的方法,TRegIniFile继承自TRegistry,TRegIniFile提供的方法类似于前面讲到的操作Ini文件的方法,这样就大大简化了我们操作"神秘"注册表的方法,下面是常用的方法: function CreateKey(const Key: String): Boolean;  创建Key function OpenKey(const K

  • Delphi 在窗体上创建自己光标的实例

    Delphi 在窗体上创建自己光标的实例 我们知道在文本框等可以接收输入的组件中,我们可以看到闪烁的光标,并可以输入文字,如果我们在,比如窗体上时,因为不支持输入,也无法显示闪烁的光标,那我们 有办法做自己的输入吗?当然可以,下面我们演示在Form上来输入文字. 用到的API函数如下 GetTextMetrics:获取程序当前的字体信息,存放到TEXTMETRIC结构中 CreateCaret:为系统插入标记创建一个新的形状,并且将插入标记的属主关系指定给特定的窗口.插入标记的形状.可以是线.块

随机推荐