//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
// 绘制正弦曲线
#include "math.h" //数学类,因要用正弦函数
#define SEGMENTS 3600
#define PI 3.1415926
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Image1->Canvas->MoveTo(30,30); //X.Y坐标轴
Image1->Canvas->LineTo(30,550);
Image1->Canvas->MoveTo(0,200);
Image1->Canvas->LineTo(550,200);
Image1->Canvas->MoveTo(30,30); //Y箭头
Image1->Canvas->LineTo(20,40);
Image1->Canvas->MoveTo(30,30);
Image1->Canvas->LineTo(40,40);
Image1->Canvas->MoveTo(550,200); //X箭头
Image1->Canvas->LineTo(540,190);
Image1->Canvas->MoveTo(550,200);
Image1->Canvas->LineTo(540,210);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N2Click(TObject *Sender)
{
Image1->Canvas->Pen->Color=clRed;
Image1->Canvas->Pen->Style=psSolid;
TPoint aPoint[3600];
for(int i=0;i<SEGMENTS;i++)
{
aPoint[i].x=(i*Image1->Width/2)/SEGMENTS+30;
aPoint[i].y=(int)((Image1->Height/4)*(1-(sin((2*PI*i)/SEGMENTS))))+100;
} //绘制各个正弦曲线点
Image1->Canvas->Polyline(aPoint,SEGMENTS-1);
for(int i = 0;i<SEGMENTS;i++)
{Image1->Canvas->Pixels[(i*Image1->Width/2)/SEGMENTS+30][200+100*sin(2*i*PI/SEGMENTS)]=clGreen;}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N3Click(TObject *Sender)
{
Image1->Canvas->Pen->Color=clRed;
Image1->Canvas->Pen->Style=psSolid;
TPoint aPoint[3600];
for(int i=0;i<SEGMENTS;i++)
{
aPoint[i].x=(i*Image1->Width/2)/SEGMENTS+30;
aPoint[i].y=(int)((Image1->Height/4)*(1-(cos((2*PI*i)/SEGMENTS))))+100;
} //绘制各个余弦曲线点
Image1->Canvas->Polyline(aPoint,SEGMENTS-1);
for(int i = 0;i<SEGMENTS;i++)
{Image1->Canvas->Pixels[(i*Image1->Width/2)/SEGMENTS+30][200+100*cos(2*i*PI/SEGMENTS)]=clGreen;}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N4Click(TObject *Sender)
{
if(SavePictureDialog1->Execute())
Image1->Picture->SaveToFile(SavePictureDialog1->FileName); //保存图片
}
//---------------------------------------------------------------------------
//打开文件
void __fastcall TForm1::Button3Click(TObject *Sender)
{
if(OpenPictureDialog1->Execute())
Edit2->Text=OpenPictureDialog1->FileName;
}
//---------------------------------------------------------------------------
//发送图像文件
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TFileStream *MyFStream;
MyFStream=new TFileStream(OpenPictureDialog1->FileName,fmOpenRead);//以只读方式打开文件
try
{
NMStrm1->Host=Edit1->Text; //指定主机名
NMStrm1->PostIt(MyFStream); //发送的文件(调用PostIt方法之前必须设置Host属性)
}
catch(...)
{
}
MyFStream->Free();
}
//---------------------------------------------------------------------------
//显示图像文件
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Image1->Picture->LoadFromFile(".\\tmp.bmp");
}
//---------------------------------------------------------------------------
//连接到远程主机,在PostIt方法发出和服务器建立连接以后,将产生且事件
void __fastcall TForm1::NMStrm1Connect(TObject *Sender)
{
StatusBar1->SimpleText="Connected";
}
//---------------------------------------------------------------------------
//没有连接到主机时产生此事件
void __fastcall TForm1::NMStrm1ConnectionFailed(TObject *Sender)
{
ShowMessage("无法连接到对方");
}
//---------------------------------------------------------------------------
//在客户端文件发送到时产生此事件
void __fastcall TForm1::NMStrm1Disconnect(TObject *Sender)
{
if(StatusBar1!=0)
StatusBar1->SimpleText="文件发送到了";
}
//---------------------------------------------------------------------------
//如果成功地将主机名或域名地址解析成IP地址后,将产生且事件
void __fastcall TForm1::NMStrm1HostResolved(TComponent *Sender)
{
StatusBar1->SimpleText="Host Resolved";
}
//---------------------------------------------------------------------------
//当文件(数据流)发送到对方时产生此事件
void __fastcall TForm1::NMStrm1MessageSent(TObject *Sender)
{
ShowMessage("有文件发送到对方");
}
//---------------------------------------------------------------------------
//数据发送到对方时产生此事件 ,在数据流发送过程中用于显示发送进度的事件,
//属性BytesSent和BytesTotal是显示发送的进度
void __fastcall TForm1::NMStrm1PacketSent(TObject *Sender)
{
StatusBar1->SimpleText=IntToStr(NMStrm1->BytesSent)+" bytes of "
+NMStrm1->BytesTotal+" sent";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMStrm1Status(TComponent *Sender,
AnsiString Status)
{
if(StatusBar1!=0)
StatusBar1->SimpleText=Status;
}
//---------------------------------------------------------------------------
//没有主机名时产生此事件,过程主机输入不正确或找不到主机名产生的事件
void __fastcall TForm1::NMStrm1InvalidHost(bool &Handled)
{
AnsiString NewHost;
if(InputQuery("没有主机", "请输入要发送的主机名:", NewHost))
{
NMStrm1->Host=NewHost;
Edit1->Text=NewHost;
}
}
//---------------------------------------------------------------------------
//表示客户机已连接到服务器了
void __fastcall TForm1::NMStrmServ1ClientContact(TObject *Sender)
{
StatusBar1->SimpleText="Client Contacted";
}
//---------------------------------------------------------------------------
//接收客户端发送来的文件,用于对客户机发送过来的数据流准备数据缓冲区空间
void __fastcall TForm1::NMStrmServ1MSG(TComponent *Sender,
const AnsiString sFrom, TStream *strm)
{
if(FileExists(".\\tmp.bmp"))
DeleteFile(".\\tmp.bmp");
TFileStream *MyFStream;
MyFStream =new TFileStream(".\\tmp.bmp",fmCreate); // 创建一个指定文件名的文件,如果指定文件名的文件已经存在,则以写模式打开
try
{
MyFStream->CopyFrom(strm,strm->Size);
}
catch(...)
{
}
MyFStream->Free();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMStrmServ1Status(TComponent *Sender,
AnsiString Status)
{
if(StatusBar1!=0)
StatusBar1->SimpleText=Status;
}
//---------------------------------------------------------------------------
//接收数据流时,显示接收的进度
void __fastcall TForm1::NMStrm1PacketRecvd(TObject *Sender)
{
StatusBar1->SimpleText=IntToStr(NMStrm1->BytesRecvd)+" bytes out of "
+IntToStr(NMStrm1->BytesTotal)+" transferred";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N5Click(TObject *Sender)
{
if(OpenPictureDialog1->Execute())
Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName); //显示图片
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N6Click(TObject *Sender)
{
Image1->Canvas->Pen->Color=clGreen;
Image1->Canvas->Pen->Style=psSolid;
float x1,y1;
float x2,y2;
float n;
x1=0;
y1=Form1->Image1->Height/2;
x2=x1;
y2=y1;
Form1->Image1->Canvas->MoveTo(x2,y2);
n=0;
while(n<PI*6)
{