استفاده از فونت در سی شارپ
نحوه تغییر و دستکاری فونت یک کنترل موجود در یک برنامه ویندوزی به چه صورتی است؟ کلاس System.Drawing.Font به شما اجازه میدهد تا فونتهای دلخواه خود را ساخته و به خاصیت Font کنترلهای مختلف نسبت دهید. در زیر لیستی از خاصیتهای مفید این کلاس را مشاهده میکنید.
خاصیت | توضیح | |
Bold | مشخص میکند که آیا فونت bold است یا نه | |
FontFamily | خانواده فونتی که فونت از آن استفاده میکند را مشخص میکند. | |
Height | فاصله بین خطوط فونت را تعیین میکند. | |
Italic | تعیین میکند که آیا فونت مورب (italic) است یا نه؟ | |
Name | نام فونت را تعیین میکند. | |
Size | سایز فونت را بر اساس واحد انتخاب شده تعیین میکند. | |
Strikeout | تعیین میکند که آیا فونت دارای یک خط افقی در داخل خود باشد یا نه؟ | |
Style | قالب فونت را مشخص میکند. | |
Underline | تعیین میکند که آیا فونت، زیر خط داشته باشد یا نه؟ | |
Unit | واحد اندازه فونت را مشخص میکند. |
ایجاد شیء فونت
در کد زیر سازنده کلاس فونت فراخوانی و از فونت Times New Roman با اندازه 12 استفاده شده است.
Font myFont = new Font("Times New Roman", 12);
font family نوع فونت را مشخص میکند. برخی از فونتهای معمول و مشهور عبارتند از Arial ،Verdana ،Courier New ،Times New Roman و Sans Serif. به این نکته توجه کنید که قبل از استفاده از یک فونت باید از وجود آن در سیستمتان مطمئن شوید. فونتهای ذکر شده، در حالت پیشفرض در ویندوز وجود دارند. از کلاس System.Drawing.FontFamily برای ایجاد یک شئ FontFamily که از یک فونت با نام مشخص استفاده میکند، استفاده میشود. میتوانید از یکی از سربارگذاری های کلاس Font استفاده کنید و یک شئ FontFamily را به آن ارسال نمایید:
FontFamily family = new FontFamily("Arial"); Font myFont = new Font(family, 12);
استفاده از شیء FontFamily به شما اجازه میدهد که از برخی از متدهای آن مانند GetCellAscent() ،GetCellDescent() ،GetEmHeight() و GetLineSpacing() استفاده کنید. سربارگذاری دیگر به شما اجازه میدهد که قالب فونت را تعیین کنید. برای این کار از مقادیر نوع شمارشی System.Drawing.FontStyle استفاده میکنیم. در مثال زیر یک فونت ضخیم (bold) ایجاد کردهایم.
Font myFont = new Font("Verdana", 14, FontStyle.Bold);
یکی دیگر از سازندههای مفید کلاس Font به شما اجازه میدهد که از خواص یک فونت استفاده کرده و قالب جدیدی به آن اعمال نمایید. فرض کنید که یک برچسب (label) دارید و میخواهید آن را به صورت italic (حروف کج) در آورید. برای این کار میتوان از مقدار FontStyle.Italic به صورت زیر استفاده کرد :
Font myFont = new Font(label1.Font, FontStyle.Italic);
همچنین میتوان واحد اندازه گیری سایز فونت را مشخص کرد. به عنوان مثال اندازه 12 میتواند به صورت اینچ، پیکسل یا میلی متر باشد. برای تعیین واحد اندازه گیری میتوان از نوع شمارشی System.Drawing.GraphicsUnit استفاده کرد. کد زیر یک فونت با اندازه 12 پیکسل ایجاد میکند :
Font myFont = new Font("Times New Roman", 12, GraphicsUnit.Pixel);
خانواده فونت (font family)
بسته به اینکه چند نوع فونت در سیستم شما نصب است میتوان از فونتهای مختلفی استفاده کرد. برای مشاهده فونتهای نصب شده در ویندوز 7 به مسیر Start > Control Panel > Appearance and Personalization > Fonts بروید. شکل زیر چندین خانواده فونت را نمایش میدهد.
شما میتوانید نام یک خانواده فونت را به عنوان رشته ارسال و یا یک شئ FontFamily را هنگام تعریف یک شئ فونت ایجاد کنید.
Font myFont = new Font("Consolas", 14); //or Font myFont = new Font(new FontFamily("Consolas"), 14);
اندازه فونت
هنگامی که با سایز فونت سرکار دارید باید به دو چیز توجه کنید: اندازه واقعی و واحد مورد استفاده. میتوانید از خاصیت Size اندازه فونت را مشخص کنید :
myFont.Size = 12;
با استفاده از مقادیر شمارشی System.Drawing.GraphicsUnit که برخی از آنها در جدول زیر آمده است هم میتوان واحد اندازه گیری اندازه فونت را مشخص کرد:
مقدار شمارشی | توضیح | |
Pixel | مشخص میکند که واحد اندازه گیری پیکسل است. | |
Point | مشخص میکند که واحد اندازه گیری نقطه چاپگر است. | |
Inch | مشخص میکند که واحد اندازه گیری اینچ است. | |
Millimeter | مشخص میکند که واحد اندازه گیری میلی متر است. |
از خاصیت Unit کلاس فونت هم میتوان برای تعیین واحد اندازه فونت استفاده کرد :
myFont.Unit = GraphicsUnit.Pixel;
قالب فونت
میتوان چندین قالب مختلف را به فونت اعمال کرد. کلاس Font، دارای چندین خاصیت است که مقدار بولی قبول میکنند. به عنوان مثال میتوان از خواص Bold یا italic استفاده کرد و مقدار true را به آنها اختصاص داد تا فونت به صورت ضخیم و یا حروف کج در آید.
myFont.Bold = true; myFont.Italicized = true;
کد بالا فونت را همزمان به صورت ضخیم و حروف کج نمایش میدهد. از خواص Strikeout و Underline هم میتوان به صورت بالا استفاده نمود. همچنین میتوان از مقادیر نوع شمارشی System.Drawing.FontStyles برای قالب دهی به فونت استفاده کرد :
مقدار شمارشی | توضیح | |
Regular | بدون قالب | |
Bold | متن را صورت ضخیم در میآورد. | |
Italic | متن را به صورت حروف کج نمایش میدهد. | |
Underline | یک خط به زیر متن میکشد. | |
Strikeout | یک خط را بر روی متن میکشد. |
شکل زیر نتیجه اعمال هر یک از مقادیر بالا بر روی متن را نشان میدهد :
با استفاده از سازنده کلاس Font هم میتوان یک قالب به فونت اعمال کرد:
myFont = new Font(myFont, FontStyle.Bold);
از عملگر بیتی OR هم برای اعمال چندین قالب به فونت میتوان استفاده کرد :
myFont = new Font(myFont, FontStyle.Bold | FontStyle.Italic);
کد بالا فونت را هم به صورت ضخیم و هم حروف کج در میآورد. اگر بخواهید یک قالب خاص را از فونت حذف کنید میتوانید از عملگر بیتی XOR استفاده کنید :
myFont = new Font(myFont, myFont.Style ^ FontStyle.Bold);
عملگر XOR به صورت دوگانه عمل میکند، بدین معنی که اگر فونت دارای قالب خاصی باشد آنرا حذف و اگر قالب به فونت اعمال نشده باشد آنرا به فونت اختصاص میدهد. عملگر بیتی AND نیز چک میکند که ایا قالب مشخصی به فونت اعمال شده است یا نه؟.
if ( (myFont.Style & FontStyle.Bold) == FontStyle.Bold) MessageBox.Show("The font is bold.");
به این نکته توجه کنید که عبارت در داخل پرانتز اعمال شده است چون عملگر == دارای حق تقدم بالاتری میباشد.