Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Lucrul cu Graphics in CF – cu exemple in c#

     Programele folosesc librarii grafice pentru a desena folosind driverele care au rolul de “a contacta”  partea hardware.

     Windows CE nu suporta GDI si unele metode complexe pentru desenare (2-D, 3-D). Toate metodele destinate graficii in .Net Compact Framework sunt continute intr-o librarie  numita COREDLL.DLL.

     Cu ajutorul acestor metode, se poate scrie cod pentru dispozitive cu ecrane de rezolutie inalta.

    Functiile grafice se impart in 3 categorii:

Text

     Functiile importante din aceasta categorie au fost analizate in articolul Text si font-uri.

Raster (cadru)

     Lucrul cu functiile grafice din familia “raster” implica vectorii de pixeli (bitmap sau image).

Metoda DrawImage

     Metoda deseneaza un obiect bitmap pe display sau pe suprafata unui alt biptmap.

Metoda Clear

     Accepta ca valoare o culoare pe care o foloseste pentru a desena intreaga suprafata a ferestrei sau a obiectului bitmap.

Exemplu:

//cream un obiect bipmap
            Bitmap bitmap = new Bitmap(100, 100);
            //cream un obiect graohics pentru bitmap
            Graphics gbmp = Graphics.FromImage(bitmap);

            //stergem fundalul bitmap-ului
            gbmp.Clear(Color.LightGreen);
            

            //cream un obiect Graphics pentru forma
            Graphics graphics = this.CreateGraphics();
            //copiem imaginea bitmap la o anumita locatie
            graphics.DrawImage(bitmap,100,100);

            //eliberam din memorie obiectele dupa folosire
            graphics.Dispose();
            gbmp.Dispose();
            bitmap.Dispose();

Metoda DrawIcon

     Metoda va desena un obiect icon intr-o locatie specificata. Avantajul unui astfel de obiect este ca permite ca portiuni din spatele icon sa fie afisate. Deazavntaj: sunt mai mari si mai greu de desenat.

Metoda FillRegion 

Exemplu:

     Deseneaza o regiune (un set de dreptunghiuri unite de operatii de tip boolean) cu o culoare care va fi specificata in obiectul brush.

            Brush b = new SolidBrush(Color.Red);
            //creeaza dreptunghiul pentru regiune
            Rectangle r1 = new Rectangle(0, 0, 10, 10);
           //creeaza regiunea pentru umplere
            Region region = new Region(r1);
            e.Graphics.FillRegion(b,region);

Vector

     Functiile grafice de acest tip suporta desenerea figurilor geometrice : elipse, dreptunghiuiri, poligoane. Toate acestea se vor construi folosind un obiect de tip pen pentru desenarea conturului si un obiect de tip brush pentru desenarea interiorului figurii geometrice.

     Metodele a caror nume incep cu Draw folosesc un obiect de tip Pen pentru a desena conturul, fara afectarea spatiului din interior. Exista patru metode de  tip “line-drawing” (DrawRectangle, DrawPolygon, DrawEllipse, DrawLine).

     O modalitate de apelarea a obiectului  Graphics este argumentul de tip PaintEventArgs al metodei Paint apelate la evenimentul Paint al formei.

Exemplu:

  //metoda Paint 
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            //creem un obiect pentru desenarea conturului formei,culoare prin specificarea numelui
            Pen p = new Pen(Color.Red);
           //apelam metoda cu ajutorul parametrului de tip PaintEventArgs
            e.Graphics.DrawRectangle(p,new Rectangle(0,0,100,100));
        
        }

     In acelasi mod se pot apela alte metode pentru desenare:

Exemplu DrawPolygon:

            //specificam culoarea dand valorile RGB
            Pen p3 = new Pen(Color.FromArgb(0, 34, 102));

            //punctele poligonului
            Point point1 = new Point(50, 50);
            Point point2 = new Point(100, 25);
            Point point3 = new Point(200, 5);
            Point point4 = new Point(250, 50);
            Point point5 = new Point(300, 100);
            Point point6 = new Point(350, 200);
            Point point7 = new Point(250, 250);

            //vector de tip Point, care va fi transmis metodei DrawPolygon
            Point[] poligon = new[] { point1, point2, point3, point4, point5, point6, point7 };
            //apelam metode pentru desenarea unui poligon
            e.Graphics.DrawPolygon(p3, poligon);

Exemplu DrawLine:

//specificam una din culorile system
            Pen p2 = new Pen(SystemColors.InactiveBorder);
            //deseneaza o linie prin conectarea a doua puncte
            e.Graphics.DrawLine(p2,105,105,130,130);

Exemplu DrawEllipse:

            Pen p4 = new Pen(Color.ForestGreen);
            e.Graphics.DrawEllipse(p4, 23, 30, 40, 40);

     Metodele a caror nume incepe cu Fill, folosesc un obiect de tip Brush pentru desenarea spatiului din interiorul conturului. Exista 3 astfel de metode: FillRectangle, FillPolygon, FillEllipse. Acestea sunt metode complementare celor prezentate mai sus.

     Daca vom pastra coordonatele punctelor din exemplele de mai sus, desenele se vor suprapune, in asa fel incat va rezulta, de exemplu un dreptunghi avand culoarea conturului data de obiectul de tip Pen si culoarea din interior data de obiectul de tip Brush.

Exemplu metoda FillRectangle:

            //creem un obiect pentru desenearea spatiului interior
            Brush b = new SolidBrush(Color.BlueViolet);
            e.Graphics.FillRectangle(b, new Rectangle(0, 0, 100, 100));

Exemplu metoda FillPolygon:

  Brush b3 = new SolidBrush(Color.FromArgb(125, 125, 125));
  e.Graphics.FillPolygon(b3,poligon);

Exemplu metoda FillEllipse:

   Brush b4 = new SolidBrush(Color.FloralWhite);
   e.Graphics.FillEllipse(b4,23,30,40,40);
         

     In .Net CF un singur spatiu de nume este destinat claselor grafice si anume, System.Drawing.

     .Net Framework aloca 5 spatii de nume pentru lucrul cu grafica, (244 metode si 18 proprietati) in timp ce .Net Compact Framework contine doar elemente primare pentru desenare (26 de metode si 2 proprietati).

     Pentru imbunatatirea vitezei de lucru se recomanda crearea doar unui singur obiect Graphics sau folosirea unui obiect de tip PaintEventArgs. De asemenea, incercati sa redesenati doar partile care au fost schimbate si nu desenati din nou toata imaginea.

     Urmatoarele articole vor fi dedicate celor mai folosite controale din .Net Compact Framework.

Category: Uncategorized

    Pingback/Trackback

    Tweets that mention Lucrul cu Graphics in .Net Compact Framework - -- Topsy.com

Your email address will not be published. Required fields are marked *

*