sâmbătă, 21 mai 2016

C#23 Fonturi

Fonturi

Fonturile nu sunt controale ci obiecte ale clasei Font definită în spațiul de nume System.Drawing. Un obiect de tip Font încapsulează un format particular de caracter (exemplu: arial, TimesNewRoman, etc), stilul (bold, italic, underline, normal) și mărimea.
Toate controalele de bază au proprietatea Font, prin care se permite setarea forma literelor afisate pe control la designtime. De exemplu, setarea fontului unei etichete label la designtime se face așa:

e.Font = new Font ("Arial", 10, FontStyle.Italic);

Stilurile fonturilor

FontStyle este o enumerare (un set de constante numerice cu nume simbolice) definită în spațiul de nume System.Drawing. Membrii enumerării sunt Regular, Bold, Italic, Underline și Strikeout.

O porțiune de text poate avea un cumul  de mai multe stiluri. Acest efect se realizează simplu, prin operații de tip ȘI și SAU  logic pe biți între două sau mai multe stiluri.

Aplicația FontStyle

- deschidem o aplicație nouă, în care folosim un control RichTextBox și un control ToolStrip.
- Din ToolStrip generăm 3 butoane.
- Modificăm proprietatea DysplayStyle a butoanelor la valoarea Text, ceea ce ne permite să scriem un text pe butoane.
- Vom atribui proprietăților Text valorile e Bold, Italic și Underline.
-Facem dublu click pe RichTextBox, ceea ce va genera metoda textChanged, care rămâne vidă.
-Andocăm  richtextBoxul.
-scriem metoda click pentru fiecare din cele 3 butoane. Pentru butonul Bold:

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            Font vechiulFont, noulFont;
            //returneaza fontul folosit in textul selectat
            vechiulFont = richTextBox1.SelectionFont;
            //daca vechiul font avea stilul bold, inlatura
            if(vechiulFont.Bold)
            {
                noulFont = new Font(vechiulFont, vechiulFont.Style & ~System.Drawing.FontStyle.Bold);
            }
            else
            {
                noulFont = new Font(vechiulFont, vechiulFont.Style | System.Drawing.FontStyle.Bold);
            }
            //inseram noul font si redam focusul controlului RichTextBox
            richTextBox1.SelectionFont = noulFont;
            richTextBox1.Focus();
        }


Codul pentru butoanele italic și Underline se obține prin copiere, cu modificarea lui Bold cu italic, respectiv Underline.

Se observă folosirea operatorului ȘI logic pe biți & și a lui SAU logic pe biți |, precum și a negației pe biți ~.

namespace FontStyle
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            Font vechiulFont, noulFont;
            //returneaza fontul folosit in textul selectat
            vechiulFont = richTextBox1.SelectionFont;
            //daca vechiul font avea stilul bold, inlatura
            if(vechiulFont.Bold)
            {
                noulFont = new Font(vechiulFont, vechiulFont.Style & ~System.Drawing.FontStyle.Bold);
            }
            else
            {
                noulFont = new Font(vechiulFont, vechiulFont.Style | System.Drawing.FontStyle.Bold);
            }
            //inseram noul font si redam focusul controlului RichTextBox
            richTextBox1.SelectionFont = noulFont;
            richTextBox1.Focus();
        }

        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            Font vechiulFont, noulFont;
            //returneaza fontul folosit in textul selectat
            vechiulFont = richTextBox1.SelectionFont;
            //daca vechiul font avea stilul bold, inlatura
            if (vechiulFont.Italic)
            {
                noulFont = new Font(vechiulFont, vechiulFont.Style & ~System.Drawing.FontStyle.Italic);
            }
            else
            {
                noulFont = new Font(vechiulFont, vechiulFont.Style | System.Drawing.FontStyle.Italic);
            }
            //inseram noul font si redam focusul controlului RichTextBox
            richTextBox1.SelectionFont = noulFont;
            richTextBox1.Focus();
        }

        private void toolStripButton3_Click(object sender, EventArgs e)
        {
            Font vechiulFont, noulFont;
            //returneaza fontul folosit in textul selectat
            vechiulFont = richTextBox1.SelectionFont;
            //daca vechiul font avea stilul bold, inlatura
            if (vechiulFont.Underline)
            {
                noulFont = new Font(vechiulFont, vechiulFont.Style & ~System.Drawing.FontStyle.Underline);
            }
            else
            {
                noulFont = new Font(vechiulFont, vechiulFont.Style | System.Drawing.FontStyle.Underline);
            }
            //inseram noul font si redam focusul controlului RichTextBox
            richTextBox1.SelectionFont = noulFont;
            richTextBox1.Focus();
        }

        private void richTextBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}




Niciun comentariu:

Trimiteți un comentariu