+ All Categories
Home > Documents > Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de...

Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de...

Date post: 05-Apr-2018
Category:
Upload: roman-varvarici
View: 225 times
Download: 0 times
Share this document with a friend

of 57

Transcript
  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    1/57

    Ministerul Educatiei al Republicii Moldova Universitatea Tehnica a Moldov

    Facultatea de Radioelectronica i Telecomunicatii

    Catedra CPAE

    Lucrarea de cursLa disciplina: Ingineria soft Tema: Crearea unei aplicatii software multimed

    redactor grafic

    A efectuat Barbovschi A.

    Studentul grupei SER-091

    A verificat Ichim I.

    Lector superior

    Chiinau 2012

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    2/57

    Cuprins

    1. Introducere ....................................................................................................... 3 2. Abordarea problemei proiectului............................................................... 4

    2.1. Notiuni generale ....................................................................................... 42.1.1. Primitivele i functionalitatea .................................................... 52.1.2. Mediul de lucru ........................................................................... 5

    2.2. Programe paint analoage .......................................................................... 62.2.1. Microsoft Paint ........................................................................... 62.2.2. Paint.Net ..................................................................................... 7

    2.2.3. Pixia ............................................................................................ 92.3. Cerinte fata de program ......................................................................... 10

    3. Ciclul de viaja al programului................................................................... 11 3.1. Notiuni generale ..................................................................................... 113.2. Etapele de viata a unui produs soft ........................................................ 113.3. Diagrama ciclului de viata a aplicatiei elaborate ................................... 14

    4. Descrierea algoritmului de elaborare a programului.......................... 15 4.1. Pregatirea mediului de programare pentru lucru ................................... 164.2. Aranjarea obiectelor pe forme ............................................................... 174.3. Declararea functiilor i descrierea lor ................................................... 224.4. Descrierea fiierului header Unt1.h ....................................................... 29

    Concluzie.............................................................................................................. 31

    Bibliografie.......................................................................................................... 32 Anexa 1................................................................................................................. 33 Anexa 2.................................................................................................................. 52 Anexa 3................................................................................................................. 53

    CPAE 525.1 091 01 ME

    Mod. Coala document. Semnat. Data Elaborat. Barbovschi A.

    Crearea unei aplicatii

    software multimedia redactor

    grafic

    Lit. Coala Coli

    Controlat Ichim I. 2 56Contr. STAS UTMFRTgr. SER-091

    Aprobat

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    3/57

    1. Introduceren ultimul timp a crescut brusc interesul fata de programare, fapt generat de

    patrunderea tehnologiilor informational n viata de zi cu zi. Daca cineva are de

    afacere cu calculatorul, mai devreme sau mai trziu, la dorinta proprie sau denevoie, va ncerca sa programeze.

    Dezvoltarea rapida a tehnicii de calcul, necesitatea unor medii efective descriere a aplicatiilor, au dus la aparitia unor sisteme de programare rapida bazate ptehnologia RAD (Rapid Application Development), ce are ca fundament tehnologiprogramarii vizuale i de eveniment. Ce reprezinta acest mod de programare?

    Programarea vizuala sau "OOP" ("Object Oriented Programming") are labaza ideea unificarii datelor cu modalitatile de prelucrare a acestora i manevreazentitati reprezentate sub forma de obiecte:

    obiect = date + cod de tratare a acestor date

    Programarea obiectuala ofera posibilitati de modelare a obiectelor, a

    proprietatilor i a relatiilor dintre ele, dar i posibilitatea de a descompune oproblema n componentele sale (soft mai mentenabil, adaptabil, reciclabil). Ctevexemple de limbaje de programare orientata obiect: SIMULA (1965), SIMULA-2(1967), Smalltalk, C++, Java (n plus, Java poate fi considerat un limbaj deprogramare orientata eveniment).

    Facilitatile oferite de programarea orientata obiect (conform lui Pascou)

    sunt:1. Abstractizarea datelor;2. Motenirea;3. ncapsularea (ascunderea) informatiei;4. Legarea dinamica ("trzie").

    Coala

    CPAE 525.1 091 01 ME 3Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    4/57

    In fine, mediul de programare ia asupra lui o parte mare a rutinei, iarprogramatorului nu-i ramane decat sa elaboreze ferestrele de dialog i sa scriefunctiile de prelucrare a evenimentelor.

    In lucrarea data programul se va proiecta in mediul soft C++ Builder 6,elaborat in 2006 de compania Borland Inc. Versiunea 6 are un ir de noiimplementari fata de versiunile precedente 4 i 5. Printre acestea putem enumera:- posibilitatea crearii programelor cross-platform, ce pot fi rulate atat pe Windowscat i pe Linux;- noi tehnologii de acces la date;- noi componente i metode de lucru cu acestea.

    2. Abordarea problemei proiectului2.1. No^iuni generaleEditorul de imagini este un program care permite desenarea cu mouse-ul pe

    ecranul calculatorului, salvarea acestui desen intr-un fiier pe disc, modificarea tiparirea lui. Programele pentru desenare pot sa lucreze in grafica de pixeli(bitmapped graphics) sau in grafica vectoriala (vector graphics).

    Daca programul lucreaza in grafica de pixeli atunci imaginea se realizeaza dinpuncte (pixeli), care de fapt sunt nite dreptunghiuri foarte mici. Pentru fiecare pixeal desenului se memoreaza codul de culoare.

    Un avantaj al acestei grafici este ca imaginea creata din puncte poate sacontina foarte multe detalii, insa cand dimensiunea desenului se modifica el pierde

    din calitate. Marind foarte mult conturul desenului acesta apare in trepte (efectul d"dinti de fierastrau"), iar daca se micoreaza foarte mult punctele ajung sa sesuprapuna.

    Un alt dezavantaj al acestui tip de grafica este dimensiunea foarte mare afiierului in care se memoreaza desenul. Cu cat desenul este mai mare cu atat elcontine mai multe puncte pentru care trebuie sa se memoreze codul de culoare, ia

    cu cat se folosesc mai multe culori in realizarea desenului, cu atat sunt necesari mamulti biti pentru memorarea culorii pentru fiecare pixel.

    Coala

    CPAE 525.1 091 01 ME 4Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    5/57

    Exemplu: Daca se folosete o paleta de 16 (24) culori, pentru fiecare pixel dindesen sunt necesari patru biti pentru culoare, iar daca se folosete o paleta de 256(28) de culori sunt necesari opt biti de culoare.

    n al doilea exemplu, din cauza maririi numarului de culori, necesarul desuport pentru memorarea desenului se dubleaza.

    2.1.1. Primitivele i funcjionalitateaPentru crearea imaginilor n editorul de imagini se folosesc instrumente"-

    rigla (linia"), dreptunghi, cerc, elipsa .a. Astfel de instrumente care permit creareafigurilor simple se numesc primitive grafice" Aceste sunt cele mai simple elementedin care se compune imaginea. Pentru a ntrebuinta un instrument este necesar dales primitivul grafic" corespunzator i de micat cursorul n punctul dorit alecranului unde este necesar de creat figura aleasa.

    Functiile tuturor editoarelor de imagini sunt aproximativ identice. Ele permitutilizatorului:

    - de creat imagini din primitivele grafice;

    - de aplicat la desenare diverse culori i perii" (adica de folosit linii de diversalargime i configurate);

    - de taiat" imaginile sau partile lor, de pastrat temporar n memorie tampon(buzunar") sau de pastrat pe suporturi externe;

    - de deplasat un fragment al imaginii pe ecran;- de a ncleia" o imagine cu alta;

    - de marit fragmentul imaginii pentru a vizualiza detalii marunte;- de adaugat la imagini text.

    Multe editoare de imagini permit de asemenea de a crea animatie decalculator, adica de a crea la calculator imagini n micare.

    2.1.2. Mediul de lucruMediul de lucru a editorului de imagini const din trei prti principale. Partea

    instrumental - set de pictograme care reprezint instrumentele. De

    Coala

    CPAE 525.1 091 01 ME 5Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    6/57

    obicei aceasta sunt peria" pentru crearea liniilor de configuratie aleatoare, rigla" pentru crearea liniilor drepte, cerc", dreptunghi", elipsa" pentru crearea figurilocorespunzatoare, radiera" pentru tergerea imaginilor, rola" pentru colorarea

    f igurilor, foarfece" pentru taierea fragmentelor de imagini. Alta parte a mediului-paleta pentru alegerea culorii imaginii. i in fine, partea a treia - meniul de comenza editorului. Aceste parti ale mediului sunt situate de obicei la marginile ecranuluiPartea centrala a ecranului este destinata pentru campul de lucru (sau cum se maspune panza"), pe care creeaza imagini.

    Editor de imagini are, ca regula, urmatoarele regimuri de baza de lucru:regimul de selectare i setare a instrumentului, regimul de selectare a culoriiregimul de lucru cu imaginea (desenarea i redactarea), regim de lucru cudispozitive externe. Creand imagini pe ecranul calculatorului se poate nu numai de le desena singur, dar i de folosit alte imagini, de exemplu fotografii, imagini dincarti etc.

    5

    2.2. Programe paint analoage2.2.1. Microsoft PaintPaint este o caracterstica din Windows care se poate utiliza pentru a desena,

    colora K edita imagini. Paint se poate utiliza precum un caiet de schite digital,pentru a crea imagini simple, proiecte creative, sau pentru a adauga textK graficaaltor imagini, cum ar fi cele facute cu aparatul foto digital.

    Acest program cunoscut i de incredere este acum mai uor de utilizat i, deasemenea, mai distractiv. Noile pensule" digitale cu aspect realist din Paint vor trezi la viata imaginile dvs., in stil de acuarela, creion i caligrafe. i o nouapanglica, faia aflata de-a lungul ferestrei care arata ce poate face un programafieaza optiunile intr-un mod mai deschis decat apareau in meniuri.

    De asemenea, Paint este pregatit acum i pentru tehnologia tactila, deci, dacaaveti un computer cu ecran tactil, veti desena in curand cu degetul, direct pe ecran

    Este posibil chiar sa utilizati doua degete pentru a urmari doua trasaturi separate.

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    7/57

    Fig. 1 Programul Microsoft Paint

    2.2.2. Paint.Net

    Paint.Net este un program gratuit de editat poze, cu o interfat simpl i uorde folosit. Evident, nu se poate compara cu Photoshop, dar include cele maiimportante functii pentru categoria de aplicatii din care face parte.

    Coala

    CPAE 525.1 091 01 ME 6Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    8/57

    LayereUnul din laturile lui Paint.Net este lucrul cu layere. Putine programe deprelucrat imagini gratuite includ suport pentru layere. Utilizarea acestei facilitati nuridic dificultati nici pentru utilizatorii inceptori, nici pentru cei care au lucrat cuPhotoshop. Principiul de lucru cu layere este asemntor functiei similare dinPhotoshop.

    La fel ca Photoshop, gestionarea layerelor in Paint.Net se face pe baza uneimici ferestre in care acestea sunt afiate unul sub altul. Ordinea din fereastrarespectiva este i ordinea in care acestea se vor suprapune in imagine.

    InstrumentePaint.Net include cele mai importante instrumente pentru modificarea

    pozelor: selectie (inclusiv Magic Wand pentru selectarea rapid a unui obiect),

    pensul, gradient, radier, color picker, clone stamp etc.Chiar dac nu ofer aceeai functionalitate ca cele din Photoshop, in cele ma

    multe cazuri, aceste instrumente sunt suficiente pentru utilizatorii obinuiti careurmresc imbunttirea calittii unei poze sau modificarea anumitor aspecte. Deexemplu, functia de selectare permite adugarea sau eliminarea din selectie a unozone.

    EfectePaint.Net ofer i numeroase efecte care pot fi aplicate pozelor. De la efecte

    artistice (Oil Painting, Ink Sketch etc.) la distorsionri, utilizatorul are suficientemijloace prin care ii poate lsa amprenta asupra imaginilor.

    Exist, bineinteles, posibilitatea reglrii sau modificrii atributelorimaginilor: culoare, saturatie, contrast etc. Reglrile se pot face atat manual, cat automat.

    Fig. 2 Programul Paint.NetCoala

    CPAE 525.1 091 01 ME 7Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    9/57

    Coala

    CPAE 525.1 091 01 ME 8Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    10/57

    Chiar dac nu se poate compara cu Photoshop sau cu alte aplicatii similare, Paineste o solutie pentru utilizatorii care nu urmresc realizarea unor operatiuni complexe. este gratuit i foarte uor de folosit.

    2.2.3. PixiaCreat de Isao Maruoka, Pixia este un program gratuit de prelucrare a graficii i im

    digitale, ce ruleaz numai pe platforma Microsoft Windows. Initial, a fost proiectat expentru desenatorii din comunitatea anime, ns n timp, a fost utilizat tot mai des, n maidomenii de activitate. n afar de interfata

    ' S

    original n limba japonez, softul mai este disponibil n englez, francez, italian, spmaghiar, chinez simplificat i traditional, polonez, coreean i german.

    Fig. 3 Programul Pixia

    Pixia - [C:\Dokumente und EinsteLlungenUU Users\Dokumente\EigeneBilder\Bei5pielbilder\S0nnenuntergang.jpg [LAYERO] of Standard Accuracy]

    |^~|[n"|fx"| D File Edit Selection Paint Image View Window Help

    JJJJ 7 M

    und Einstellungen All UsersDokumente Eigene Bi...] [800x600 pixels] [24 bits]

    [~|| hi -

    "HS

    m pii

    Coala

    CPAE 525. l O9l Ol ME 9Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    11/57

    Odat cu Pixia 2.6, programul a oferit suport nu numai pentru spatiul deculoare RGB (Red, Green, Blue) ci i pentru CMYK (Cyan, Magenta, Yellow,blacK - culorile principale folosite la tipar). Ultima versiune aprut este 4.2. (iuni

    2008), i se poate descrca gratuit, n mai multe limbi strine, de aici. Utilizatoruare la dispozitie mai multe instrumente pentru a realiza o lucrare de exceptie, cum afi: efecte ale imaginii i graficii (transparente, strlucire, contrast, umbre,degrade-uri), lucrul cu straturi (layers), filtre (filters), canale (channels), mti(masks), pensule (brushes), iar interfata intuitiv este uor de folosit att pentrumceptori ct i pentru avansati. Cu Pixia se pot crea, edita, vizualiza i exportafiniere cu extensiile BMP, JPG, JPEG, PSD (formatul pentru Adobe Photoshop)TGA, TIF, TIFF, WMF, precum i PXA - fiierul standard al Pixia, ms nu lucreazcu fiierele n format GIF.

    De asemenea, pentru a veni n ajutorul desenatorilor, programul estecompatibil cu tabletele grafice Wacom. ncepnd cu versiunea Pixia 4,programatorii recomand instalarea programului numai pe Microsoft Windows Me2000, XP i Vista, deoarece s-ar putea s apar probleme pe variantele Windows 9598 i NT. Fie c creati un desen sau prelucrati o imagine digital, aplicatia Pixia vofer cam tot ce aveti nevoie pentru ca documentul s arate excelent la final.

    2.3. Cerinje fa$ de programDeci, n lucrarea de fat am hotrt s scriu un program dotat cu urmtoarele

    functii i posibilitti:

    - platforma de rulare este Microsoft Windows Millenium, 2000, XP, Vista, 7;- format imagini: *.bmp;- este dotat cu un sistem complex de pstrare (programul nu permite

    pierderea modificrilor nesalvate);- lucrul cu culori este unul flexibil (este accesibil o palet de culori preselectate

    2 culori de baz, posibilitatea de a seta culoarea de pe orice punct al imaginii

    i pe orice punct al imaginii);Coala

    CPAE 525.1 091 01 ME 10Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    12/57

    - un set de primitive grafice (linie dreapt, linie aleatoare, dreptunghi cu/frumplere, elips cu/fr umplere);

    - instrument pentru tergerea fragmentului dorit al imaginii (radiera);

    - instrument pentru deplasarea/copierea fragmentului dorit al imaginii;- instrument pentru nserarea textului (cu posibilitatea setrii parametrilor

    fontului);- mecanismul de amnare a ultimelor modificri;- un manual.

    3. Ciclul de viaj al programului3.1. No^iuni generaleUn produs soft, la fel ca i oricare produs, trece printr-o serie de faze, de la

    productie pn la ieire din circulatie. n principiu fazele prin care trece o aplicatiesoftware sunt similare cu cele ale oamenilor, astfel: gestatia, copilria, maturitateai sfritul vietii.

    3.2. Etapele de via^ a unui produs soft- Pre-Alpha (gestatia). Aceast faz cuprinde toate activittile efectuate nainte caproiectul software s mceap testele (analizarea cerintelor, design software, scrierepropriu-zis a programului i verificarea buctilor componente ale acestuia). nmediul programatorilor open source" exist mai multe tipuri de versiuni pre-alpha.- Alpha (naterea i copilria timpurie). Faza alpha este caracterizat de ncepereatestrii aplicatiei n ansamblu acesteia n conditii de mediu controlate, fiind realizatdou tipuri de teste:- Testele folosind tehnologii white box" n care programul este supus de ctredezvoltatorii acestuia unor teste generale de functionalitate; practic se verific dacprogramul tie s fac ce a fost proiectat n conditii ideale de mediu (input corect)aceast sub-faz este cunoscut i sub denumirea de private beta";

    Coala

    CPAE 525.1 091 01 ME 11Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    13/57

    - Testele folosind tehnologii black box" sunt efectuate de catre o alta echipa carein esenta incearca sa determine reactiile programului la inputuri mai putin ortodoxe pana la testarea black box", toate celelalte faze se petrec in cadrul organizatiei car e

    planifica i produce programul; odata cu inceperea testelor black box" programu primete denumirea de versiunea alpha" i poate fi pus la dispozitia publiculudoritor sa-1 testeze. Versiunile alpha de software sunt deseori instabile i pot generinghetari a sistemului de operare i/sau pierderi a datelor. Faza alpha se termina dobicei cu o inghetare a caracteristicilor" care indica faptul ca nici o altacaracteristica nu va mai fi adaugata acestuia.

    - Beta (adolescenta). Faza din ciclul de viata al unui program software careurmeaza dupa alpha i este denumita dupa litera beta din alfabetul grecesc. Deobicei incepe cand programul este inghetat din punct de vedere al caracteristicilor are ca principal scop masurarea impactului acestuia asupra utilizatorilor finali teste de usability. Utilizatorii versiunilor beta sunt de regula clienti sau potentialclienti ai programului, dornici sa testeze aplicatia gratuit sau pentru o mica taxaEste probabil ca versiunile beta sa fie folosite pentru demonstratii interne iprevizualizari. Unii dezvoltatori sau programatori denumesc aceasta etapaavanpremiera, prototip, previzualizare tehnica sau acces timpuriu.- Open beta i closed beta. Dezvoltatorii programelor lanseaza fie o versiune

    open beta" ori o versiune closed beta": versiunile open beta sunt destinate unuigrup mai mare de utilizatori (in general publicului larg) in timp ce versiunile closedbeta sunt disponibile doar unui anumit grup de indivizi. Utilizatorii versiunilor betraporteaza orice bug pe oare-l identifica i uneori sugereaza anumite caracteristicpe care i-ar dori ca programul sa le aiba in forma finala.- Release candidate (majorul). Termenul de release candidate (RC) se refera la o

    versiune care are potential de a deveni produsul final, gata de a fi lansat duca nu sunidentificate comportamente fatale sau erori grave de programare. In unii 1990 Applobinuia sa foloseasca termenul de golden master" pentru versiunile release

    candidate ale propriilor programe, Alte litere din alfabetul grecesc cum ar fi gammi delta sunt folosite uneori pentru a indica versiuni cure sunt in faza

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    14/57

    avansat de perfectionare dei se afl inc in tesle iar literele omega i zenith sun

    folosite pentru a indica versiuni care se afl in ultimele teste, sunt considerate a ffr bug-uri i pot intra in productie

    O versiune primete denumirea code complete cand echipa dezvoltatorilor sepune de acord ca nu va mai fi adugat cod-surs nou programului, dei ar puteaexista schimbri ale codului sursa in vederea reparrii unor erori.- RTM (Release -varsta maturittii). Termenele release to manufucturing" sau

    "release to marketing" (ambele prescurtate RTM) - sunt folosite pentru a indica cprogramul a atins un nivel satisfctor de calitate i este gata pentru distributia inmas fie prin mijloace electronice sau prin suporti fizici media. RTM inseamn deregul c programul a fost lansat pe piat, dar nu este disponibil i pentru ceilaltproductori de hardware i software care s-i poat astfel ajusta specificatiilepropriilor produse in conformitate cu acesta. Faza RTM se intampl de obiceiinaintea celei de general availability" (disponibilitate general), cand un produseste fcut disponibil publicului larg.- General availability (disponibilitate general). Reprezint momentul in care toate

    activittile necesare comercializrii programului au fost finalizate i acesta estedisponibil intregii piete fie prin web sau prin medii de stocare fizice.- Suport. Dup intrarea produsului in faza GA, acesta mai poate primi unele

    imbunttiri prin intermediul aa-numitelor service-packs. Un exemplu foartecunoscut este cel al lui Microsoft Windows XP care a primit pan in prezent 3Service Packs sau Service Pack 1 Beta pentru Windows 7. Service-Pack-urile sunnite colectii de actualizri, patch-uri i/sau extinderi a functionalittii livrate subforma unui singur fixier instalabil, Acestea pot contine de asemenea i noicaracteristici.- End of life (sfritul vietii). Cand un program nu se mai gsete in vanzare sau

    compania car 1-a produs nu mai ofer suport pentru acesta, se spune c a ajuns lsfaritul vietii.

    Coala

    CPAE 525.1 091 01 ME 12Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    15/57

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    16/57

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    17/57

    ntreg algoritmul consta din nite pai consecutivi pe care ii voi descrie succcontinuare.

    4.1. Pregtirea mediului de programare pentru lucruDeschidem programul C++ Builder 6 prin intermediul shortcut-ului respectiv, sameniul Start. In fereastra deschis apsam File -> New -> Application. Pe ecran vomurmtoarele ferestre:

    Suprafata de proiectare este Forml, anume pe ea se amplaseaz obiecteleaplicatiei n modul corespunztor. Apsnd dublu-click pe oricare obiect sedeschide fereastra de redactare a evenimentelor respective, unde putem declara descrie functii, adic modul n care reactioneaz obiectul respectiv la carevaeveniment, spre exemplu click.

    Obiectele sunt amplasate pe Paleta de obiecte n partea de sus a ferestreiprincipale. Ele sunt grupate conform unor trsturi specifice n taburi.

    Builder 6 - Projectl

    File Edit Search View Project Run Component Database lools Window Help |

    sB - 0 \J\S Standard Additional] Win32] System ] Data Access] Data Controls dbExoress ] DataSnao] BDE | ADO InterBase WebServices 1 InternetExoress ] Internet] WebSnao ] FastNet] De 1HT M m J5

    Fig. 6 Ferestrele mediului C++ Builder 6 cu suprafata de lucru Forml

    ra i i*

    AnchorsAutoS croll

    AutoS izeBiDiModeEBorderlcons BorderS tyleBorderWidth __ 0Caption FornnlClientHeight 1466ClientWidth 862Color

    QclBtnFace0 Constraints (TSizeConstrainCtl3D trueCursor crDelaultDefaultMonitor dmActiveFormAll shoi

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    18/57

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    19/57

    La stnga jos avem o fereastr numit Object Inspector unde sunt descrisepropriettile obiectului ales i evenimentele acestuia.

    Mai sus este fereastra Object Tree View unde sunt afiate clasele de obiecte i

    subcategoriile acestora. n cazul dat avem o singur clas Forml.

    4.2. Aranjarea obiectelor pe forme4.2.1. Aranjarea obiectelor pe forma FormlPe suprafata de lucru Forml aranjm urmtoarele componente dup cum este

    artat n fig. 7:

    Fig. 7 Aranjarea componentelor pe forma Forml

    Unele componente, ca spre exemplu Edit2, Edit3, Edit5, Edit6, Edit7, Edit8,Edit9, sunt invizibile in timpul rulrii aplicatiei, altele, ca spre exempluOpenPictureDialogl, SavePictureDialogl, FontDialogl sunt vizibile doar la

    Coala

    CPAE 525.1 091 01 ME 17Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    20/57

    apelarea la ele, iar restul sunt permanent vizibile, astfel ca un utilizator obinuitpoate s actioneze asupra lor n mod direct, spre exemplu click pe buton.

    Componentele trebuie aranjate astfel nct fereastra aplicatiei s aib un

    aspect ergonomic i intuitiv, adic utilizatorului s-i fie uor de navigat, i s nu ntlneasc careva probleme n timpul utilizrii aplicatiei. Cifrele din imaginereprezint componentele:1. SBBrush - permite de a colora o regiune dorit de pe spatiul de lucru;2. SBPen - cu ajutorul lui putem desena o linie de configuratie aleatoare;3. SBRect - instrument pentru deplasarea/copierea unei regiuni dreptunghiulare de

    pe spatiul de lucru;4. SBErase - radier care terge orice fragment de pe pnz;5. SBLine - deseneaz o linie dreapt;6. MainMenul - componentul dat creaz meniul pe care l putem accesa n partea desus a aplicatiei;

    7. OpenPictureDialogl - fereastra de dialog care ne permite sa deschidem un fiiergrafic pentru a avea posibilitatea de a lucra cu el in aplicatia noastra;

    Fig. 8 Componentul MainMenul (afiarea submeniului File)

    Coala

    CPAE 525.1 091 01 ME 18Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    21/57

    : | [

    : : Bitmaps (".brnp]

    Fig. 9 Fereastra de dialog OpenPictureDialogl

    8. SavePictrueDialogl - fereastr de dialog care ne permite s salvm imagineacreat sau modificat de ctre utilizator mtr-un fixier grafic;

    : | fp

    :

    : Bitmaps.]

    Fig. lO Fereastra de dialog SavePictrueDialogl

    Picture: 0 ff i-

    1\

    My NP5 Files FlikerlO

    Samsung flikerll fllkerl2

    [fi]flikerl3. Flikerll

    |^ flikerlS flikjer i,fllkerl6 Flikjer 1 Flikerl7 fliker2 flikerlS

    flikjer4 i,fllkerl9 flikerS FlikerEO fliker6 Is

    flikjer-7 flikerS flikerS

    31 El - Picture:

    My NP5 Files FlikerlO

    Samsung flikerll

    | fllkerl2 | fllkerl3. FllkerH^ flikerlS flikjer [ flIkerl Flikjer 1 Fllkeriy fliker2 flikerlS flikjer4 | Flikjer 19 FlikerS FllkerSO fliker6 Is flikjer7 FlikerS fliker?

    [None]

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    22/57

    Coala

    CPAE 525. l O9l Ol ME 19Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    23/57

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    24/57

    25. Image3 - acest component i este spatiul nostru de lucra, pnza pe care noidesenm;26. Text -un component de tip Label cu inscriptia Text:";

    27. InsertText - din denumire reiese c anume aici, n componentul de tip Edit,introducem textul dorit spre nserare cu ajutorul SBInsertText;28. SBColor - ne permite setarea culorilor principale prin apsarea pe orice punct depe pnz;29. Imagel - acest component rspunde pentru culoarea de baz;30. Image2 - aici este afiat culoarea auxiliar;31. Image4 - acest component ne creaz palet de culori (10 la numr).

    O remarc la componentele enumerate mai sus cu prefixul SB - aceste suntcomponente de tip SpeedButton.

    4.2.2. Aranjarea obiectelor pe forma Form2Pe aceast form este situat doar un component - Manual de tip Memo (1).

    (gj| Manual for DSP I. a Is] brfflWelcome to the manual foi Damn Simple Paint!In (his short but comprehensive manual I will explain you how to use this simple graphic edilor.

    Chaplei I Main menu ^^

    Menu File has got: New. Clears the workspace and it become* the same -as at the launching the application, If you haveany unsaved changes you will be prompted lo save them. Open. Let you choose and open your desired graphic file. Be careful, supported formats are limited!Also, if you have any unsaved changes you will be asked to save them. Save. Write your changes in a file. If you are saving lor the firs! lime you will be proposed lo save in afile. After thai, when you will be saving yaui work il will be saved in your desired lile [01 in file whichyouopened lor modification). Save as... You can save al any moment your painling in a sepai ale lile.- Exit Quit the application at any moment. II you have any unsaved change?you will be asked if you 'A1 ant them to be saved or not. Also you can cancel closing the application.

    Menu Edit has got only Undo which lets you go back if you made a mistake. Undo tool is specific one numbei of necesary calls to undo last change depends on Instrument used to make last changes. Alsothere is no need loi R edo Undo mechanism is cidic. It means that il you continue to undo you will get tothe state before using the Undo. Warning! If you undo after acc esing File > Hew or Open (and did notchoose Cancel) and will try to save it will not be saved in the file you have been working with. Instead youwill be asked to save it in a new file [bul you can save iri the file you have been working with, it will beoverwritten].

    Menu Help has got: Manual. It gives you acces to this manual which you read at the moment, About. Tells you about name, version, license and author of this application.

    Chapter II - Editing toolsBrush let you till any chosen area with desired color. Left -click fills it with main color, right-click - withauxiliary colorPen - draw an arbitrary line with main color.Selection - choose an aiea and cut^eopy it where you want. To copy hold Oil key on your keyboard.Warning! When cutting consider the fact that original area will be tilled with auxiliary ooloi aftei you movechosen area.Era&ei - erase whatever yeu want on your painting. Uses auxiliary color for erasing.Line - draw a straight line with main colorRectangle - draw a rectangle with main color.Filled leclangle - the same as previous but fills it with main color.Ellipse - draw an ellipse. Us es main colorFilled ellipse the same as previous but fills using main color. Insert tent lets you insert desired lent. To do that introduce your tet in the Tent field,, click

    Fig. 12 Aranjarea componentelor pe forma Form2

    Coala

    CPAE 525.1 091 01 ME 21Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    25/57

    4.2.3. Aranjarea obiectelor pe forma Form3Aici doar un component este invizibil la rularea aplicatiei - Editl. Restul

    componentelor sunt vizibile.

    1 2 3 4 5Fig. 13 Aranjarea componentelor pe forma Form3

    Cifrele din imagine reprezint:

    1. Editl - este folosit ca variabila;2. Buttonl -obiect cu inscriptia Yes" pentru a confirma salvarea modificarilor efectate;3. Labell - inscriptia din acest obiect furnizeaza utilizatorului o interogare;4. Button2 -obiect cu inscriptia No" pentru a refuza salvarea modificarilor nesalvate;

    5. Button3 - permite de a se intoarce la aplicatie fara a efectua vreo operatie.

    4.3. Declararea functiilor i descrierea lorOrice functie, variabila sau constant utilizata in program trebuie declarata

    Declararea functiilor se face in modulule header Unitl.h, Unit2.h i Unit3.hFunctiile predefinite nu necesita a fi declarate, deoarece sunt incluse in bibliotecildisponibile in C++ Builder.

    tii Warning . kS*1

    You have unsaved cha iges. Do you want to save them?; Editl Yes No Cancel

    Coala

    CPAE 525.1 091 01 ME 22Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    26/57

    4.3.1. Funcjia Arc();Metoda Arc(X1, Y2, X2, Y2, X3, Y3, X4, Y4) deseneaz o figura deschis n

    form de arc de elips sau de cerc cu ajutorul parametrilor curenti a Pen. Figura nu s

    umple cu valoarea lui Brush. Punctele cu coordonatele X1, Y1, X2, Y2 specificcolturile dreptunghiului care circumscrie elipsa. Arcul se ncepe din punctul carreprezint intersectia elipsei cu dreapta, care trece prin central ei i punctul cucoordonatele X3, Y3. Punctul final a arcului se stabilete prin intersectia elipsei cdreapta , care trece prin centrul ei i punctul cu coordonatele X4, Y4. Arcul sedeseneaz mpotriva acului de ceasornic de la punctul initial la punctul final.

    4.3.2. Functia CopyRect()

    Copie un fragment al imaginii de pe o pnz pe alta.

    Clasa TCanvas

    Declarareavoid __ fastcall CopyRect (const Windows::TRect SDest,

    TCanvas *Canvas,Const Windows::TRect &Source);

    Descrierea

    Metoda CopyRect deplaseaz fragmentul al imaginii definit de parametralSource de pe pnza sursei de imagine Canvas n regiunea definit de parametral Dea obiectului dat TCanvas. Copierea are loc n regimul stabilit de proprietateaCopyMode.

    4.3.3. Functia DrawFocusRect()Deseneaz imaginea dreptunghiului ntr-o forma utilizat pentru afiarea

    cadrului de focalizare, cu ajutorul operatiei XOR.Coala

    CPAE 525.1 091 01 ME 23Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    27/57

    Clasa TCanvas Declarareavoid _ fastcall DrawFocusRect (const Windows::TRect &Rect);

    DescriereaMetoda DrawFocusRect deseneaz pe pnz in regiunea Rect imaginea

    dreptunghiului intr-o form care de obicei se folosete pentru afiarea cadrului dfocalizare, adic prin puncte. La desenare se folosete operatia XOR, ce permite deterge imaginea dreptunghiului prin desenarea lui repetat.

    4.3.4. Functia Ellipse()

    Deseneaz elips sau cerc umpluti.

    Clasa TCanvas Declarareavoid _ fastcall Ellipse (int X1, int Y1, int X2, int Y2);

    DescriereaMetoda Ellipse deseneaz circumferint sau elips cu ajutorul parametrilor

    curenti a Pen. Figura se umpl cu valoarea curent a Brush. Punctele (X1, Y1) i(X1, Y2) definesc dreptunghi care circumscrie elipsa. Exemplu Operatorul

    Image1->Canvas->Brush->Color = clRed;Image1->Canvas->Ellipse(0, 0, Image1->Width, Image1->Height); va desena

    elips circumscris in componentul Imagel i umplut cu culoarearoie.

    4.3.5. Functia FillRect

    Umple dreptunghiul indicat de pe panza folosind parametral curent Brush.

    Clasa TCanvas

    Coala

    CPAE 525.1 091 01 ME 24Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    28/57

    Declarareavoid _ fastcall FillRect (const Windows::TRect &Rect);

    DescriereaMetoda Fillrect umpla un dreptunghi de pe panza, indicat de de parametru

    Rect, folosind valoarea curenta a Brush. Regiunea care se umpla include partile dsus i de stanga a dreptunghiului, dar nu include partile de dreapta i de jos. Lautilizarea FillRect parametrul Rect deseori este stabilit de functia Rect.

    ExempluOperatorulImage1->Canvas->FillRect (Rect(0, 0, Image1->Width, Image1->Height);terge totul de pe panza componentului Imagel, umpland-o cu fon daca el est

    setat in proprietatile ale Brush.

    4.3.6. Functia FloodFillColoreaza cu peria curenta regiunea inchisa de pe panza, cu culoarea stabilita

    Clasa TCanvas

    DeclarareaEnum TFillStyle (fsSurface, fsBorder);void _ fastcall FloodFill (int X, int Y, TColor Color,

    TFillStyle FillStyle);

    DescriereaMetoda FloodFill coloreaz cu peria curent Brush regiunea inchis de pe

    pnz, stabilit de culoarea i de punctul initial de colorare (X, Y). Punctul cucoordonatele X i Y reprezint un punct intern aleatoriu al regiunei care se umpl poate fi de o form aleatoare. Hotarul acestei regiuni este stabilit de ansamblul d

    Coala

    CPAE 525.1 091 01 ME 25Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    29/57

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    30/57

    Metoda LineTo deseneaz pe pnz linia dreapt care se ncepe cu pozitiacurent a stiloului PenPos i se termin cu punctul (X, Y), cu exceptia a acestupunct (X, Y). Pozitia curent a stiloului PenPos se deplaseaz n punctul (X, Y). L

    desenare se folosesc setrile curente a stiloului Pen.

    4.3.8. Func^ia MoveTo

    Modific pozitia curent a stiloului pe cea indicat, fr a desena ceva.

    Clasa TCanvas

    Declarareavoid _ fastcall MoveTo (int X, int Y);

    DescriereaMetoda MoveTo modific pozitia curent a stiloului PenPos la cea indicat de

    punctul (X, Y). Aceasta este echivalent cu setarea direct a propriettii PenPos. Ldeplasarea stiloului prin metoda MoveTo nimic nu se deseneaz.

    4.3.9. Funcjia RectangleDeseneaz pnz cu stiloul curent un dreptunghi i l umpl cu peria curent

    Clasa TCanvas

    void _ fastcall Rectangle (int Xl, int Yl, int X2, int Y2);

    DescriereaMetoda Rectangle deseneaz pe pnz cu stiloul curent Pen un dreptunghi acrui coltul stng de sus are coordonatele (Xl, Yl), iar cel drept de jos - (X2, Y2)Dreptunghiul este umplut cu peria curent Brush.

    DeclarareaCoala

    CPAE 525.1 091 01 ME 27Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    31/57

    4.3.10. Funcfia ShowMessage

    Afieaz ferestre de dialog simple de mesaj.

    Fixier header: Dialogs.hpp.

    Sintax#include extern PACKAGE void __ fastcall ShowMessage (constAnsiString Msg);

    DescriereaIn aplicatii deseori este necesar de afiat diverse ferestre de dialog simple

    pentru a transmite utilizatorului unele instructiuni. Cea mai simpl dintre functii dacest gen este ShowMessage, care afieaz o fereastr cu mesaj. Textul mesajulueste stabilit de parametral Msg. Antetul ferestrei coincide cu numele fiierulexecutabil al aplicatiei.

    4.3.11. Functia TextOutScrie pe pnz linie de text indicat, incepnd cu pozitia indicat.

    Clasa TCanvas

    Declararea

    void _ fastcall textOut (int X, int Y, const AnsiString Text);

    DescriereaFunctia TextOut scrie linie de text Text pe pnz, ncepnd de la pozitia cu

    coordonatele (X, Y). Inscriptia se face corespunztor setrilor curente a fontulu

    Font. Fundalul inscriptiei este determinat de setrile curente ale periei Brush. Poziticurent PenPos a stiloului pen este deplasat la captul textului afiat.

    Coala

    CPAE 525.1 091 01 ME 28Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    32/57

    Dac culoarea curent periei n momentul afirii a textului se deosebete dela cea a pnzei, atunci textul va fi suprapus unui dreptunghi de aceast culoare. Dadimensiunile lui vor fi exact identice dimensiunii textului.

    ExempluOperatorulImage1->Canvas->TextOut (10, 10, s) afieaz text care se pstreaz n

    variabila de ir s pe pnza componentului Imagel, ncepnd cu pozitia (10, 10).

    4.4. Descrierea fiierului header Unit1.hn conformitate cu principiul ncapsulrii (ascunderii) informatiei, textul

    modulului este divizat n dou prti:- Unitl.h - headerul,unde are loc declararea functiilor, claselor, variabilelorutilizate, etc.- Unitl.cpp modulul executiv, care contine descrierea functiilor.

    Dup cum se observ, n header sunt incluse directivele preprocesorului

    #include, unde se indic preprocesorului ce biblioteci trebuie s includ n programmacrosuri, etc.

    Mai jos de directive sunt declarate clasele de componente i functiile. ClasaTForml este divizat n 3 compartimente:- Published. Compartiment deschis ce contine declararea componentelor i ametodelor de prelucrare a lor; tot ce se contine aici, C++ Builder include automat

    timpul proiectrii formei.

    - Private. Compartiment nchis, declarable fcute aici sunt disponibile numaipentru modulul dat.

    - Public. Compartiment deschis, declarable sunt accesibile pentru alte clase saumodule.

    Programatorul poate aduga propriile functii, clase, variabile ncompartimentele public i private.

    Coala

    CPAE 525.1 091 01 ME 29Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    33/57

    Dup declararea clasei urmeaz propozitia PACKAGE, inclus automat nheader. Dup ea putem declara tipurile, variabilele, functiile, la care vom avea accedin alte module, dar care nu se include n clasa TForml.

    Pentru necesittile mecanismului Undo, dialogurilor de deschidere/salvare afiierelor grafice i a unelor instrumente de desenare declarm componente de tipTBitmap: Graphics::TBitmap *Bitmap = new Graphics::TBitmap;Graphics::TBitmap *Bitmap1 = new Graphics::TBitmap; Graphics::TBitmap*Bitmap2 = new Graphics::TBitmap; Graphics::TBitmap *Bitmap3 = newGraphics::TBitmap; Graphics::TBitmap *Bitmap4 = new Graphics::TBitmap;

    Graphics::TBitmap *Bitmap5 = new Graphics::TBitmap; Graphics::TBitmap*Bitmap6 = new Graphics::TBitmap; Graphics::TBitmap *Bitmap7 = newGraphics::TBitmap; Graphics::TBitmap *Bitmap8 = new Graphics::TBitmap;Graphics::TBitmap *Bitmap9 = new Graphics::TBitmap; Graphics::TBitmap*Bitmap10 = new Graphics::TBitmap; Graphics::TBitmap *Bitmap11 = newGraphics::TBitmap; Graphics::TBitmap *Bitmap12 = new Graphics::TBitmap;Graphics::TBitmap *Bitmap13 = new Graphics::TBitmap; Graphics::TBitmap*Bitmap14 = new Graphics::TBitmap; Graphics::TBitmap *Bitmap15 = newGraphics::TBitmap; Graphics::TBitmap *Buffer = new Graphics::TBitmap;

    n continuare declarm 2 componente de tip TRect:TRect R,R0;

    Ele se ntrebuinteaz de mai multe instrumente care apeleaz la formdreptunghiular.

    Mai departe declarm mai multe variabile de tip ntreg:int X0,Y0,X1,Y1;

    Toate ele slujesc pentru stabilirea coordonatelor. Urmtoarele variabile suntde tip boolean:bool RBegin = false, REnd = false, RDrag = false, Reset = false;

    Coala

    CPAE 525.1 091 01 ME 30Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    34/57

    Prima variabil este un semnal care arat c s-a nceput sau nu selectareafragmentului. A doua este opus primei - ea semnalizeaz dac s-a terminat sau nselectarea fragmentului. Cea de-a treia, ultima, slujete pentru evitarea aparitiei

    semnalizrii ca sunt modificri nesalvate la apelarea la Undo. Valoarea 1 semnificfaptul ca mecanismul Undo a fost resetat.

    Concluzien aceast lucrare de curs am elaborat aplicatie pentru editarea imaginilor

    (analog Microsoft Paint). Aplicatia creat se numete Damn Small Paint (prescurtaDSP) i este distribuit sub termenii licentei GPL versiunea a 3-a.

    Ca mediu de programare am ales C++ Builder versiunea 6. La baza lui stlimbajul de programare C++ Builder, o extindere a C++, un limbaj foarte performani universal, ca are la baz tehnologia RAD (Rapid Application Development)permitnd crearea unor aplicatii prin metoda orientat-obiect, adic este necesarnumai amplasarea obiectelor, cum i am procedat n capitolul 4.2, i apoi descriereevenimentelor, ms relativ complicat (fat de exemplu Delphi), fapt ce nu poate fevitat n cazul unei performante mai mari.

    Printre avantajele aplicatiei DSP pot fi mentionati: o interfat simpl iintuitiv, cu instrumente aranjate ergonomic, fr o supra-aglomerare; modificrilnepstrate nu sunt pierdute; posibilitatea de a amna modificrile recente; uninstrument de deplasare/copiere intuitiv.

    Printre dezavantajele aplicatiei DSP pot fi mentionati: prezenta bug-urilorcare creaza incomoditati sau chiar forteaza pe utilizatorul de a reporni aplicatiasuporta doar formatul BMP.

    Daca comparam cu analoage, programul elaborat este destul de primitiv.Instrumentarul este sarac i nu este deplin, mecanismul de amanare i deplasare

    copiere sunt atipice.Luand in consideratie cerintele initiale (capitolul 2) putem spune ca sarcina a

    fost indeplinita conform acestora, adica poate ceea ce trebuia sa poata conform

    Coala

    CPAE 525.1 091 01 ME 31Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    35/57

    prevederilor. In plus, scopul principal a lucrarii de curs a fost obtinerea deprinderilopractice de proiectare a unui produs soft.

    Analizand obiectivele initiale i rezultatul proiectarii putem concluziona ca

    lucrarea este indeplinita corect.

    Bibliografie1. "C++ Builder6. . 1. ++", . ., ", 2002, ; 2. "C++ Builder6. . 2. ", . ., ", 2002, ; 3. " C++ Builder 6", . ., ", 2003, ; 4. http://wikipedia.org/ ; 5. http://google.com.

    Anexa 1

    1. Codul de program al header-ului Forml (Unitl.h) // -------------------------------------------------------------------------------------

    #ifndef UnitlH

    #define UnitlH // -------------------------------------------------------------------------------------#include #include #include #include #include

    Coala

    CPAE 525. l 09l Ol ME 32Mod. Coala document. Semnat. Data

    http://wikipedia.org/http://wikipedia.org/http://wikipedia.org/http://google.com/http://google.com/http://google.com/http://google.com/http://wikipedia.org/
  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    36/57

    #include #include #include #include #include // -------------------------------------------------------------------------------------

    Graphics::TBitmap *Bitmap = new Graphics::TBitmap;Graphics::TBitmap *Bitmap1 = new Graphics::TBitmap;Graphics::TBitmap *Bitmap2 = new Graphics::TBitmap;Graphics::TBitmap *Bitmap3 = new Graphics::TBitmap;Graphics::TBitmap *Bitmap4 = new Graphics::TBitmap;Graphics::TBitmap *Bitmap5 = new Graphics::TBitmap;Graphics::TBitmap *Bitmap6 = new Graphics::TBitmap;Graphics::TBitmap *Bitmap7 = new Graphics::TBitmap;Graphics::TBitmap *Bitmap8 = new Graphics::TBitmap;Graphics::TBitmap *Bitmap9 = new Graphics::TBitmap;Graphics::TBitmap *Bitmap10 = new Graphics::TBitmap;

    Graphics::TBitmap *Bitmap11 = new Graphics::TBitmap;Graphics::TBitmap *Bitmap12 = new Graphics::TBitmap;Graphics::TBitmap *Bitmap13 = new Graphics::TBitmap;Graphics::TBitmap *Bitmap14 = new Graphics::TBitmap;Graphics::TBitmap *Bitmap15 = new Graphics::TBitmap;Graphics::TBitmap *Buffer = new Graphics::TBitmap; TRectR,R0; int X0,Y0,X1,Y1;bool RBegin = false, REnd = false, RDrag = false, Reset = false;class TForm1 : public TForm{_ published: // IDE-managed Components

    TImage *Image1; TImage *Image2; TImage*Image4; TImage *Image3; TSpeedButton*SBBrush; TSpeedButton *SBColor;TOpenPictureDialog *OpenPictureDialog1;TMainMenu *MainMenu1; TMenuItem *File1;

    TMenultem *MOpen;TMenultem *Editl;

    TMenultem *Undo;TMenultem *Exitl;TSpeedButton *SBPen;TSpeedButton *SBRect;TSpeedButton *SBErase;TSpeedButton *SBRectang;TSpeedButton *SBFillRec;TSpeedButton *SBLine;TMenultem *MSaveAs;TMenultem *Helpl;TMenultem *Aboutl;TSavePi ctureDi alog *S avePictureDi alogl;TSpeedButton *SBEllipse;TSpeedButton *SBFillEllipse;TButton *Width;TEdit *PenWidth;TSpeedButton *SBInsertText;

    Coala

    CPAE 525.1 091 01 ME 33Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    37/57

    TFontDialog *FontDialogl;TEdit *InsertText;TLabel *WidthPen;TLabel *Text;TMenultem *Manuall;TMenultem *Newl;

    TMenultem *Savel;TEdit *Edit2;TEdit *Edit3;TEdit *Edit5;TEdit *Edit6;TEdit *Edit7;TEdit *Edit8;TEdit *Edit9;void __ fastcall FormCreate(TObject *Sender);void __ fastcall MOpenClick(TObject *Sender);void __ fastcall ExitlClick(TObject *Sender);void __ fastcall UndoClick(TObject *Sender);void __ fastcall Image4MouseDown(TObject *Sender,TMouseButton Button, TShiftState Shift, int X, int Y);

    void __ fastcall Image3MouseDown(TObject *Sender,TMouseButton Button, TShiftState Shift, int X, int Y);

    void __ fastcall SBBrushClick(TObject *Sender);void __ fastcall Image3MouseMove(TObject *Sender, TShiftState Shift,int X, int Y);

    void __ fastcall Image3MouseUp(TObject *Sender, TMouseButton Button,TShiftState Shift, int X, int Y);

    void __ fastcall MSaveAsClick(TObject *Sender);void __ fastcall AboutlClick(TObject *Sender);void __ fastcall SavelClick(TObject *Sender);void __ fastcall WidthClick(TObject *Sender);void __ fastcall Image3Click(TObject *Sender);void __ fastcall NewlClick(TObject *Sender);

    void __ fastcall Manual1Click(TObject *Sender);void __ fastcall FormCloseQuery(TObject *Sender, bool &CanClose);

    private: // User declarations public: // User declarations_ fastcall TForm1(TComponent* Owner);

    }; // extern PACKAGE TForm1 *Form1; // #endif

    2. Codul de program al par^ii executive Form1 (Unit1.cpp) //

    #include #pragma hdrstop#include "Unit1.h"#include "Unit2.h"#include "Unit3.h" //

    Coala

    CPAE 525.1 091 01 ME 34Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    38/57

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    39/57

    // Instalam valorile variabilelor necesareEdit5->Text = 0;Edit2->Text = 0;Edit3->Text = 0;Edit8->Text = 0; //Setam proprietatile necesare a componentelor noastre SavePictureDialog1->DefaultExt=".bmp";

    SavePictureDialog1->Filter="Bitmaps (*.bmp)|*.bmp"; OpenPictureDialog1->DefaultExt=".bmp";OpenPictureDialog1->Filter="Bitmaps (*.bmp)|*.bmp"; SBBrush->AllowAllUp = true;SBPen->AllowAllUp = true; SBRect->AllowAllUp = true;

    SBErase->AllowAllUp = true; SBLine->AllowAllUp = true; SBRectang->AllowAllUp =true; SBFillRec->AllowAllUp = true; SBEllipse->AllowAllUp = true;SBFillEllipse->AllowAllUp = true; SBInsertText->AllowAllUp = true;SBColor->AllowAllUp = true; SBBrush->GroupIndex = 1; SBPen->GroupIndex = 1;SBRect->GroupIndex = 1; SBErase->GroupIndex = 1; SBLine->GroupIndex = 1;SBRectang->GroupIndex = 1; SBFillRec->GroupIndex = 1; SBEllipse->GroupIndex = 1;SBFillEllipse->GroupIndex = 1; SBInsertText->GroupIndex = 1; SBColor->GroupIndex =1;SBBrush->Hint = "Brush. Left-click for main color, right-click for auxiliary color";SBPen->Hint = "Pen. Draw a free-style line";SBRect->Hint = "Selection. Hold Ctrl to copy";SBErase->Hint = "Eraser. It uses auxiliary color";SBLine->Hint = "Line. Draw a straight line";SBRectang->Hint = "Rectangle. Draw an empty rectangle";SBFillRec->Hint = "Filled rectangle";SBEllipse->Hint = "Ellipse. Draw an empty ellipse";SBFillEllipse->Hint = "Filled ellipse";SBInsertText->Hint = "Insert text";SBColor->Hint = "Pippete. Left-click for main color, right-click for auxiliary color";SBBrush->ShowHint = true;SBPen->ShowHint = true;SBRect->ShowHint = true;SBErase->ShowHint = true;SBLine->ShowHint = true;SBRectang->ShowHint = true;SBFillRec->ShowHint = true;SBEllipse->ShowHint = true;SBFillEllipse->ShowHint = true;SBInsertText->ShowHint = true;SBColor->ShowHint = true;Image1->ShowHint = true;Image2->ShowHint = true;Image4->ShowHint = true;InsertText->ShowHint = true;Image1->Hint = "Main color";Image2->Hint = "Auxiliary color";

    Image4->Hint = "Color palette";InsertText->Hint = "Introduce here your text";Edit2->Visible = false;Edit3->Visible = false;Edit5->Visible = false;

    Coala

    CPAE 525.1 091 01 ME 36Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    40/57

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    41/57

    Bitmap5->Assign(Image3->Picture);Bitmap6->Assign(Image3->Picture);Bitmap7->Assign(Image3->Picture);Bitmap8->Assign(Image3->Picture);Bitmap9->Assign(Image3->Picture);Bitmap10->Assign(Image3->Picture);Bitmap11->Assign(Image3->Picture);Bitmap12->Assign(Image3->Picture);Bitmap13->Assign(Image3->Picture);Bitmap14->Assign(Image3->Picture);Bitmap15->Assign(Image3->Picture);Reset = true;}} // -------------------------------------------------------------------------------------

    void __ fastcall TForm1::Exit1Click(TObject *Sender){ // Efectuam inchiderea aplicatiei. Dar inainte de aceasta se va apela la CloseQuery(), ceea ce ne va permit // sa salvam sau nu modificarile sau in genere sa aminam inchidere a aplicatieiClose();} // -------------------------------------------------------------------------------------

    void __ fastcall TForm1::UndoClick(TObject *Sender){ // Aici este prezentat mecanismul ciclic Undo.Image3->Picture->Assign(Bitmap);Bitmap->Assign(Bitmap1);Bitmap1->Assign(Bitmap2);Bitmap2->Assign(Bitmap3);Bitmap3->Assign(Bitmap4);Bitmap4->Assign(Bitmap5);Bitmap5->Assign(Bitmap6);Bitmap6->Assign(Bitmap7);Bitmap7->Assign(Bitmap8);Bitmap8->Assign(Bitmap9);Bitmap9->Assign(Bitmap10);Bitmap10->Assign(Bitmap11);Bitmap11->Assign(Bitmap12);Bitmap12->Assign(Bitmap13);Bitmap13->Assign(Bitmap14);Bitmap14->Assign(Bitmap15);Bitmap15->Assign(Image3->Picture); // Variabila Reset a fost deja mentionata. In cazul in care nu s-a efectuat deschiderea // sau crearea unui nofisier variabila data ramine false, ce duce in consecinta la stabilirea // faptului ca daca aplicam mecanismuUndo imaginea va fi considerata ca una care a suferit modificari,

    // ce si va fi afisat in antetul aplicatieiif(Reset){

    Coala

    CPAE 525.1 091 01 ME 38Mod. Coala document. Semnat. Data

    Coala

    CPAE 525.1 091 01 ME 39Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    42/57

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    43/57

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    44/57

    }else if (SBRect->Down || SBRectang->Down || SBFillRec->Down || SBEllipse->Down ||SBFillEllipse->Down){if (REnd){ // Suprimam DrawFocusRect precedent

    Image3->Canvas->DrawFocusRect(R); // Regimul de incepere a deplasariifragmentuluiif ((X < R.Right) && (X > R.Left) && (Y > R.Top) && (Y < R.Bottom)){

    // Instalarea flagurilor RDrag = true; REnd = false; // Memorarea pozitiei intiale fragmentului care este deplasat

    R0 = R; // Memorarea imaginiiBuffer->Assign(Image3->Picture); // Setarea culorii a BrushImage3->Canvas->Brush->Color = Image2->Canvas->Brush->Color;}

    }else // Setam flagurile care semnalizeaza ca s-a inceput desenarea chenarului a fragmentului. De asemenea // stabilim coordonatele si desenam chenarul propriu-zis{

    RBegin = true;REnd = false;R.Top = X;R.Bottom = X;R.Left = Y;R.Right = Y;Image3->Canvas->DrawFocusRect(R);}

    }}}

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

    void __ fastcall TForm1::SBBrushClick(TObject *Sender){ // Semnalam ca nu au loc nici un fel de operatii cu fragment RBegin = false; RDrag = false;REnd = false; } //

    void __ fastcall TForm1::Image3MouseMove(TObject *Sender, TShiftState Shift,int X, int Y)

    { // Blocam posibilitatea de a desena cu tasta dreapta a mouse-ului if (! Shift.Contains(ssLeft)) return; // Desenam linia dreaptaif (SBLine->Down){ // Stergem linia anterioara Image3->Canvas->MoveTo(X0,Y0); Image3->Canvas->LineTo(X 1,Y1); // Desenam linia noua Image3->Canvas->MoveTo(X0,Y0); Image3->Canvas->LineTo(X,Y); // Memoramnoile coordonate a capatului liniei X1 = X; Y1 = Y;} // Desenam linie aleatoareelse if (SBPen->Down)Image3->Canvas->LineTo(X,Y);

    Coala

    CPAE 525.1 091 01 ME 42Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    45/57

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    46/57

    I // Regimul de deplasara a fragmentului cu restabilirea imaginii sub fragmentul deplasatImage3->Canvas->CopyRect(R,Buffer->Canvas,R); // Daca nu este apasata tasta Ctrl s sterge imagineain RO if (! Shift.Contains(ssCtrl)) Image3->Canvas->FillRect(R0); // Formarea pozitiei noi afragmentului R.Left = R.Left + X - XO; R.Right = R.Right + X - XO; R.Top = R.Top + Y - YO;R.Bottom = R.Bottom + Y - YO; // Memorarea pozitiei cursorului XO = X; YO = Y; // Desenarea fragmentului in pozitia noua

    Image3->Canvas->CopyRect(R,Buffer->Canvas,R0); // Desenarea chenaruluiImage3->Canvas->DrawFocusRect(R);}}

    } // -------------------------------------------------------------------------------------

    void __ fastcall TForml::Image3MouseUp(TObject *Sender, TMouseButton Button,TShiftState Shift, int X, int Y)

    I if (SBLine->Down)I // Stergem linia anterioara, schimbam regimul de desenare si cream linia dreapta doritaImage3->Canvas->MoveTo(X0,Y0); Image3->Canvas->LineTo(X 1,Y1);Image3->Canvas->Pen->Mode = pmCopy; Image3->Canvas->MoveTo(X0,Y0);Image3->Canvas->LineTo(X,Y);} else if (SBRect->Down)I // In primul caz suprimam chenarul, in al doilea anuntam ca fragmentul a fost ales if (RDrag)Image3->Canvas->DrawFocusRect(R); if (RBegin && ! REnd)IREnd = true; }} // Instrumental de desenare a dreptungiului a fost realizat cu ajutorului liniilor.

    // Aceasta se explica prin complicatiile care au aparut cu instrumental FrameRect(R). // La desenarea cu ajutorul FrameRect nu era posibila suprimarea corecta a DrawFocusRect(R). // La inceput stabilim culoarea Pen (ea determina culoarea liniei), apoi suprimamDrawFocusRect // si in final desenam figura dorita else if (SBRectang->Down)I

    Coala

    CPAE 525.1 091 01 ME 44Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    47/57

    Image3->Canvas->Pen->Color = Image1->Canvas->Brush->Color;Image3->Canvas->DrawFocusRect(R);Image3->Canvas->MoveTo(R.Left,R.Top);Image3->Canvas->LineTo(R.Right,R.Top);Image3->Canvas->LineTo(R.Right,R.Bottom);Image3->Canvas->LineTo(R.Left,R.Bottom);

    Image3->Canvas->LineTo(R.Left,R.Top);} // Instrumental desenarii a dreptunghiului umplut este unul simplu si functioneaza asa: // Setam culoarea Pen si Brush (ambele influentiaza instrumental Rectangle. Setam aceleasiculori // deoarece dorim un dreptunghi colorat complet intr-o culoare). // Desenam cu ajutorul Rectangle, stabilind colturile de sus stinga si de jos dreaptaelse if (SBFillRec->Down){

    Image3->Canvas->Brush->Color = Image1->Canvas->Brush->Color; Image3->Canvas->Pen->ColoImage1->Canvas->Brush->Color;

    Image3->Canvas->Rectangle(R.Left,R.Top,R.Right,R.Bottom);} // Pentru desenarea cercului fara umplere folosim instrumental Arc. Primii 4 parametrii a sai // stabilesccoordonatele dreptunghiului in care se circumscrie arcul. Urmatorii 4 parametrii // stabilesc coordonatelinceputului si sfirsitului arcului. Le stabilim in coltul sting al // dreptunghiului si in asa fel primim inrezultat figura cerculuielse if (SBEllipse->Down){Image3->Canvas->Pen->Color = Image1->Canvas->Brush->Color;Image3->Canvas->DrawFocusRect(R);Image3->Canvas->Arc(R.Left,R.Top,R.Right,R.Bottom,R.Left,R.Left,R.Left,R.Left);} // Cercul umplut desenam cu ajutorul Ellipse. Parametrii sai stabilesc coordonatele // dreptunghiului incare se va circumscrie cerculelse if (SBFillEllipse->Down){Image3->Canvas->Pen->Color = Image1->Canvas->Brush->Color;Image3->Canvas->DrawFocusRect(R);Image3->Canvas->Brush->Color = Image1->Canvas->Brush->Color;Image3->Canvas->Ellipse(R.Left,R.Top,R.Right,R.Bottom);} // La inserarea textului chemam dialogul care stabileste parametrii textului (FontDialog1) // si transmitemparametrii setati spatiului de lucru. Apoi inseram insasi textul cu ajutorul // instrumentului TextOut care

    insereaza textul inscris in cimpul Text. Parametrii sai stabilesc // coordonatele de sus stinga adreptunghiului in care va fi inserat textul si sursa textului pe // care dorim sa-l inseramelse if (SBInsertText->Down){if(FontDialog1->Execute()){Image3->Canvas->Brush->Color = Image1->Canvas->Brush->Color;Image3->Canvas->Font->Color=FontDialog1->Font->Color;Image3->Canvas->Font=FontDialog1->Font;Image3->Canvas->Font->Size=FontDialog1->Font->Size;Image3->Canvas->Font->Style=FontDialog1->Font->Style;

    Image3->Canvas->TextOut(XO,YO,InsertText->Text); }}

    Coala

    CPAE 525.1 091 01 ME 45Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    48/57

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    49/57

    } // -------------------------------------------------------------------------------------

    void __ fastcall TForm1::About1Click(TObject *Sender){ // Aratam un scurt mesaj cu careva detalii despre aplicatia noastraShowMessage("Damn Simple Paint v0.1\nDistributed under GPL v3 terms\nAlex Fliker Inc.2011"); } // -------------------------------------------------------------------------------------

    void __ fastcall TForm1::Save1Click(TObject *Sender){ // Variabila Edit5 cu valoarea 0 semnifica faptul ca nu exista modificari sau modificarile au // fostpastrate, deci in consecinta nu aveam ce pastraif(Edit5->Text.ToInt()==0){ShowMessage("Nothing to save!"); } // Variabila Edit5 cu valoarea 1 semnalizeaza faptul ca exista modificari nesalvate

    if(Edit5->Text.ToInt()== 1){ // Variabila Edit2 setata in 1 semnifica faptul ca anterior s-a efectuat salvarea modificarilorif(Edit2->Text.ToInt()==1){ // Variabila Edit1 din Form3 semnifica faptul daca fisierul a fost pastrat intr-un file sau // a fost deschis unfisier. Valoarea 0 semnifica ca fisierul a fost pastrat cu SavePictureDialog1, // 1 - a fost deschis cuOpenPictureDialog1. Corespunzator efectuam pastrarea modificarilor. De // asemenea cream antetulcorespunzator al aplicatiei

    if(Form3->Edit 1->Text.ToInt()==0){

    Bitmap->Assign(Image3->Picture);Bitmap->SaveToFile(SavePictureDialog1->FileName);Form1->Caption = Edit7->Text + SavePictureDialog1->FileName;}if(Form3->Edit 1->Text.ToInt()== 1){Bitmap->Assign(Image3->Picture);Bitmap->SaveToFile(OpenPictureDialog1->FileName); Form1->Caption= Edit7->Text + OpenPictureDialog1->FileName;

    }}

    // Variabila Edit2 cu valoarea 0 semnifica ca anterior nu s-a efectuat pastrarea sau nu a fost deschis vreufisier. // Instalam variabila data in 1 pentru a semnaliza ca exista deja fisier in care se vor pastra modificarilulterioare. // Si iarasi cream antet corespunzator pentru aplicatieif(Edit2->Text.ToInt()==0)

    {if (SavePi ctureDi al og1->Execute()){Bitmap->Assign(Image3->Picture);Bitmap->SaveToFile(SavePictureDialog1->FileName); Edit2->Text = 1;Form1->Caption = Edit7->Text + SavePictureDialog1->FileName;}}

    // Semnalizam ca modificari nesalvate nu mai exista

    Coala

    CPAE 525.1 091 01 ME 47Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    50/57

    Edit5->Text = 0;}} // -------------------------------------------------------------------------------------

    void __ fastcall TForm1::WidthClick(TObject *Sender){

    // Pentru instrumentul de modificare a grosimii liniei cu care desenam linia arbitrara, // liniadreapta, dreptunghi si cerc cream mecanism de prevenire a caderii aplicatiei. // In cazul in careutilizatorul va seta in loc de o cifra orice alt simbol va fi afisat un mesaj // cu rugaminte de aintroduce un numartry { Image3->Canvas->Pen->Width = PenWidth->Text.ToInt(); }catch(...) { ShowMessage("Please, introduce a number!"); }} // -------------------------------------------------------------------------------------

    void __ fastcall TForm1::Image3Click(TObject *Sender){ // La apasarea pe spatiul de lucru, cu conditia ca este activat unul dintre instrumentele enumerate // mai j

    se va instala valoarea variabilei care semnalizeaza modificari nesalvate. De asemenea se // va crea antetul corespunzator. Pentru evitarea multiplicarii " - Unsaved changes" a fost instalata // conditia conform careia se verifica daca deja nu a fost adaugat in antet textul dat if(SBRect->Down ||SBRectang->Down || SBFillRec->Down || SBEllipse->Down || SBFillEllipse->Down || SBErase->DownSBBrush->Down || SBInsertText->Down || SBLine->Down || SBPen->Down){Edit5->Text = 1;if(Edit9->Text!=Form 1->Caption)

    {Form1->Caption = Form1->Caption + " - Unsaved changes";Edit9->Text = Form1->Caption;

    }

    }

    } // --------------------------------------------------------------------------------------

    void __ fastcall TForm1::New1Click(TObject *Sender){

    // Verificam daca imaginea a fost modificata sau nu (1 semnifica "da, a fost modificata")if(Edit5->Text.ToInt()== 1){ // Verificam daca imaginea anterior a fost pastrata (1 semnifica "da, a fost pastrata sau deschisa"). // Instalam valoarea variabilei Edit3 in 1 ce semnifica activarea mecanismului aparte de salvareif(Edit2->Text.ToInt()==1){

    Edit3->Text = 1;Form3->ShowModal();

    // Verificam daca nu a fost apasat butonul Cancel (in acest caz Edit5 devine 1). In caz daca butonul // Cancel a fost apasat imaginea ramine intacta

    if(Edit5->Text.ToInt()==0){ Image3->Canvas->Brush->Color = clWhite;

    Image3->Canvas->Pen->Color = clWhite;Image3->Canvas->Rectangle(0,0,Image3->Width,Image3->Height);Edit2->Text = 0; Edit5->Text = 0;Form3->Edit1->Text = 0;}

    Coala

    CPAE 525.1 091 01 ME 48Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    51/57

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    52/57

    void __ fastcall TForml::ManuallClick(TObject *Sender)I // Totul e simplu - doar chemam manualul, care reprezinta o forma aparte cu un singur obiect Memo // cu proprietatea ReadOnly setata in trueForm2->ShowModal();} // -------------------------------------------------------------------------------------

    void __ fastcall TForml::FormCloseQuery(TObject *Sender, bool &CanClose)I // Modificari exista (1). Se porneste mecanism suplimentar de verificare. if(Edit5->Text.ToInt()== 1)I // In cazul dat (1) a avut loc salvarea anterioara sau deschiderea unui fisier. // Cum deja am mentionatprima variabila in corpul if semnalizeaza faptul ca pastrarea // sau deschiderea unui fisier a fost dejaefectuata dar nu este necesara deschiderea // unui alt fisier (acest mecanism este descris mai detaliat si clain Unit3.cpp).

    // Valoarea 1 semnifica ca SaveDialog1 nu este nevoie de activat. Apoi urmeaza chemareadialogului // de salvareif(Edit2->Text.ToInt()==1){Edit3->Text = 1; Form3->ShowModal(); // Verificam daca butonul Cancel a fost sau nu apasat. In caz in care a fost apasat are loc aminarea // inchiderii aplicatiei

    if(Edit8->Text.ToInt()==1){CanClose =false; }

    } // Verificam daca imaginea a fost anterior salvata (sau a fost deschisa dintr-un fisier). // In cazul dat (0) nu s-a efectuat pastrarea anterioara sau deshiderea unui fisier. // Stabilim valoarea variabilei care semnalizeaza faptul ca salvarea se efectueaza pentru primadata, // dar nu este nevoie de deschis alt fisier (0 semnalizeaza faptul ca este necesar dupa // pastrare de des

    fisier. 2 semnifica faptul ca este nevoie de activat SaveDialog1)if(Edit2->Text.ToInt()==0)

    {Edit3->Text = 2; Form3->ShowModal();if(Edit8->Text.ToInt()==1)

    {CanClose =false; }

    }} // Verificam daca imaginea a suferit modificari. In cazul dat (0) modificari lipsesc si aplicatia // este oprit(parametrul CanClose este setat in true, ceea ce permite aplicatiei de a fi inchisa). // De asemenea, inaintde inchiderea aplicatiei are loc eliberarea memoriei datorita golirii // memoriilor-bufer a mecanismuluiUndoif(Edit5->Text.ToInt()==0) {Bitmap->Free();Bitmap1->Free();Bitmap2->Free();Bitmap3->Free();Bitmap4->Free();

    Coala

    CPAE 525.1 091 01 ME 50Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    53/57

    Bitmap5->Free();Bitmap6->Free();Bitmap7->Free();Bitmap8->Free();Bitmap9->Free();Bitmap10->Free();

    Bitmap11->Free();Bitmap12->Free();Bitmap13->Free();Bitmap14->Free();

    Bitmap15->Free();CanClose = true;}} // -------------------------------------------------------------------------------------

    Anexa 21. Codul de program al header-ului Form2 (Unit2.h)

    // -------------------------------------------------------------------------------------#ifndef Unit2H#define Unit2H // -------------------------------------------------------------------------------------#include

    #include #include #include // -------------------------------------------------------class TForm2 : public TForm{_ published: // IDE-managed Components

    TMemo *Manual;void __ fastcall FormCreate(TObject *Sender);

    private: // User declarations public:// User declarations

    _ fastcall TForm2(TComponent* Owner);}; // -------------------------------------------------------------------------------------extern PACKAGE TForm2 *Form2; // -------------------------------------------------------------------------------------#endif

    2. Codul de program al prjii executive Form2 (Unit2.cpp) // -------------------------------------------------------------------------------------#include #pragma hdrstop#include

    "Unit2.h" // -------------------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm" TForm2*Form2; // -------------------------------------------------------------------------------------

    Coala

    CPAE 525.1 091 01 ME 51Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    54/57

    _ fastcall TForm2::TForm2(TComponent* Owner): TForm(Owner)

    {}

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

    Form2->Caption = "Manual for DSP"; Manual->ScrollBars =ssVertical;Manual->ReadOnly = true;} // -------------------------------------------------------------------------------------

    Anexa 31. Codul de program al header-ului Form3 (Unit3.h)

    // -------------------------------------------------------------------------------------#ifndef Unit3H#define Unit3H

    // -------------------------------------------------------------------------------------#include #include #include #include #include #include // -------------------------------------------------------------------------------------Graphics::TBitmap *Bitmap16 = new Graphics::TBitmap;class TForm3 : public TForm{_ published: // IDE-managed Components

    TLabel *Label1;TButton *Button1;TButton *Button2;TButton *Button3;TEdit *Edit1;void __ fastcall Button1Click(TObject *Sender);void __ fastcall Button2Click(TObject *Sender);void __ fastcall Button3Click(TObject *Sender);void __ fastcall FormDestroy(TObject *Sender);void __ fastcall FormCreate(TObject *Sender);

    private: // User declarations public: // User declarations_ fastcall TForm3(TComponent* Owner);

    }; // -------------------------------------------------------------------------------------extern PACKAGE TForm3 *Form3; // -------------------------------------------------------------------------------------#endif

    2. Codul de program al parjii executive Form3 (Unit3.cpp) // -------------------------------------------------------------------------------------

    void___ fastcall TForm2::FormCreate(TObject *Sender)

    {Form2->AutoSize = true;Coala

    CPAE 525.1 091 01 ME 52Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    55/57

    #include #pragma hdrstop #include "Unit3.h" #include"Unit1.h" // ------------------------------------------------------------------------

    #pragma resource "*.dfm"TForm3 *Form3; // -------------------------------------------------------------------------------------

    _ fastcall TForm3::TForm3(TComponent* Owner): TForm(Owner)

    { } // -------------------------------------------------------------------------------------

    void __ fastcall TForm3::Button1Click(TObject *Sender){ // Verificam daca a fost efectuata pastrare anterioara (1 - da, 0 - nu)if(Form 1->Edit2->Text.ToInt()== 1){ // Verificam daca dorim sa efectuam simpla pastrare (1), sa deschidem un fisier (0) // sau sa sa pastram infisier nou (2)if(Form 1->Edit3->Text.ToInt()==0)

    { // Verificam unde anume sa pastram (0 - in fisierul anterior pastrat, 1 - in fisierul anterior deschis)

    if(Edit1->Text.ToInt()==0){Bitmap16->Assign(Form 1->Image3->Picture);Bitmap16->SaveToFile(Form 1->SavePictureDialog1->FileName);}if(Edit1->Text.ToInt()== 1){Bitmap16->Assign(Form 1->Image3->Picture);Bitmap16->SaveToFile(Form 1->OpenPictureDialog1->FileName);}if(Form 1->OpenPictureDialog1->Execute()){

    try { Form1->Image3->Picture->LoadFromFile(Form1->OpenPictureDialog1->FileName); }

    catch(...) { ShowMessage("Bad picture! Sorry but I am unable to open it."); }}}

    if(Form 1->Edit3->Text.ToInt()== 1){if(Edit1->Text.ToInt()==0){Bitmap16->Assign(Form 1->Image3->Picture);Bitmap16->SaveToFile(Form 1->SavePictureDialog1->FileName);}if(Edit1->Text.ToInt()== 1)

    {Bitmap16->Assign(Form 1->Image3->Picture);Bitmap16->SaveToFile(Form 1->OpenPictureDialog1->FileName);}}

    }if(Form 1->Edit2->Text.ToInt()==0)

    #pragma package(smart_init)Coala

    CPAE 525.1 091 01 ME 53Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    56/57

    {if(Form 1->Edit3->Text.ToInt()==0){

    if(Form 1->SavePictureDialog1->Execute()){Bitmap16->Assign(Form 1->Image3->Picture); Bitmap16->SaveToFile(Form1->SavePictureDialog1->FileName); Edit1->Text = 1;if(Form 1->OpenPictureDialog1->Execute()){try { Form1->Image3->Picture->LoadFromFile(Form1->OpenPictureDialog1->FileName);

    }catch(...) { ShowMessage("Bad picture! Sorry but I am unable to open it."); }}}}if(Form 1->Edit3->Text.ToInt()==2){if(Form 1->SavePictureDialog1->Execute()){Bitmap16->Assign(Form 1->Image3->Picture);Bitmap16->SaveToFile(Form 1->SavePictureDialog1->FileName);}}}

    // Setam vlorile variabilelor din Forml (s-a efectuat pastrarea, nu exista modificari nesalvate // si aplicatia poate fi inchisaForm1->Edit2->Text = 1;Form1->Edit5->Text = 0;

    F orm 1->Edit8->Text = 0; // Eliberam memoriaBitmap16->Free(); // Inchidem Form3Form3->Close();} // -------------------------------------------------------------------------------------

    void __ fastcall TForm3::Button2Click(TObject *Sender){ if(Form 1->Edit3->Text.ToInt()==0)

    {if(Form 1->OpenPictureDialog1->Execute()){try { Form1->Image3->Picture->LoadFromFile(Form1->OpenPictureDialog1->FileName); }catch(...) { ShowMessage("Bad picture! Sorry but I am unable to open it."); }}}

    if(Form 1->Edit3->Text.ToInt()== 1){Form3->Close();}

    Form1->Edit5->Text = 0;

    F orm 1->Edit8->Text = 0; Bitmap16->Free();Form3->Close();} // ---------------------------------

    Coala

    CPAE 525.1 091 01 ME 54Mod. Coala document. Semnat. Data

    Coala

    CPAE 525.1 091 01 ME 55

    Mod. Coala document. Semnat. Data

  • 7/31/2019 Ministerul Educatiei Al Republicii Moldova Universitatea Tehnica a Moldovei Facultatea de Radioelectronica

    57/57

    void ___ fastcall TForm3::Button3Click(TObject *Sender){Form1->Edit5->Text = 1; F

    orm 1->Edit8->Text = 1;Form3->Close(); } // -------------------------------------------------------------------------------------

    void ___ fastcall TForm3::FormDestroy(TObject *Sender){ Bitmap10->Free();} // -------------------------------------------------------------------------------------

    void ___ fastcall TForm3::FormCreate(TObject *Sender){ // Setam variabila si proprietatile a componentelor Edit1->Text = 0;Form 1->SavePictureDialog1->DefaultExt=M.bmpM;Form 1->SavePictureDialog1->Filter="Bitmaps (*.bmp)|*.bmp";Form 1->OpenPictureDialog1->DefaultExt=".bmp";Form 1->OpenPictureDialog1->Filter="Bitmaps (*.bmp)|*.bmp";Edit1->Visible = false;Form3->Caption = "Warning!";Form3->AutoSize = true;Form3->Top = 400;Form3->Left = 400;} // -------------------------------------------------------------------------------------

    Coala

    CPAE 525.1 091 01 ME 56Mod. Coala document. Semnat. Data


Recommended