You are on page 1of 10

Tema: Grafica de tip rastru si vectoriala

Programul Scenei grafice:


#include <vcl.h>
#pragma hdrstop

#include "Scena_grafica.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner){}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormPaint(TObject *Sender)


{
// Se deseneaza malul stang:
Canvas->MoveTo(0,200);
TPoint p[5];
p[0].x = -1; p[0].y = 200;
p[1].x = 1028; p[1].y = 200;
p[2].x = 1028; p[2].y = 280;
p[3].x = -1; p[3].y = 400;
p[4].x = -1; p[4].y = 200;
Canvas->Brush->Color = clGreen;
Canvas->Polygon(p,4);

// Se deseneaza malul drept:


Canvas->MoveTo(1027,400);
TPoint p2[4];
p2[0].x = 600; p2[0].y = 501;
p2[1].x = 1028; p2[1].y = 380;
p2[2].x = 1028; p2[0].y = 501;
p2[3].x = 600; p2[3].y = 501;
Canvas->Polygon(p2,3);

// Se deseneaza un munte:
Canvas->MoveTo(0,100);
TPoint p3[5];
p3[0].x = -1; p3[0].y = 100;
p3[1].x = 50; p3[1].y = 40;
p3[2].x = 200; p3[2].y = 200;
p3[3].x = -1; p3[3].y = 200;
p3[4].x = -1; p3[4].y = 200;
Canvas->Brush->Color = clGray;
Canvas->Pen->Color = RGB(64, 64, 64);
Canvas->Polygon(p3,4);

// Se deseneaza un munte:
Canvas->MoveTo(100,200);
TPoint p4[4];
p[0].x = 100; p[0].y = 200;
p[1].x = 190; p[1].y = 60;
p[2].x = 400; p[2].y = 200;
p[3].x = 100; p[3].y = 200;
Canvas->Polygon(p,3);

// Se deseneaza un munte:
Canvas->MoveTo(300,200);
TPoint p5[4];
p[0].x = 300; p[0].y = 200;
p[1].x = 410; p[1].y = 40;
p[2].x = 550; p[2].y = 200;
p[3].x = 300; p[3].y = 200;
Canvas->Polygon(p,3);

// Se deseneaza un munte:
Canvas->MoveTo(500,200);
TPoint p6[4];
p[0].x = 500; p[0].y = 200;
p[1].x = 700; p[1].y = 80;
p[2].x = 900; p[2].y = 200;
p[3].x = 500; p[3].y = 200;
Canvas->Polygon(p,3);

// Se deseneaza un munte:
Canvas->MoveTo(700,200);
TPoint p7[4];
p[0].x = 700; p[0].y = 200;
p[1].x = 900; p[1].y = 50;
p[2].x = 1000; p[2].y = 200;
p[3].x = 700; p[3].y = 200;
Canvas->Polygon(p,3);

// Se deseneaza un munte:
Canvas->MoveTo(900,200);
TPoint p8[5];
p[0].x = 900; p[0].y = 200;
p[1].x = 1000; p[1].y = 50;
p[2].x = 1028; p[2].y = 90;
p[3].x = 1028; p[3].y = 200;
p[4].x = 900; p[4].y = 200;
Canvas->Polygon(p,4);
// Se deseneaza un brad
Canvas->Pen->Color = clBlack;
Canvas->Brush->Color = clMaroon;
Canvas->Rectangle(850,240,865,265);
Canvas->MoveTo(850,240);
TPoint b3[17];
b3[0].x = 850; b3[0].y = 240;
b3[1].x = 810; b3[1].y = 240;
b3[2].x = 850; b3[2].y = 225;
b3[3].x = 820; b3[3].y = 225;
b3[4].x = 850; b3[4].y = 210;
b3[5].x = 830; b3[5].y = 210;
b3[6].x = 850; b3[6].y = 195;
b3[7].x = 840; b3[7].y = 195;
b3[8].x = 857.5; b3[8].y = 170;

b3[9].x = 875; b3[9].y = 195;


b3[10].x = 865; b3[10].y = 195;
b3[11].x = 885; b3[11].y = 210;
b3[12].x = 865; b3[12].y = 210;
b3[13].x = 895; b3[13].y = 225;
b3[14].x = 865; b3[14].y = 225;
b3[15].x = 905; b3[15].y = 240;
b3[16].x = 850; b3[16].y = 240;
Canvas->Brush->Color = clLime;
Canvas->Polygon(b3,16);

// Se deseneaza un brad
Canvas->Brush->Color = clMaroon;
Canvas->Rectangle(750,250,770,275);
Canvas->MoveTo(750,250);
TPoint b4[21];
b4[0].x = 750; b4[0].y = 250;
b4[1].x = 700; b4[1].y = 250;
b4[2].x = 750; b4[2].y = 230;
b4[3].x = 710; b4[3].y = 230;
b4[4].x = 750; b4[4].y = 210;
b4[5].x = 720; b4[5].y = 210;
b4[6].x = 750; b4[6].y = 190;
b4[7].x = 730; b4[7].y = 190;
b4[8].x = 750; b4[8].y = 170;
b4[9].x = 740; b4[9].y = 170;
b4[10].x = 760; b4[10].y = 150;

b4[11].x = 780; b4[11].y = 170;


b4[12].x = 770; b4[12].y = 170;
b4[13].x = 790; b4[13].y = 190;
b4[14].x = 770; b4[14].y = 190;
b4[15].x = 800; b4[15].y = 210;
b4[16].x = 770; b4[16].y = 210;
b4[17].x = 810; b4[17].y = 230;
b4[18].x = 770; b4[18].y = 230;
b4[19].x = 820; b4[19].y = 250;
b4[20].x = 750; b4[20].y = 250;
Canvas->Brush->Color = clLime;
Canvas->Polygon(b4,20);

// Se deseneaza un brad
Canvas->Brush->Color = clMaroon;
Canvas->Rectangle(800,240,820,280);
Canvas->MoveTo(800,240);
TPoint b[21];
b[0].x = 800; b[0].y = 240;
b[1].x = 750; b[1].y = 240;
b[2].x = 800; b[2].y = 220;
b[3].x = 760; b[3].y = 220;
b[4].x = 800; b[4].y = 200;
b[5].x = 770; b[5].y = 200;
b[6].x = 800; b[6].y = 180;
b[7].x = 780; b[7].y = 180;
b[8].x = 800; b[8].y = 160;
b[9].x = 790; b[9].y = 160;
b[10].x = 810; b[10].y = 140;

b[11].x = 830; b[11].y = 160;


b[12].x = 820; b[12].y = 160;
b[13].x = 840; b[13].y = 180;
b[14].x = 820; b[14].y = 180;
b[15].x = 850; b[15].y = 200;
b[16].x = 820; b[16].y = 200;
b[17].x = 860; b[17].y = 220;
b[18].x = 820; b[18].y = 220;
b[19].x = 870; b[19].y = 240;
b[20].x = 800; b[20].y = 240;
Canvas->Brush->Color = clLime;
Canvas->Polygon(b,20);

// Se deseneaza un brad
Canvas->Brush->Color = clMaroon;
Canvas->Rectangle(700,250,725,300);
Canvas->MoveTo(700,250);
TPoint b2[21];
b2[0].x = 700; b2[0].y = 250;
b2[1].x = 640; b2[1].y = 250;
b2[2].x = 700; b2[2].y = 220;
b2[3].x = 650; b2[3].y = 220;
b2[4].x = 700; b2[4].y = 190;
b2[5].x = 660; b2[5].y = 190;
b2[6].x = 700; b2[6].y = 160;
b2[7].x = 670; b2[7].y = 160;
b2[8].x = 700; b2[8].y = 130;
b2[9].x = 680; b2[9].y = 130;
b2[10].x = 710.25; b2[10].y = 100;

b2[11].x = 745; b2[11].y = 130;


b2[12].x = 725; b2[12].y = 130;
b2[13].x = 755; b2[13].y = 160;
b2[14].x = 725; b2[14].y = 160;
b2[15].x = 765; b2[15].y = 190;
b2[16].x = 725; b2[16].y = 190;
b2[17].x = 775; b2[17].y = 220;
b2[18].x = 725; b2[18].y = 220;
b2[19].x = 785; b2[19].y = 250;
b2[20].x = 700; b2[20].y = 250;
Canvas->Brush->Color = clLime;
Canvas->Polygon(b2,20);

// Se deseneaza moara
Canvas->MoveTo(520,170);
Canvas->Brush->Color = clCream;
Canvas->Rectangle(520,170,590,250);
Canvas->Brush->Color = clGray;
Canvas->Rectangle(515,249,595,260);
Canvas->MoveTo(520,170);
// Se deseneaza acoperisul:
TPoint a[5];
a[0].x = 520; a[0].y = 170;
a[1].x = 505; a[1].y = 170;
a[2].x = 555; a[2].y = 140;
a[3].x = 605; a[3].y = 170;
a[4].x = 520; a[4].y = 170;
Canvas->Brush->Color = clRed;
Canvas->Polygon(a,4);
// Se deseneaza morisca
Canvas->MoveTo(555,185);
TPoint m[13];
m[0].x = 555; m[0].y = 185;
m[1].x = 525; m[1].y = 155;
m[2].x = 535; m[2].y = 148;
m[3].x = 555; m[3].y = 185;

m[4].x = 585; m[4].y = 215;


m[5].x = 575; m[5].y = 222;
m[6].x = 555; m[6].y = 185;
m[7].x = 585; m[7].y = 155;
m[8].x = 595; m[8].y = 162;
m[9].x = 555; m[9].y = 185;

m[10].x = 518; m[10].y = 205;


m[11].x = 525; m[11].y = 215;
m[12].x = 555; m[12].y = 185;
Canvas->Brush->Color = clOlive;
Canvas->Polygon(m,12);
// Centrul moristii:
Canvas->Ellipse(550,180,560,190);
//usa:
Canvas->Rectangle(535,229,555,259);
Canvas->MoveTo(540,244);
// Manerul usii:
Canvas->LineTo(540,247);
Canvas->Brush->Color = clWhite;
// Se deseneaza geamul:
Canvas->Rectangle(565,229,579,244);
Canvas->MoveTo(572,229);
Canvas->LineTo(572,244);
Canvas->MoveTo(565,236.5);
Canvas->LineTo(579,236.5);

// Se deseneaza Corpul corabiei:


Canvas->MoveTo(100,450);
TPoint c[9];
c[0].x = 100; c[0].y = 450;
c[1].x = 300; c[1].y = 450;
c[2].x = 390; c[2].y = 350;
c[3].x = 340; c[3].y = 350;
c[4].x = 320; c[4].y = 370;
c[5].x = 180; c[5].y = 370;
c[6].x = 180; c[6].y = 330;
c[7].x = 60; c[7].y = 330;
c[8].x = 100; c[8].y = 450;
Canvas->Pen->Width = 2;
Canvas->Brush->Color = clOlive;
Canvas->Polygon(c,8);

// Se deseneaza nasul corabiei:


Canvas->MoveTo(390,350);
TPoint n[9];
n[0].x = 390; n[0].y = 350;
n[1].x = 395; n[1].y = 340;
n[2].x = 405; n[2].y = 340;
n[3].x = 410; n[3].y = 345;
n[4].x = 550; n[4].y = 345;
n[5].x = 545; n[5].y = 350;
n[6].x = 400; n[6].y = 365;
n[7].x = 326; n[7].y = 420;
n[8].x = 390; n[8].y = 350;
Canvas->Pen->Width = 2;
Canvas->Brush->Color = clMaroon;
Canvas->Polygon(n,8);

// Se deseneaza pilonii:
Canvas->Pen->Width = 1;
Canvas->Rectangle(210,120,220,371);
Canvas->Ellipse(205,105,225,120);
Canvas->Rectangle(160,185,270,195);

// Se deseneaza funiile:
Canvas->Pen->Width = 4;
Canvas->MoveTo(215,120);
Canvas->LineTo(266,185);

Canvas->MoveTo(215,120);
Canvas->LineTo(164,185);

Canvas->MoveTo(215,120);
Canvas->LineTo(540,345);

Canvas->MoveTo(323,319);
Canvas->LineTo(340,350);

Canvas->MoveTo(102,319);
Canvas->LineTo(95,330);

Canvas->MoveTo(351,319);
Canvas->LineTo(340,350);

// Se deseneaza Drapelul:
Canvas->Pen->Width = 1;
Canvas->Brush->Color = clCream;
Canvas->Rectangle(210,125,220,175);
Canvas->MoveTo(210,125);
TPoint d[8];
d[0].x = 210; d[0].y = 125;
d[1].x = 160; d[1].y = 125;
d[2].x = 135; d[2].y = 160;
d[3].x = 160; d[3].y = 150;
d[4].x = 130; d[4].y = 185;
d[5].x = 160; d[5].y = 175;
d[6].x = 210; d[6].y = 175;
d[7].x = 210; d[7].y = 125;
Canvas->Polygon(d,7);

// Se deseneaza pinza 1:
Canvas->Pen->Width = 2;
Canvas->MoveTo(163,195);
TPoint d2[5];
d2[0].x = 163; d2[0].y = 195;
d2[1].x = 100; d2[1].y = 320;
d2[2].x = 325; d2[2].y = 320;
d2[3].x = 267; d2[3].y = 195;
d2[4].x = 163; d2[4].y = 195;
Canvas->Brush->Color = clCream;
Canvas->Polygon(d2,4);

// Se deseneaza pinza 2:
Canvas->MoveTo(300,180);
TPoint d3[4];
d3[0].x = 270; d3[0].y = 159;
d3[1].x = 350; d3[1].y = 320;
d3[2].x = 525; d3[2].y = 335;
d3[3].x = 270; d3[3].y = 159;
Canvas->Polygon(d3,3);

// Se decoreaza corpul corabiei:


Canvas->Pen->Width = 1;
Canvas->Brush->Color = clYellow;
// Se deseneaza geamul dreptunghiular:
Canvas->Pen->Width = 2;
Canvas->Rectangle(100,350,155,385);
Canvas->Pen->Width = 1;
Canvas->MoveTo(127.25,350);
Canvas->LineTo(127.25,385);
Canvas->MoveTo(100,367.25);
Canvas->LineTo(155,367.25);

// Se deseneaza geamurile rotunde:


Canvas->Pen->Width = 2;
Canvas->Ellipse(180,380,210,410);
Canvas->Pen->Width = 1;
Canvas->MoveTo(195,380);
Canvas->LineTo(195,410);
Canvas->MoveTo(180,395);
Canvas->LineTo(210,395);

Canvas->Pen->Width = 2;
Canvas->Ellipse(230,380,260,410);
Canvas->Pen->Width = 1;
Canvas->MoveTo(245,380);
Canvas->LineTo(245,410);
Canvas->MoveTo(230,395);
Canvas->LineTo(260,395);

Canvas->Pen->Width = 2;
Canvas->Ellipse(280,380,310,410);
Canvas->Pen->Width = 1;
Canvas->MoveTo(295,380);
Canvas->LineTo(295,410);
Canvas->MoveTo(280,395);
Canvas->LineTo(310,395);

// Se deseneaza o linie ingrosata:


Canvas->Pen->Width = 10;
Canvas->Pen->Color = clMaroon;
Canvas->MoveTo(175,370);
Canvas->LineTo(175,330);
Canvas->LineTo(60,330);
Canvas->LineTo(80,400);

// Se scrie un mesaj in scena:


Canvas->Font->Size = 15;
Canvas->Font->Color = clRed;
Canvas->Brush->Color = clCream;

Canvas->TextOutA(145,250,"Have a nice trip!");

// Se deseneaza Soarele:
Canvas->Pen->Width = 1;
Canvas->Pen->Color = clYellow;
Canvas->Brush->Color = clYellow;
Canvas->Ellipse(280,40,330,90);

// Se deseneaza un nor:
Canvas->Pen->Color = clWhite;
Canvas->Brush->Color = clWhite;
Canvas->Ellipse(470,40,520,90);
Canvas->Ellipse(490,20,600,110);
Canvas->Ellipse(560,30,650,80);
Canvas->Ellipse(530,40,668,100);
Canvas->Ellipse(540,20,610,50);
}
//---------------------------------------------------------------------------
Rezultatul programului:

Fig. 1. Scena grafica

You might also like