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

Text si font-uri in CE

     In acest articol vom prezenta importanta unui mediu de dezvoltare grafic, ce poate permite dezvoltatorului sa foloseasca un numar mare de instrumente pentru crearea efectelor grafice, si implicit, a interfetei utilizatorului.

     Textul propriu-zis este un obiect grafic. Desenarea lui intr-un mediu grafic este un mic mai dificila decat simpla afisare intr-un mediu non-grafic (consola).

     .Net Compact Framework contine multe functionalitati pentru desenarea textului, din care vom folosi (DrawString), crearea unui font (FontFamily), calcularea marimii textului (MeasureString), alinierea textului (StringFormat).

Metoda DrawString

     Metoda DrawString este membru al clasei Graphics, (System.Drawing.Graphics) si este cea care se ocupa in totalitate in cadrul .Net Compact Framework de desenarea textului. Are mai multe supraincarcari, descrise pe msdn.

Exemplu: Vom aplica  metoda DrawString textului introdus intr-un simplu textbox. Codul va fi apelat ori de cate ori va fi introdus un caracter in caseta text.

 //deseneaza caracterul introdus in textbox
        private void textBox1_TextChanged(object sender, EventArgs e)
        {

            //coordonate pentru locatia textului
            Single x = 10;
            Single y = 10;

            //cream un font nou care va fi folosit pentru desenarea caracterelor
            Font fontNou = new Font(FontFamily.GenericSansSerif, 20, FontStyle.Bold);

            //avem nevoie de brush pentru a putea desena
            Brush br = new SolidBrush(SystemColors.WindowText);


            Graphics g = this.CreateGraphics();
            
            //apelam functia drawstring 
            g.DrawString(textBox1.Text, fontNou, br, x, y);
       }

Metoda MeasureString

     Metoda Measure String returneaza latimea si inaltimea unui text printr-o structura SizeF (valori floating), text ce are un anumit font.

Exemplu:

     Aplicam functia textului introdus in textbox, care va avea font-ul implicit al sistemului:

Graphics g = this.CreateGraphics();
            
//font implicit al sistemului
SizeF sizeF = g.MeasureString(textBox1.Text, Font);
//accesam proprietatile de latime si inaltime
MessageBox.Show(sizeF.Width + " " + sizeF.Height);
           

Aliniere textului

     .Net Compact Framework suporta 4 supraincarcari pentru metoda DrawString. In primul exemplu, am folosit pe cea care foloseste perechea de coordonate x si y pentru pozitionarea textului. Astfel, acesta va fi desenat  dedesubtul si in dreapta punctului. Aceasta aliniere nu este intotdeauna convenabila.

     Exista 9 posibilitati de aliniere a textului:  (near, center, far), atat orizontal, cat si vertical. Alinierea implicita este near, near.

Exemplu pentru folosirea proprietatii de StringAlignment:

 //cream un obiect stringFormat pentru detaliile desenarii textului
            StringFormat sf = new StringFormat();
            //stabilim alinierea textului
            sf.Alignment = StringAlignment.Far;
            sf.LineAlignment = StringAlignment.Far;

            //cream un obiect de tip Brush
            Brush br = new SolidBrush(SystemColors.WindowText);

            Graphics g = this.CreateGraphics();
            //desenam textul
            g.DrawString(textBox1.Text,Font,br,50,50,sf);
             

Font

     Windows CE suporta doua tipuri de font: bitmap si TrueType (OperType). Depinde de producatorul platformei care font va fi prezent, pentru ca ele nu pot rula impreuna.

     Windows Mobile Professional suporta fontul TrueType, al carui avantaj este scalabilitatea fontului (8-72), rotirea textului si contine Tahoma, Courier New si Bookdings.

     Windows Mobile Standard suporta de asemenea TrueType, dar are un singur font implicit, Segoe Condensed.

     Atunci cand folosim un control ii putem stabili fontul la “design time” in fereastra Properties, optiunea Font. Cu toate acestea, “designer-ul” nu cunoaste ce fonturi sunt instalate pe dispozitivul pe care vom instala apliacatie, asa ca vom avea doar doua optiuni. De exemplu, SDK-ul Windows Mobile Standard pune la dispozitie Nina (numele pentru Smartphone-urile mai vechi) si Segoe Condensed (pentru modelele noi).

     Putem instala pe memoria dispozitivului Windows Mobile mai multe fonturi (copiem fisierele fonturilor in directorul Windows/Fonts ).

Observatie: Controalele implicite din .Net Compact Framework, spre deosebire de cele din .Net Framework, nu suporta conceptul de “ambient”. In programarea Windows Forms pentru desktop, controalele foloseau proprietatile “ambient” (BackColor, Cursor, Font, ForeColor) ale controlului parinte in cazul in care o proprietate nu era specificata explicit pentru un control. In .Net Compact Framework, spre exemplu, daca vrem sa schimbam fontul pentru parinte, acesta nu se va aplica si grupului de controale.

Exemplu: Pentru a afisa toate fonturile disponibile putem scrie urmatoare metoda:

        private List<FontFamily> ColectieFont()
        {

            //cream o lista de tip FontFamily
            var list = new List<FontFamily>();

            //instantiem un obiect al clasei care va furniza informatii despre fonturile instalate
            InstalledFontCollection colectieFont = new InstalledFontCollection();


            //fiecare familie de fonturi gasita va fi adaugata in lista
            foreach (FontFamily ff in colectieFont.Families)
            {
              list.Add(ff);
            }
            //returneaza lista 
            return list;
        }

     Controlul asupra desenerii textului este realizat prin crearea unui font (marime, nume, stil), pozitionarea, orientare, combinarea cu imagini. Toate acestea pot produce efecte variate.

     In articolul urmator, vom explica ce inseamna Graphics in .Net Compact Framework.

Category: Uncategorized

    Pingback/Trackback

    Tweets that mention Text si font-uri in CE | by zeltera -- Topsy.com

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

*