Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовик кг.doc
Скачиваний:
17
Добавлен:
15.11.2018
Размер:
786.94 Кб
Скачать

Список использованных материалов

1. К. Линдли «Практическая обработка изображений на языке СИ»

2. Руководство к лабораторной работе "Растровая графика" Составитель В.В. Селянкин, Таганрог, ТРТУ, № 2150-1,1995

3. Шикин, А.В. Боресков. Компьютерная графика. Динамика, реалистические изображения. М.: "Диалог-МИФИ", 1995, 287 с.

4. Джеф Проузис "Как работает компьютерная графика"

Вывод

Данная программа является удобной в применении. Может использоваться для показа слайд-шоу с большим количеством изображений(рисунков, фотографий). Эффекты вносят живость и добавляют интерес к просматриваемым слайдам.

Хотелось бы заметить, что большая часть кода программы служит для организации интерфейса, что облегчает взаимодействие между программой и человеком.

Приложение – исходный текст программы

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

const X=640;

const Y=480;

int FN;

void NextImage()

{

FN++;

if(FN>=Form1->OpenDialog1->Files->Count) FN=0;

Form1->Image2->Picture->Bitmap->LoadFromFile(Form1->OpenDialog1->Files->Strings[FN]);

}

void __fastcall TForm1::Button1Click(TObject *Sender)

{

NextImage();

TRect rect;

for(int x=0;x<X;x++)

{

rect=Rect(x,0,x+1,Y);

Form1->Canvas->CopyRect(rect,Image2->Picture->Bitmap->Canvas,rect);

for(int i=0;i<=StrToInt(Edit1->Text);i++){};

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

NextImage();

TRect rect;

for(int x=X-1;x>=0;x--)

{

rect=Rect(x,0,x+1,Y);

Form1->Canvas->CopyRect(rect,Image2->Picture->Bitmap->Canvas,rect);

for(int i=0;i<=StrToInt(Edit1->Text);i++){};

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

NextImage();

TRect rect;

for(int y=0;y<Y;y++)

{

rect=Rect(0,y,X,y+1);

Form1->Canvas->CopyRect(rect,Image2->Picture->Bitmap->Canvas,rect);

for(int i=0;i<=StrToInt(Edit1->Text);i++){};

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{

NextImage();

TRect rect;

for(int y=Y-1;y>=0;y--)

{

rect=Rect(0,y,X,y+1);

Form1->Canvas->CopyRect(rect,Image2->Picture->Bitmap->Canvas,rect);

for(int i=0;i<=StrToInt(Edit1->Text);i++){};

}

}

void __fastcall TForm1::Button9Click(TObject *Sender)

{

NextImage();

TRect rect;

int y1;

float kof=(float)Y/(float)X;

for(int x=0;x<=X/2;x++)

{

y1=x*kof;

rect=Rect(x,y1,x+1,Y-y1);

Form1->Canvas->CopyRect(rect,Image2->Picture->Bitmap->Canvas,rect);

rect=Rect(X-x,y1,X-x-1,Y-y1);

Form1->Canvas->CopyRect(rect,Image2->Picture->Bitmap->Canvas,rect);

rect=Rect(x,y1,X-x,y1+1);

Form1->Canvas->CopyRect(rect,Image2->Picture->Bitmap->Canvas,rect);

rect=Rect(x,Y-y1,X-x,Y-y1-1);

Form1->Canvas->CopyRect(rect,Image2->Picture->Bitmap->Canvas,rect);

for(int i=0;i<=StrToInt(Edit1->Text);i++){};

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button10Click(TObject *Sender)

{

NextImage();

TRect rect;

int y1;

float kof=(float)Y/(float)X;

for(int x=X/2;x>=0;x--)

{

y1=x*kof;

rect=Rect(x,y1,x+1,Y-y1);

Form1->Canvas->CopyRect(rect,Image2->Picture->Bitmap->Canvas,rect);

rect=Rect(X-x,y1,X-x-1,Y-y1);

Form1->Canvas->CopyRect(rect,Image2->Picture->Bitmap->Canvas,rect);

rect=Rect(x,y1,X-x,y1+1);

Form1->Canvas->CopyRect(rect,Image2->Picture->Bitmap->Canvas,rect);

rect=Rect(x,Y-y1,X-x,Y-y1-1);

Form1->Canvas->CopyRect(rect,Image2->Picture->Bitmap->Canvas,rect);

for(int i=0;i<=StrToInt(Edit1->Text);i++){};

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button11Click(TObject *Sender)

{

NextImage();

TRect rect1,rect2;

int zad1;

for(int x=0;x<=X;x++)

{

zad1=StrToInt(Edit1->Text)/X*(X-x);

rect1=Rect(0,0,x+1,Y);

rect2=Rect(X-x,0,X,Y);

Form1->Canvas->CopyRect(rect1,Image2->Picture->Bitmap->Canvas,rect2);

for(int i=0;i<=zad1;i++){};

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button12Click(TObject *Sender)

{

NextImage();

TRect rect1,rect2;

int zad1;

for(int x=0;x<=X/2;x++)

{

zad1=StrToInt(Edit1->Text)/X/2*(X/2-x);

rect1=Rect(0,0,x+1,Y);

rect2=Rect(X/2-x,0,X/2+1,Y);

Form1->Canvas->CopyRect(rect1,Image2->Picture->Bitmap->Canvas,rect2);

rect1=Rect(X-x,0,X,Y);

rect2=Rect(X/2,0,X/2+x,Y);

Form1->Canvas->CopyRect(rect1,Image2->Picture->Bitmap->Canvas,rect2);

for(int i=0;i<=zad1;i++){};

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button13Click(TObject *Sender)

{

NextImage();

int y;

for(int x=0;x<X;x++)

{

for(y=0;y<Y;y=y+2)

{

Form1->Canvas->Pixels[x][y]=Image2->Picture->Bitmap->Canvas->Pixels[x][y];

Form1->Canvas->Pixels[X-x-1][y+1]=Image2->Picture->Bitmap->Canvas->Pixels[X-x-1][y+1];

}

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button14Click(TObject *Sender)

{

NextImage();

TRect rect;

int x;

for(int y=0;y<Y;y++)

{

for(x=0;x<X;x=x+2*X/20)

{

rect=Rect(x,y,x+X/20,y+1);

Form1->Canvas->CopyRect(rect,Image2->Picture->Bitmap->Canvas,rect);

rect=Rect(x+X/20,Y-y-1,x+2*X/20,Y-y);

Form1->Canvas->CopyRect(rect,Image2->Picture->Bitmap->Canvas,rect);

for(int i=0;i<=StrToInt(Edit1->Text)/10;i++){};

}

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button15Click(TObject *Sender)

{

NextImage();

TRect rect;

const d=10;

int x_=X/d,y_=Y/d,x,y;

byte pole[X/d][Y/d];

for(int x=0;x<X/d;x++)

for(int y=0;y<Y/d;y++) pole[x][y]=0;

for(int i=0;i<x_*y_;i++)

{

x=random(x_);

y=random(y_);

while(pole[x][y]==1)

{

x=random(x_);

y=random(y_);

}

pole[x][y]=1;

rect=Rect(x*d,y*d,(x+1)*d,(y+1)*d);

Form1->Canvas->CopyRect(rect,Image2->Picture->Bitmap->Canvas,rect);

for(int i=0;i<=StrToInt(Edit1->Text)/10;i++){};

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button16Click(TObject *Sender)

{

NextImage();

int x,y;

byte pole[X][Y];

for(int x=0;x<X;x++)

for(int y=0;y<Y;y++) pole[x][y]=0;

for(int i=0;i<X*Y-100;i++)

{

x=random(X);

y=random(Y);

while(pole[x][y]==1)

{

x=random(X);

y=random(Y);

}

pole[x][y]=1;

Form1->Canvas->Pixels[x][y]=Image2->Picture->Bitmap->Canvas->Pixels[x][y];

}

Form1->Canvas->CopyRect(Rect(0,0,Image2->Picture->Bitmap->Width,Image2->Picture->Bitmap->Height),Image2->Picture->Bitmap->Canvas,Rect(0,0,Image2->Picture->Bitmap->Width,Image2->Picture->Bitmap->Height));

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button17Click(TObject *Sender)

{

NextImage();

int x1,y1,x2,y2,xt,yt,tmp;

float k,x,y;

byte pole[X][Y];

for(x1=0;x1<X;x1++)

for(y1=0;y1<Y;y1++) pole[x1][y1]=0;

for(int i=0;i<100000;i++)

{

x1=random(X);

y1=random(Y);

x2=random(X);

y2=random(Y);

if(abs(x2-x1)>abs(y2-y1))

{

if(x1>x2){tmp=x1;x1=x2;x2=tmp;tmp=y1;y1=y2;y2=tmp;}

y=y1;

if(y1!=y2)

{

k=(float)(y2-y1)/(float)(x2-x1);

for(xt=x1;xt<x2;xt++)

{

y=y+k;

yt=y;

if(pole[xt][yt]==0)

{

Form1->Canvas->Pixels[xt][yt]=Image2->Picture->Bitmap->Canvas->Pixels[xt][yt];

pole[xt][yt]=1;

}

}

}

}else

{

if(y1>y2){tmp=x1;x1=x2;x2=tmp;tmp=y1;y1=y2;y2=tmp;}

x=x1;

if(x1!=x2)

{

k=(float)(x2-x1)/(float)(y2-y1);

for(yt=y1;yt<y2;yt++)

{

x=x+k;

xt=x;

if(pole[xt][yt]==0)

{

Form1->Canvas->Pixels[xt][yt]=Image2->Picture->Bitmap->Canvas->Pixels[xt][yt];

pole[xt][yt]=1;

}

}

}

}

}

tmp=0;

for(x1=0;x1<X;x1++)

for(y1=0;y1<Y;y1++) if(pole[x1][y1]==0) tmp++;

for(int i=0;i<tmp-1000;i++)

{

xt=random(X);

yt=random(Y);

while(pole[xt][yt]==1)

{

xt=random(X);

yt=random(Y);

}

pole[xt][yt]=1;

Form1->Canvas->Pixels[xt][yt]=Image2->Picture->Bitmap->Canvas->Pixels[xt][yt];

}

Form1->Canvas->CopyRect(Rect(0,0,Image2->Picture->Bitmap->Width,Image2->Picture->Bitmap->Height),Image2->Picture->Bitmap->Canvas,Rect(0,0,Image2->Picture->Bitmap->Width,Image2->Picture->Bitmap->Height));

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button18Click(TObject *Sender)

{

if(OpenDialog1->Execute())

{

FN=0;

Image2->Picture->Bitmap->LoadFromFile(OpenDialog1->Files->Strings[FN]);

}

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

void __fastcall TForm1::Button20Click(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormShow(TObject *Sender)

{

randomize;

OpenDialog1->InitialDir = ExtractFilePath(Application->ExeName);

if(OpenDialog1->Execute())

{

FN=0;

Image2->Picture->Bitmap->LoadFromFile(OpenDialog1->Files->Strings[FN]);

}

}