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.
Pingback/Trackback
Tweets that mention Text si font-uri in CE | by zeltera -- Topsy.com