Разработка программы создания виртуальной фотогалереи

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

любых проектов в среде разработки Delphi , путем подключения модуля на этапе компиляции.

 

4. Список использованной литературы

 

1.ЕСПД ГОСТы 19.101, 19.105, 19,401.

2.M. B. Краснов OpenGL. Графика в проектах Delphi. М. 2000.

 

Текст программного модуля Gallery.pas

Gallery.pas;

 

, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, ExtDlgs;= class(TForm): TOpenPictureDialog;FormCreate(Sender: TObject);FormPaint(Sender: TObject);FormDestroy(Sender: TObject);FormKeyDown(Sender: TObject; var Key: Word;: TShiftState);FormResize(Sender: TObject);FormMouseMove(Sender: TObject; Shift: TShiftState; X,: Integer);

 

: HDC;: HGLRC;,ty,tz,f,t : GLfloat;: GLUquadricObj;,zal,kadr:boolean;,wrky:Glint;,demonstr:boolean;, time1,FrameTime: GLInt;: GLint;

;

: TfrmGL;: (POINT, LINE, FILL, SILHOUETTE) = FILL;: (SPHERE, CONE, CYLINDER, DISK) = SPHERE;:array [0..3] of GlFloat;:array [0..2] of GlFloat=(0.5,0.5,0.5);,lookupdown :GlFloat;: TPoint;:GlFloat;:TBitmap;:boolean;,pict:byte;:0..18;

 

Unit3,Unit2;

 

{$R *.DFM}

 

{====================================================================

Процедура чтение графического файла, который используется в качестве текстуры}

procedure BmpTexture(name:string; k:boolean);

// массив образа, 64x64,j: Integer;:array [0..63,0..63,0..2] of Glbyte;:array [0..31,0..31,0..2] of Glbyte;:= TBitmap.Create;.LoadFromFile(image/+name); // загрузка текстуры из файлаk theni := 0 to 63 doj := 0 to 63 do[i, j, 0] := GetRValue(Bitmap.Canvas.Pixels [i,j]);[i, j, 1] := GetGValue(Bitmap.Canvas.Pixels[i,j]);[i, j, 2] := GetBValue(bitmap.Canvas.Pixels[i,j]);;D(GL_TEXTURE_2D, 0, GL_RGBA,

64,64, // здесь задается размер текстуры

, GL_RGB, GL_UNSIGNED_BYTE, @Bits1);

endbegini := 0 to 31 doj := 0 to 31 do[i, j, 0] := GetRValue(Bitmap.Canvas.Pixels [i,j]);[i, j, 1] := GetGValue(Bitmap.Canvas.Pixels[i,j]);[i, j, 2] := GetBValue(bitmap.Canvas.Pixels[i,j]);;D(GL_TEXTURE_2D, 0, GL_RGBA,

31,31, // здесь задается размер текстуры

, GL_RGB, GL_UNSIGNED_BYTE, @Bits2);

end;(GL_TEXTURE_2D, GL_TEXTURE_Mag_FILTER, GL_LINEAR);(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

;

 

{==============================================================

Создание рамы для картин, а также вывода изображения картин}

Procedure rama;:byte;(form2.colpic[p]=true)i:=1 to 4 dof(0.72,0.31,0.05);f(0,1,0);(Gl_Quads);d (0.5,0); glVertex3f(0,0,0);d (0.5,2); glVertex3f(0,0,2);d (0, 2); glVertex3f(0.2,0.1,1.78);d (0, 0); glVertex3f(0.2,0.1,0.18);;f(0.491,0.25,0.1);(Gl_Quads);d (0.2, 0); glVertex3f(0.2,0.1,0.18);d (0.2, 2); glVertex3f(0.2,0.1,1.78);d (0, 2); glVertex3f(0.3,0.05,1.78);d (0, 0); glVertex3f(0.3,0.05,0.18);;getpictbegin.Visible:=true;.Enabled:=true;(p);(GL_TEXTURE_2D);;f(0.9,0.9,0.8);(Gl_Quads);d (0, 1);f(0.3,0.05,0.3);d (1, 1);f(0.3,0.05,1.7);d (1, 0);f(1.7,0.05,1.7);d (0, 0);f(1.7,0.05,0.3);;(GL_TEXTURE_2D);(2,0,0);(-90,0,1,0);;;

 

{=============================================================

Процедура создания 3 и 4 комнаты фотогалереи}

zal0;,k,j:integer;: GLUquadricObj;;:= gluNewQuadric;f (0.9, 0.9, 1); //стены(room>=3)begin(GL_QUADS);f(1, 0, 1); //левая стенаd (2.0, 0.0); glVertex3f (-12, 12.0, 0);d (2.0, 5.0); glVertex3f (-12.0, 12.0, 5);d (0.0, 5.0); glVertex3f (-12.0, 11.0, 5);d (0.0, 0.0); glVertex3f (-12.0, 11.0, 0);;

фотогалерея алгоритм просмотр графический

glBegin (GL_QUADS);f(1, 0, 1); //левая стенаd (4.0, 0.0); glVertex3f (-12, 11.0, 0);d (4.0, 1.0); glVertex3f (-12.0, 11.0, 1);d (0.0, 1.0); glVertex3f (-12.0, 7.0, 1);d (0.0, 0.0); glVertex3f (-12.0, 7.0, 0);;

(GL_QUADS);f(1, 0, 1); //левая стенаd (18.0, 0.0); glVertex3f (-12, 7.0, 0);d (18.0, 5.0); glVertex3f (-12.0, 7.0, 5);d (0.0, 5.0); glVertex3f (-12.0, -12.0, 5);d (0.0, 0.0); glVertex3f (-12.0, -12.0, 0);;

(GL_QUADS);f(0, -1, 1); // стенаf (-12, 11.0, 1);f (-12, 7.0, 1);f (-12.2, 7.0, 1);f (-12.2, 11.0, 1);;begin(GL_QUADS);f(1, 0, 1); //левая стенаd (24.0, 0.0); glVertex3f (-12, 12.0, 0);d (24.0, 5.0); glVertex3f (-12.0, 12.0, 5);d (0.0, 5.0); glVertex3f (-12.0, -12.0, 5);d (0.0, 0.0); glVertex3f (-12.0, -12.0, 0);;;

(GL_QUADS);f(0, 1, 1);//дальняяd (12.0, 0.0); glVertex3f (-12, -12.0, 0);d (12.0, 5.0); glVertex3f (-12, -12.0, 5);d (0.0, 5.0); glVertex3f (12, -12.0, 5);d (0.0, 0.0); glVertex3f (12, -12.0, 0);;

(GL_QUADS);f(0, -1, 1); //ближняяd (24.0, 0.0); glVertex3f (12, 12.0, 0);d (24.0, 5.0); glVertex3f (12.0, 12.0, 5);d (0.0, 5.0); glVertex3f (-12.0, 12.0, 5);d (0.0, 0.0); glVertex3f (-12.0, 12.0, 0);;

(GL_QUADS);f(-1, 0, 1); //правая стенаd (24.0, 0.0); glVertex3f (12, 12.0, 0);d (24.0, 5.0); glVertex3f (12.0, 12.0, 5);d (0.0, 5.0); glVertex3f (12.0, -12.0, 5);d (0.0, 0.0); glVertex3f (12.0, -12.0, 0);;(WOOD30.bmp,true);(GL_TEXTURE_2D);(0.0, 0.0, 5);

(GL_QUADS);(1,0,-1);d (12.0, 0.0); glVertex3f (12, 12.0, 0.0);d (12.0, 12.0); glVertex3f (-12.2, 12.0, 0.0);d (0.0, 12.0); glVertex3f (-12.2, -12.0, 0.0);d (0.0, 0.0); glVertex3f (12.0, -12.0, 0.0);;(GL_TEXTURE_2D);

(0.0, 0.0, -5);(w.bmp,true);(GL_TEXTURE_2D);(GL_QUADS);f(1,0,1);d (12.0, 0.0); glVertex3f (12, 12.0, 0.0);d (12.0, 12.0); glVertex3f (-12.0, 12.0, 0.0);d (0.0, 12.0); glVertex3f (-12.0, -12.0, 0.0);d (0.0, 0.0); glVertex3f (12.0, -12.0, 0.0);;(GL_TEXTURE_2D);

;;

(-1.5,-11.9,0.5);pict=1 then

//прорисовка рам для картин;

glScalef(1.5,1.5,1.5);:=9;;;(13.4,4,0.5);(90,0,0,1);:=12;j:=1 to 3 do(p);;(6,0,0);;(1.8,6.9,-0.5);(90,0,0,1);:=18;j:=1 to 2 do;(1.5,1.5,1.5);(p);;;(7,0,0);;(2.7,9,0.5);(90,0,0,1);:=13;j:=1 to 3do(p);;(4.5,0,0);

end;;;;

//Прорисовка ограничителей к картинам

glTranslatef (-12, 15, 1);k:=1 to 2 do(0, -4.0, 0.0);f (0.7, 0.7, 0.4);(quadObj, 0.4, 0.4, 4, 20, 1);i:=1 to 10 do;(0.4, 0.0, 0);(quadObj, 0.01, 0.01, 4, 5,1);;(36, 0.0, 0.0, 1.0);;;(quadObj, 0.8, 0.4, 0.4, 4, 1);;;(6, 0, 0);;;(11.5, -9.0, 3.5);j:=1 to 2 dof(0.7,0.3,0.1);(0,2,0);i:=1 to 4 do(quadObj, 0.07, 0.07,1.5, 6, 1);(quadObj, 0, 0.08, 10, 1);(0,5,0);;f(1,0,0);(GL_QUADS);f(1,1,0);f (0, -20.0, 0.0);f (0, -20.0, 0.2);f (0, -5, 0.2);f (0, -5, 0.0);;(-23, -25.5, 0.1);;;;(-7.5, 11.5, 3.5);k:=1 to 2 dof(0.7,0.3,0.1);i:=1 to 4 do(quadObj, 0.07, 0.07,1.5, 6, 1);(quadObj, 0, 0.08, 10, 1);(5,0,0);;f(1,0,0);(0, 0, 0.1);(GL_QUADS);f(1,1,0);f (-5, 0, 0.0);f (-5.0, 0, 0.2);f (-20.0, 0, 0.2);f (-20.0, 0, 0.0);;(-20, -47, -0.1);;;;(-4,-11.5,3.5);f(0.7,0.3,0.1);i:=1 to 3 do(quadObj, 0.07, 0.07,1.5, 6, 1);(quadObj, 0, 0.08, 10, 1);(4,0,0);;f(1,0,0);(0, 0, 0.1);(GL_QUADS);f(1,1,0);f (-4, 0, 0.0);f (-4.0, 0, 0.2);f (-12.0, 0, 0.2);f (-12.0, 0, 0.0);

glEnd;;;

{=============================================================

Процедура прорисовки первой комнаты}

=4begin(GL_QUADS);f(1,0,1);//d(19.0,0.0);glVertex3f(-12,12.0,0);d(19.0,5.0);glVertex3f(-12.0,12.0,5);d(0.0,5.0);glVertex3f(-12.0,-7.0,5);d(0.0,0.0);glVertex3f(-12.0,-7.0,0);;(GL_QUADS);f(1,0,1);//d(4.0,0.0);glVertex3f(-12,-7.0,0);d(4.0,1.0);glVertex3f(-12.0,-7.0,1);d(0.0,1.0);glVertex3f(-12.0,-11.0,1);d(0.0,0.0);glVertex3f(-12.0,-11.0,0);;(GL_QUADS);f(1,0,1);//d(1.0,0.0);glVertex3f(-12,-11.0,0);d(1.0,5.0);glVertex3f(-12.0,-11.0,5);d(0.0,5.0);glVertex3f(-12.0,-12.0,5);d(0.0,0.0);glVertex3f(-12.0,-12.0,0);;begin(GL_QUADS);f(1,0,1);//d(24.0,0.0);glVertex3f(-12,12.0,0);d(24.0,5.0);glVertex3f(-12.0,12.0,5);d(0.0,5.0);glVertex3f(-12.0,-12.0,5);d(0.0,0.0);glVertex3f(-12.0,-12.0,0);;;(GL_QUADS);f(0,1,1);//d(3.0,0.0);glVertex3f(-12,-12.0,0);d(3.0,5.0);glVertex3f(-12,-12.0,5);d(0.0,5.0);glVertex3f(-9.0,-12.0,5);d(0.0,0.0);glVertex3f(-9.0,-12.0,0);;(GL_QUADS);f(0,1,1);d(4.0,0.0);glVertex3f(-9,-12.0,0);d(4.0,1);glVertex3f(-9,-12.0,1);d(0.0,1);glVertex3f(-5,-12.0,1);d(0.0,0.0);glVertex3f(-5,-12.0,0);;(GL_QUADS);f(0,1,1);//d(10,0.0);glVertex3f(-5,-12.0,0);d(10,5.0);glVertex3f(-5,-12.0,5);d(0.0,5.0);glVertex3f(5.0,-12.0,5);d(0.0,0.0);glVertex3f(5.0,-12.0,0);;">Procedure zal1;,k,j:integer;: GLUquadricObj;;:= gluNewQuadric;f (0.9, 0.9, 1); //цвет стен(w.bmp,true);(GL_TEXTURE_2D);room>=4begin(GL_QUADS);f(1, 0, 1);