程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi實現正弦曲線的繪制

Delphi實現正弦曲線的繪制

編輯:Delphi

在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 程序運行結果

通過本程序的學習,不但可以繪制正弦曲線,也可以繪制余弦曲線、正切曲線等各式各樣的曲線,方便科學研究。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved