delphi 사인 곡선 도

2178 단어 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.client Height/2)의 위치 로 이동 시 켰 다.그리고 하나의 순환 을 통 해 a:= (x/self.client Width)*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 프로그램 실행 결과
본 프로그램의 학습 을 통 해 정 현 곡선 을 그 릴 수 있 을 뿐만 아니 라 여현 곡선,정절 곡선 등 각양각색의 곡선 을 그 릴 수 있어 과학 연구 에 편리 하 다

좋은 웹페이지 즐겨찾기