-

Documente similare
Procesarea Imaginilor - Laborator 1: Introducere în utilizarea bibliotecii OpenCV 1 1. Introducere în utilizarea bibliotecii OpenCV 1.1. Introducere S

-

Programare Delphi Laborator 2 a. Serii. Elaboraţi câte un program pentru sumarea primilor 100 de termeni ai seriilor următoare şi verificaţi numeric e

CURS

Microsoft Word - Excel_3.DOC

Laborator 4: Continuare Programare Orientată pe Obiecte Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 29 octombrie 2011

Gestionarea I/E

Interfețe și Protocoale de Comunicații Arduino-Port Paralel Arduino. Laborator 1- Portul Paralel 1 Caracteristici generale Arduino UNO este o placă de

A

SUBPROGRAME

Top

Declararea variabilelor

Înregistrator de temperatură şi umiditate AX-DT100 Instrucţiuni de utilizare

Laborator 9: Fire de execuţie Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 20 noiembrie 2011

Ingineria Sistemelor de Programare

Matrici și vectori în VBA În VBA, o matrice este un grup de variabile de același tip. De ce ar trebui să utilizați o matrice? Presupunem că ați vrut s

SSC-Impartire

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

A.E.F. - suport laborator nr.3 sem.ii Aplicațe privind utilizarea rețelelor 1D În acest laborator sunt atinse următoarele aspecte: realizarea schițelo

Metode avansate de gestiune a documentelor și a sistemelor de calcul - LABORATOR 1 -

S.C. SEEKTRON S.R.L. Fişă de prezentare a produsului EYECAR B1 EYECAR B1 Observer Black Box Dispozitiv inteligent pentru înregistrarea evenimentelor r

Информационная система персонализации, печати и учета документов об образовании

Introducere în limbajul JavaScript

Laborator 3

Ch

Procesarea Imaginilor Laborator 3: Histograma nivelurilor de intensitate 1 3. Histograma nivelurilor de intensitate 3.1. Introducere În această lucrar

Laborator 2 - Încapsularea Programare Orientată pe Obiecte Tema 2.1 Să se analizeze programul EX2.C Indicatii 2.1 A nu se uita de fisierul EX2.H Tema

Laborator 8: PROIECTAREA BAZELOR DE DATE SUBPROGRAME in PL/SQL (partea II - functii) Un subprogram este un bloc PL/SQL cu nume (spre deosebire de bloc

Paradigme de programare

Curs: Informatica si TIC pentru gimnaziu clasa a V-a PORTOFOLIU Formator: prof. Budai István Cursant: prof. Dr. Már Orsolya Judetul Covasna septembrie

Microsoft Word - lab4.doc

Laborator Activities În sistemul Android activitățile reprezintă echivalentul ferestrelor din Windows, fiind clase care extind clasa Activity. Spre de

Ghid de conectare rapidă Cartela Internet Vodafone VMC R9.4 Cartela Internet Vodafone funcţionează cu aplicaţia Vodafone Mobile Connect

Paradigme de Programare

Laborator 1 suport teoretic Mediul de dezvoltare Eclipse GLOSAR - Aplicaţie: program obţinut în urma aplicării operației BUILD asupra unui proiect (ve

FONDUL SOCIAL EUROPEAN

Proiectarea Sistemelor Software Complexe

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Addendum Syllabus 6 Microsoft Access 2016 REF Syllabus 6.0 Cunoașterea domeniilor în care se utilizează bazele de date Datorită potenţialului ma

Numele documentului: Ghid de utilizare Versiune 2 Din: Cod: Electronic: Ghid de utilizare - Programare online v.2.docx Ghid de utilizare SIR

Inserarea culorilor in tabele

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru

Addendum Syllabus 6 Microsoft Word 2016 REF Syllabus 6.0 Crearea unui document nou pe baza unor șabloane disponibile local sau online Microsoft

Cursul 13 Mulţimi Julia Fie f : C C o funcţie complexă şi fie f n = f f f iterata de ordin n a lui f. Peste tot în continuare vom presupune că f este

MergedFile

Carduri media externe Ghidul pentru utilizator

Laborator 7: PROIECTAREA BAZELOR DE DATE SUBPROGRAME in PL/SQL (partea I - proceduri) Un subprogram este un bloc PL/SQL cu nume (spre deosebire de blo

Backtracking_2018

Programarea şi utilizarea calculatoarelor

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior Universitatea Babeş-Bolyai Cluj-Napoca 1.2 Facultatea Facultatea de Mate

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior Universitatea Babeş-Bolyai Cluj-Napoca 1.2 Facultatea Facultatea de Mate

Microsoft PowerPoint - Fp_2.ppt

Diapositive 1

Ecuatii si sisteme de ecuatii neliniare 1 Metoda lui Newton Algorithm 1 Metoda lui Newton pentru ecuaţia f(x) = 0. Date de intrare: - Funcţia f - Apro

Slide 1

PowerPoint Presentation

A.E.F. - suport laborator nr.5 sem.ii Analiza suprafețelor prin utilizarea elementelor 2D În acest laborator sunt atinse următoarele aspecte: realizar

Laborator 1-Teoria probabilitatilor si statistica matematica Sef lucrari dr.mat. Daniel N.Pop Departamentul de calculatoare si inginerie electrica 1 P

Ghid de Referință Explicații sumare ale operațiunilor de rutină HL-L2312D HL-L2357DW HL-L2352DW HL-L2372DN HL-L2375DW Brother recomandă să păstrați ac

Metode avansate de gestiune a documentelor și a sistemelor de calcul - curs 1 -

A.E.F. - suport laborator nr.10 sem.ii Analiza stării de contact între elemente 3D În acest laborator sunt atinse următoarele aspecte: analiza contact

{LINGO} Specificațiile produsului: - Dimensiune: 61 x 18 x 8 mm - greutate: 8,6 g - rază: 10 m -capacitatea și tipul bateriei: 90 mah, baterie polimer

BC-2000 Control Acces

PROGRAMARE ORIENTATA PE OBIECTE

CABINET MINISTRU

MINISTERUL EDUCAŢIEI AL REPUBLICII MOLDOVA UNIVERSITATEA DE STAT ALECU RUSSO DIN BĂLŢI FACULTATEA DE ȘTIINȚE REALE, ECONOMICE ȘI ALE MEDIULUI CATEDRA

Analiză statică Analiza fluxului de date 23 octombrie 2014

Cursul 10 Fractali de tip Newton Vom prezenta în continuare o nouă modalitate de generare a fractalilor, modalitate care îşi are originea într-o probl

Microsoft Word - O problema cu bits.doc

PROGRAMARE OBIECT-ORIENTATA LABORATOR 1 INTRODUCERE IN CLASE SI OBIECTE Introducere teoretica Prin intermediul unei Clase ne dorim sa construim tipuri

Microsoft Word - PI-L7r.doc

A.E.F. - suport laborator nr.8 sem.ii Analiza structurală la flambaj În acest laborator sunt atinse următoarele aspecte: modalitatea de analiză la fla

Manual de utilizare Descrierea produsului Structura produsului 1) Butonul SUS (UP) 2) MENIU 3) Butonul JOS (DOWN) 4) Interfața USB 5) Cameră 6) Difuzo

PowerPoint-Präsentation

REVISAL Versiunea: Data release: 15 martie 2016 IMPORTANT! Distribuţia curentă (v6.0.4) a aplicaţiei Revisal conţine nomenclatorul COR ISCO 08 î

Manual de utilizare Aplicatie Proiector I. Pornire/Oprire proiectie Pentru a porni/opri proiectia aveti 3 posibilitati: 1) Pentru pornirea proiectiei

Microsoft Word _POO_Lab_1_Modificari_v01.htm

Noțiuni matematice de bază

Laborator 3 - Simulare. Metode de tip Monte Carlo. I. Estimarea ariilor şi a volumelor RStudio. Nu uitaţi să va setaţi directorul de lucru: Session Se

Laborator 6 - Statistică inferenţială I. Inferenţă asupra mediei - Testul Z pentru media unei populaţii cu dispersia cunoscută Se consideră o populaţi

ALGORITHMICS

Logică și structuri discrete Limbaje regulate și automate Marius Minea marius/curs/lsd/ 24 noiembrie 2014

SISTEM DE LICENȚIERE A CLUBURILOR DE FOTBAL FMF :SL/ST.11-d.02 Standard de calitate pentru licențiere (ED.2012) Ediția 2 Procedura de păstrare și arhi

tehnologii web

Unitatea: Școala Gimnazială Disciplina: Informatică și TIC Programa școlară aprobată cu OMEN nr.3393 din Profesor: prof. Clasa: a V-a A, B

Windows 7

Curs 3 Permutari cu repetitie. Combinari. Algoritmi de ordonare si generare

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

EXCEL FĂRĂ SECRETE Grafice şi diagrame

Lucrarea nr. 2 Aplicaţii de tip client Mihai IVANOVICI 6 martie 2006 Scopul acestei lucrări este de a vă familiariza cu modulul Python socket şi cu mo

fm

Curs8

ALGORITHMICS

MergedFile

C++ Probleme

Curs 6 Gestiunea memoriei in C++ Alocare dinamica. Destructor. RAII. Rule of three. Tratarea excepțiilor exception safe code Moștenire Curs 5 Template

Capitole Speciale de Informatică Curs 1: Extragerea informaţiilor. Modelul boolean şi modelul boolean extins 27 septembrie 2018 Extragerea informaţiil

Transcriere:

Programare Delphi Laborator 8. Temă Deschideţi un proiect nou de tip VCL Forms Application cu o singură formă pe care o dotaţi cu o componentă TImage cu numele img1 şi cu un TButton cu numele btnstart. Salvaţi proiectul în fişierul Lab_08.dproj şi unitul formei în Unit1.pas. Exerciţiul 1. Adăugaţi la proiectul Lab_08 următorul unit în care este definită clasa TMyColor pentru utilizarea culorilor: unit UnitMyColor; interface uses ExtCtrls; type TMyColor = class r, g, b: byte; function fromrgb: Cardinal; procedure fromcardinal(c: Cardinal); constructor Create(r, g, b: byte); overload; constructor Create(col: TMyColor); overload; property Red: byte read r write r; property Green: byte read g write g; property Blue: byte read b write b; property Color: Cardinal read fromrgb write fromcardinal; implementation uses Math, Dialogs, SysUtils; constructor TMyColor.Create(r: byte; g: byte; b: byte); self.r := r; self.g := g; self.b := b; constructor TMyColor.Create(col: TMyColor); self.create(col.r, col.g, col.b);

function TMyColor.fromRGB: Cardinal; // Result := r + 256 * (g + 256 * b); Result := r + (g shl 8) + (b shl 16); procedure TMyColor.fromCardinal(c: Cardinal); self.r := (c and $000000FF); self.g := (c and $0000FF00) shr 8; self.b := (c and $00FF0000) shr 16; procedure TMyColor.Show(img: TImage); x, y: integer; for x := 0 to img.width do for y := 0 to img.height do img.canvas.pixels[x, y] := self.color; end. In mod obişnuit în Delphi culorile sunt precizate prin date de tipul TColor definit în unitul Graphics type TColor = -$7FFFFFFF-1..$7FFFFFFF; care înglobează informaţia despre culoare pe patru canale, fiecare pe un octet, în ordine de la stânga la dreapta: alfa (contrast), blue, green, red. Noi folosim numai culori cu alfa=0, deci întregi din domeniul $00000000..$00FFFFFF şi din acest motiv în loc de TColor preferăm utilizarea tipului Cardinal, lăsând compilatorului efectuarea conversiilor necesare. Apare astfel mai clar diferenţa dintre un TColor, care este un număr, şi un TMyColor care este un obiect - instanţă a unei clase. Exersaţi utilizarea obiectelor TMyColor adăugând butonului btnstart handlerul de eveniment din listingul următor: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(tform) img1: TImage; btnstart: TButton;

procedure btnstartclick(sender: TObject); { Private declarations } { Public declarations } Form1: TForm1; implementation {$R *.dfm} uses UnitMyColor; procedure TForm1.btnStartClick(Sender: TObject); c: TMyColor; c := TMyColor.Create(100, 200, 50); c.show(img1); c.free initialization System.ReportMemoryLeaksOnShutdown := true; end. Dotaţi clasa TMyColor cu un constructor de forma constructor Create(c: Cardinal); overload; şi cu funcţia class function Amestec(a, b: TMyColor): TMyColor; care să returneze o culoare intermediară între a şi b.

Exerciţiul 2. Adăgaţi proiectului precedent unitul următor unit UnitPunct; interface uses Graphics, ExtCtrls, UnitMyColor; type TPunct = class i, j: integer; constructor Create(i, j: integer); implementation uses Math; constructor TPunct.Create(i: integer; j: integer); self.i := i; self.j := j; procedure TPunct.Show(img: TImage); if (0 <= i) and (i <= img.width) and (0 <= j) and (j <= img.height) then img.canvas.pixels[i, j] := clblack; end. Definiţi tot în UnitPunct clasa TPunctDifuz = class(tpunct) di, dj: integer; constructor Create(i, j, di, dj: integer); class function Int(a, b: TPunctDifuz): TPunctDifuz; unde un punct difuz înseamnă de fapt un dreptunghi centrat într-un TPunct având semi-laturile di şi dj. In metoda Show pixelii dreptunghiului vor fi coloraţi cu o nuanţă de gri selectată aleator (griurile au componentele r, g şi b egale). Funcţia Int întoarce intersecţia celor două dreptunghiuri, daca ele se suprapun, iar dacă nu un dreptunghi intermediar definit convenabil.

Exerciţiul 3. Continuaţi deriea clasei TPunct cu TPunctDifuzColorat = class(tpunctdifuz) col: TMyColor; constructor Create(i, j, di, dj: integer; c: TMyColor); overload; constructor Create(i, j, di, dj: integer; c: Cardinal); overload; destructor Destroy; class function Int(a, b: TPunctDifuzColorat): TPunctDifuzColorat; astfel încât pentru handlerul procedure TForm1.btnStartClick(Sender: TObject); pc1,pc2,pc3: TPunctDifuzColorat; pc1 := TPunctDifuzColorat.Create(200, 200, 100,150,clYellow); pc1.show(img1); pc2 := TPunctDifuzColorat.Create(300, 300, 150,100,clRed); pc2.show(img1); pc3:=tpunctdifuzcolorat.int(pc1,pc2); pc3.show(img1); pc3.destroy; pc2.destroy; pc1.destroy; să obţinem la apăsarea lui btnstart următoarea imagine:

Exerciţiul 4. Dacă în exerciţiul precedent înlocuim apelul direct al destructorului pc3.destroy; cu pc3.free; la închiderea formei primim mesajul Corectaţi această situaţie. Exerciţiul 5. Modificaţi declaraţiile metodei Show pentru TPunct, TPunctDifuz şi TPunctDifuzColorat astfel încât handlerul procedure TForm1.btnStartClick(Sender: TObject); p1, p2, p3: TPunct; p1 := TPunctDifuzColorat.Create(200, 200, 100, 150, clyellow); p1.show(img1); p2 := TPunctDifuzColorat.Create(300, 300, 150, 100, clred); p2.show(img1); p3 := TPunctDifuzColorat.Int(p1 as TPunctDifuzColorat, p2 as TPunctDifuzColorat); p3.show(img1); p3.free; p2.free; p1.free; să aibe acelaşi rezultat ca cel din exerciţiul 3.