logo

Funksiya Grafigini hosil qilish

Yuklangan vaqt:

19.11.2024

Ko'chirishlar soni:

0

Hajmi:

245.841796875 KB
Mavzu:  Funksiya Grafigini hosil qilish 
                                          Reja:
1 Visual studioga dasturi maqsad va vazifalari
2 Formada Grafiklar chizish
3 Xulosa
1.  Dasturlash muhitining asosiy komponentasi – Form sinfini ko’rib chiqamiz. Bundan keyin biz
ilovalar   elementlarini   formalar   deb   ataymiz.   Bu   konteyner,   keyinchalik   yaratilgan   barcha
ilovalarda   hozirgi   ilovada   mavjud   bo’lgan   barcha   funksiyani   joylashtiradi.   Tabiiyki,   ushbu
formalar bilan ishlash uchun biror instrument kerakdir. Bunday instrument muhitda mavjud va u
formalar dizayneri deb nomlanadi. VC++ muhitida yuqoridagi mavzulardan foydalanib, muhitni
yuklaganimizda bo’sh forma hosil bo’ladi. Ekranda joylashgan   Панель   элементов   qismida esa
Formalar  dizayneri  joyladi.   Dizayner  bizga  formalar  bilan   ishlashda:  komponentalarni  formaga
joylashtirish,   ularni   ko’chirish,   o’chirish,   belgilash,   bir   joydan   ikkinchi   joyga   o’tkazish,
formalarni yopish kabi imkoniyatlarni taqdim etadi. Komponentalar  Панель   элементов  qismida
joylashgan   bo’lib,  ular   turli   xil   turkumlar   ajratilgan.   Boshqa  turkumdagi  komponentani   ko’rish
uchun sichqoncha tugmasini o’ng tarafga qaragan uchburchak belgisiga bir marta bosish kerak.
  Bu   komponentalar   eng   ko’p   ishlatiladigan   komponentlar   hisoblanib,   bularning   ro’yxatiga▰
yana   boshqa   komponentalarni   qo’shish   mumkin.   Buning   uchun   Сервис   menyusida   joylashgan
Выбрать   элементы   панели   элементов   punktiga o’tish kerak. Bu oynada to’liq komponentalar
ro’yxati   keltiraladi,   agar   siz   komponenta   to’g’risiga   bayroqcha   belgisini   qo’ysangiz,   formalar
dizayneriga   yana   bir   komponeneta   qo’shiladi,   olib   tashlasangiz,   demak,   bu   komponenta
yo’qoladi. Aytib o’tilganidek, muhit bizga dastlab minimum miqdorda komponentalarni taqdim
qiladi.  Biz o’zimizning  xohisihimizga  ko’ra ularning sonini oshirishimiz  mumkin  ekan. Barcha
yechimlar   ( Решения   –   berilgan   topshiriqqa   tuziladigan   barcha   dasturlar   to’plami)   Файл   →
Закрыть   решения   buyrulari   yordamida   yopiladi,   ochish   uchun   esa   Последные   проекты   и
решения   punkti   tanlanadi.   Boshqa   barcha   loyihalar   Файл   →   Открыть   buyruqlari   yordamida
ochiladi.   Bunda   muloqot   oynasi   paydo   bo’ladi   va   bu   oynadan   loyihangiz   joylashgan   papkani
qidirib   topib,   piktogrammali   faylni   ochish   kerak.   Butunlay   loyihani   yopmoqchi   bo’lsak,   ushbu
menyudaga  Закрыть  buyrug’ini ishlatishimiz kerak. Formaga chaqiruv joriy qilish ikki xil rejimi
mavjud: modal va modal bo’lmagan (oddiy) holat. Chaqiruvga joriy qilish ikkita komanda orqali
amalga oshiriladi. Modal rejimida – ShowDialog(), oddiy rejimda – Show() forma metodi orqali.
AutoScroll-formaga   avtoskrolling,   ya’ni   aylantiruvchi   tasma   qo’yishga   imkoniyat   beradi.   Agar
ilovani   o’lchamlarini   kichiklashtirsak,   u   to’liq   holda   emas,   balki   bir   qismi   ko’rinadi.   Qolgan
qismini   esa   mana   shu   avtoskrolling   bilan   pastga   yoki   tepaga   o’tkazib   ko’rish   mumkin. AutoScrollMargin   –   Bu   ham   yuqoridagi   xossa   bajargan   vazifani   bajaradi,   faqat   uning
o’lchamlarini belgilash orqali. BackColor – Formaga fon berish. Masalan, ko’k rangni tanlasak,
formaning barcha bo’sh maydoni ko’k rangga kiradi.  2.    Biz quyida formada grafiklar chizish bilan tanishamiz. Misol sifatida formada sin(x) va cos(x)
funksiyalarini qanday tasvirlanishini ko’rib chiqaylik. Dastur kodini tahlil qilaylik. Fayl nomini 
Grafik deb nomlaymiz. Grafik.h (Dizayn rejimida) faylida 
Kod qismi
#pragma   once
namespace  loyiha {
using   namespace  System;
using   namespace  System::ComponentModel;
using   namespace  System::Collections;
using   namespace  System::Windows::Forms;
using   namespace  System::Data;
using   namespace  System::Drawing;
///  <summary>
/// Сводка для Form1
///
/// Внимание! При изменении имени этого класса необходимо также изменить
///          свойство имени файла ресурсов ("Resource File Name") для средства 
компиляции управляемого ресурса,
///          связанного со всеми файлами с расширением .resx, от которых зависит 
данный класс. В противном случае, ///          конструкторы не смогут правильно работать с локализованными
///          ресурсами, сопоставленными данной форме.
///  </summary>
public   ref   class  Form1 :  public  System::Windows::Forms::Form
{
public :
Form1( void )
{
InitializeComponent();
//
//TODO:  добавьте   код   конструктора
//
}
protected :
///  <summary>
/// Освободить все используемые ресурсы.
///  </summary>
~Form1()
{
if  (components)
{
delete  components;
}
}
private : System::Windows::Forms::TextBox^  textBox1;
private : System::Windows::Forms::Button^  button1;
private : System::Windows::Forms::Button^  button2;
private : System::Windows::Forms::Button^  button3;
protected :  protected : 
private :
///  <summary>
///  Требуется   переменная   конструктора .
///  </summary>
System::ComponentModel::Container ^components;
#pragma   region  Windows Form Designer generated code
///  <summary>
/// Обязательный метод для поддержки конструктора - не изменяйте
/// содержимое данного метода при помощи редактора кода.
///  </summary>
void  InitializeComponent( void )
{
System::ComponentModel::ComponentResourceManager^  resources = 
( gcnew  System::ComponentModel::ComponentResourceManager(Form1:: typeid ));
this ->textBox1 = ( gcnew  System::Windows::Forms::TextBox());
this ->button1 = ( gcnew  System::Windows::Forms::Button());
this ->button2 = ( gcnew  System::Windows::Forms::Button());
this ->button3 = ( gcnew  System::Windows::Forms::Button());
this ->SuspendLayout();
// 
// textBox1
// 
this ->textBox1->Location = System::Drawing::Point(75, -1);
this ->textBox1->Name = L "textBox1" ;
this ->textBox1->Size = System::Drawing::Size(399, 20);
this ->textBox1->TabIndex = 0;
this ->textBox1->Text = L "Biz quydagi loyiha ishimizda funksiya 
grafigini chizishni o\'rganamiz. " ;
this ->textBox1->TextAlign = 
System::Windows::Forms::HorizontalAlignment::Center; this ->textBox1->TextChanged +=  gcnew  System::EventHandler( this , 
&Form1::textBox1_TextChanged);
// 
// button1
// 
this ->button1->BackColor = 
System::Drawing::SystemColors::ActiveCaptionText;
this ->button1->ForeColor = 
System::Drawing::SystemColors::ButtonFace;
this ->button1->Location = System::Drawing::Point(89, 346);
this ->button1->Name = L "button1" ;
this ->button1->Size = System::Drawing::Size(151, 58);
this ->button1->TabIndex = 1;
this ->button1->Text = L "Sin X" ;
this ->button1->UseVisualStyleBackColor =  false ;
this ->button1->Click +=  gcnew  System::EventHandler( this , 
&Form1::button1_Click);
// 
// button2
// 
this ->button2->BackColor = 
System::Drawing::SystemColors::ActiveCaptionText;
this ->button2->ForeColor = 
System::Drawing::SystemColors::ButtonFace;
this ->button2->Location = System::Drawing::Point(343, 346);
this ->button2->Name = L "button2" ;
this ->button2->Size = System::Drawing::Size(131, 58);
this ->button2->TabIndex = 2;
this ->button2->Text = L "Cos X" ;
this ->button2->UseVisualStyleBackColor =  false ;
this ->button2->Click +=  gcnew  System::EventHandler( this , 
&Form1::button2_Click);
// 
// button3 // 
this ->button3->BackColor = 
System::Drawing::SystemColors::ActiveCaptionText;
this ->button3->ForeColor = 
System::Drawing::SystemColors::ButtonFace;
this ->button3->Location = System::Drawing::Point(571, 346);
this ->button3->Name = L "button3" ;
this ->button3->Size = System::Drawing::Size(116, 58);
this ->button3->TabIndex = 3;
this ->button3->Text = L "Chiqish " ;
this ->button3->UseVisualStyleBackColor =  false ;
this ->button3->Click +=  gcnew  System::EventHandler( this , 
&Form1::button3_Click);
// 
// Form1
// 
this ->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this ->AutoScaleMode = 
System::Windows::Forms::AutoScaleMode::Font;
this ->BackgroundImage = (cli:: safe_cast <System::Drawing::Image^  
>(resources->GetObject(L "$this.BackgroundImage" )));
this ->BackgroundImageLayout = 
System::Windows::Forms::ImageLayout::Stretch;
this ->ClientSize = System::Drawing::Size(770, 400);
this ->Controls->Add( this ->button3);
this ->Controls->Add( this ->button2);
this ->Controls->Add( this ->button1);
this ->Controls->Add( this ->textBox1);
this ->FormBorderStyle = 
System::Windows::Forms::FormBorderStyle::None;
this ->Name = L "Form1" ;
this ->StartPosition = 
System::Windows::Forms::FormStartPosition::WindowsDefaultBounds;
this ->Text = L "Form1" ; this ->TopMost =  true ;
this ->ResumeLayout( false );
this ->PerformLayout();
}
#pragma   endregion
//sin(x) funksiyasini elon qildim
double  fs( double  x)
{
return (Math::Floor(Math::Sin(x)));
}
//cos(x) fuksiyasini elon qildim
double  ft( double  x)
{
return (Math::Floor(Math::Cos(x)));
}
private : System::Void textBox1_TextChanged(System::Object^  sender, 
System::EventArgs^  e) {
 }
private : System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
Color ^col =  gcnew  Color();
Pen ^pen =  gcnew  Pen(col->Red);
//grafik obyekt yaratish uchun, uning manzilini oldim
//CreateGraphics() metodini ishga tushirsh
Graphics ^im =  this ->CreateGraphics();
//im->Drawline(pen,20,10,300,100);
/* to’g’ri chiziqning ikki nuqtasi (x1, y1) va (x2, y2) lar chizil
adi */
//Funksiya grafigini kiritish Drawline() dan foydalaniladi im->Clear(col->White);
/*keyingi grafik chizilganda bu chizmani oq rangga bo’yab qo’yad
i*/
float  x1, y1, x2, y2;
x1 = 0; y1 = 0;
//f(x) funksiyaning boshlang’ich koordinatalari
//y=f(x) funksiyaning x1, x2 nuqtadagi qiymatlarini hisobla
x2 = x1;
while  (x2 <  this ->Width && y2 <  this ->Height)
{
x2 += 5;  // X o’qi bo’ylab keyingi nuqta pikseli
y2 = fs(x2) * 100;
/* bu funksiya boshlang’ich modulni aniqlaydi (100 - amplit
udani ifodalaydi) */
if  (y2 < 0){
y2 *= -1;}  //Agar manfiy ifoda kiritilsa;
im->DrawLine(pen, x1, y1, x2, y2);  //
x1 = x2;
y1 = y2;
continue ;
}
}
private : System::Void button2_Click(System::Object^ sender,System::EventArgs^ e)
{
Color ^col =  gcnew  Color();
Pen ^pen =  gcnew  Pen(col->Red);
//grafik obyekt yaratish uchun, uning manzilini olish
//CreateGraphics() metodini ishga yurgizish
Graphics ^im =  this ->CreateGraphics();
//im->Drawline(pen,20,10,300,100);
/* to’g’ri chiziqning ikki nuqtasi (x1, y1) va (x2, y2) lar chizil adi */
//Funksiya grafigini kiritish Drawline() dan foydalaniladi
im->Clear(col->White);  /*keyingi grafik chizilganda bu chizmani oq rangga bo’y
ab qo’yadi*/
float  x1, y1, x2, y2;
x1 = 0; y1 = 0;
//f(x) funksiyaning boshlang’ich koordinatalari
//y=f(x) funksiyaning x1, x2 nuqtadagi qiymatlarini hisoblash
x2 = x1;
while  (x2 <  this ->Width && y2 <  this ->Height)
{
x2 += 10;  // X o’qi bo’ylab keyingi nuqta pikseli
y2 = ft(x2) * 50;
/* bu funksiya boshlang’ich modulni aniqlaydi (50 - amplitu
dani ifodalaydi) */
if  (y2 < 0){
y2 *= -1;}  //Agar manfiy ifoda kiritilsa;
im->DrawLine(pen, x1, y1, x2, y2);  //
x1 = x2;
y1 = y2;
continue ;
}
}
private : System::Void button3_Click(System::Object^ sender, System::EventArgs^ e)
{
this ->Close();  //ilovani yopish
}
};
} Istalgan funksiyaning grafigini kiritish uchun Graphics sinfiga tegishli DrawLine() metodini 
qo’llaymiz. Ammo bu sinfning a’zosidan (bu yerda DrawLine()) to’g’ridan-to’g’ri foydalanib 
bo’lmaydi. Bu grafik obyektning manzilini formaning CreateGraphics() deb ataluvchi maxsus 
metodi orqali olish mumkin. Quyidagi operator yozilgan bo’lsa: Graphics ^im = this-
>CreateGraphics(); kutgan natijani olishimiz mumkin. (Metod grafik obyektning manzilini 
shakllantiradi) Endi Graphics tipi orqali Graphics sinfining a’zolari haqida ma’lumot olishimiz 
mumkin. (DrawLine() metodi – ikki nuqtadan o’tuvchi to’g’ri chiziqni chizadi.) Chizishlar 
sinfda joylashgan maxsus mexanizm Pen (pero yoki peroli ruchka) yordami bilan amalga 
oshiriladi. Bu mexanizmni to’ldirish uchun, bu sinfning manzilini kiritib, keyin u orqali sinfning 
a’zosini aniqlash kerak. Sinf manzilini shakllantirish o’zi bilan emas, balki har qaysi sinfning 
maxsus dastur-konsktruktori gcnew utilitasini ishga tushirish yordami bilan amalga oshiriladi, 
sinfning nusxasi yaratilgan utilita xotirada joylashtirilib, ishni boshqarishi mumkin. Pen sinfi 
uchun Konstruktor birgina parametrga (rang) ega bo’lib, bu chiziqning rangini aniqlaydi. 
Shunday ekan, Pen sinfining konstruktori bilan ishlashdan oldin, avval rangni aniqlab olish 
kerak, undan so’ng esa bu konstruktorning parametr sifatlarini ishga yurgizish mumkin. Ranglar 
maxsus Color sinfida joylashtirilgan. Bu sinfdagi kerakli rangni qo’shish uchun, ushbu sinf 
manzilini shakllantirish kerak, keyin esa u orqali kerakli rangni tanlash kifoya. Masalan: Color 
^col = gcnew Color(); gcnew utilitasi Color sinf konstruktorini ishga yurgizadi, col 
o’zgruvchisiga uning nusxasi manzilini joylashtiradi va xotiraga sinf nusxasini shakllantiradi. 
Keyin biz istalgan rangni quyidagi murojaat orqali qo’shishimiz mumkin bo’ladi: “col->”; 
Yuqoriga kodni kiritishimiz bilanoq bizda muhit qo’llabquvvatlashi mumkin bo’lgan ranglar 
to’plami Подсказчтк orqali beriladi. Ulardan birini tanlab tugmasini bosamiz. Aniqlangan rang 
uchun pero konstruktorini joriy qilish mumkin: Pen ^pen = gcnew Pen(col->Red); Graphics sinfi
System.Drawing nomlar fazosida joylashgan. Bundan tashqari ushbu nomlar fazosida quyidagi 
sinflar mavjud
Natija                                             Xulosa
Bizga   berilgan   vazifa   asosida   mustaqil   ravishda   visual   studiyo   da   ishlash   va   Funksiya
Grafiklarini hosil qilishni o’rgandik .Berilgan vazifa bajarildi.
                        Foydalanilgan adabiyotlar
1.                         Л.   М.   Гольденберг,   В.   А.   Малев.   –   Цифровые   устройства   и   микропроцессорные
системы. Москва «Радио и связь» 1992.
2.                         И. Л. Прагер. – Основы вычислительной техники. – Москва Высшая школа 1973.
3.                         Л.   И.   Шеголева,   А.   Ф.   Давыдов.   –   Основы   вычислительной   техники   и
программирования.   Ленинград Энергоиздат Ленинградское отделение 1981.
4.                         И.   А.   Орлов,   В.   Ф.   Корнюшко.   –   Основы   вычислетельной   техники   и   организация
вычислительных работ. – Москва Энергоатомиздат 1984.
5.                         П.   Наслэн.   –   Основы   цифровой   вычислительной   техники.   –   Государственное
Энергетическое издательство, Москва 1962.
6.                         Н. П. Сергеев, Н. П. Вашкевич. – Основы вычислительной техники. – Москва «Высшая
школа» 1988.  
7.                         А . Beletskiy. Avtorlik materiallari va o‘quv-metodik qo‘llanmalar.
8.                         А.   Beletskiy   “Модернизация и ремонт ПК ”.
9.                         С. К. Ганиев. Электрон хисоблаш машиналари ва системалари. – Т «Укитувчи» 1990.
10.                 Аmaliy   matematika,   dasturlash   va   kompyuterning   dasturiy   ta’minoti:   Оliy   o’quv   yurtlari
uchun qo’llanma/ Т.Х. Хоlmatov, N.I. taylaqov -Т.: Меhnat, 2000.-304 b.

Mavzu: Funksiya Grafigini hosil qilish Reja: 1 Visual studioga dasturi maqsad va vazifalari 2 Formada Grafiklar chizish 3 Xulosa 1. Dasturlash muhitining asosiy komponentasi – Form sinfini ko’rib chiqamiz. Bundan keyin biz ilovalar elementlarini formalar deb ataymiz. Bu konteyner, keyinchalik yaratilgan barcha ilovalarda hozirgi ilovada mavjud bo’lgan barcha funksiyani joylashtiradi. Tabiiyki, ushbu formalar bilan ishlash uchun biror instrument kerakdir. Bunday instrument muhitda mavjud va u formalar dizayneri deb nomlanadi. VC++ muhitida yuqoridagi mavzulardan foydalanib, muhitni yuklaganimizda bo’sh forma hosil bo’ladi. Ekranda joylashgan Панель элементов qismida esa Formalar dizayneri joyladi. Dizayner bizga formalar bilan ishlashda: komponentalarni formaga joylashtirish, ularni ko’chirish, o’chirish, belgilash, bir joydan ikkinchi joyga o’tkazish, formalarni yopish kabi imkoniyatlarni taqdim etadi. Komponentalar Панель элементов qismida joylashgan bo’lib, ular turli xil turkumlar ajratilgan. Boshqa turkumdagi komponentani ko’rish uchun sichqoncha tugmasini o’ng tarafga qaragan uchburchak belgisiga bir marta bosish kerak. Bu komponentalar eng ko’p ishlatiladigan komponentlar hisoblanib, bularning ro’yxatiga▰ yana boshqa komponentalarni qo’shish mumkin. Buning uchun Сервис menyusida joylashgan Выбрать элементы панели элементов punktiga o’tish kerak. Bu oynada to’liq komponentalar ro’yxati keltiraladi, agar siz komponenta to’g’risiga bayroqcha belgisini qo’ysangiz, formalar dizayneriga yana bir komponeneta qo’shiladi, olib tashlasangiz, demak, bu komponenta yo’qoladi. Aytib o’tilganidek, muhit bizga dastlab minimum miqdorda komponentalarni taqdim qiladi. Biz o’zimizning xohisihimizga ko’ra ularning sonini oshirishimiz mumkin ekan. Barcha yechimlar ( Решения – berilgan topshiriqqa tuziladigan barcha dasturlar to’plami) Файл → Закрыть решения buyrulari yordamida yopiladi, ochish uchun esa Последные проекты и решения punkti tanlanadi. Boshqa barcha loyihalar Файл → Открыть buyruqlari yordamida ochiladi. Bunda muloqot oynasi paydo bo’ladi va bu oynadan loyihangiz joylashgan papkani qidirib topib, piktogrammali faylni ochish kerak. Butunlay loyihani yopmoqchi bo’lsak, ushbu menyudaga Закрыть buyrug’ini ishlatishimiz kerak. Formaga chaqiruv joriy qilish ikki xil rejimi mavjud: modal va modal bo’lmagan (oddiy) holat. Chaqiruvga joriy qilish ikkita komanda orqali amalga oshiriladi. Modal rejimida – ShowDialog(), oddiy rejimda – Show() forma metodi orqali. AutoScroll-formaga avtoskrolling, ya’ni aylantiruvchi tasma qo’yishga imkoniyat beradi. Agar ilovani o’lchamlarini kichiklashtirsak, u to’liq holda emas, balki bir qismi ko’rinadi. Qolgan qismini esa mana shu avtoskrolling bilan pastga yoki tepaga o’tkazib ko’rish mumkin.

AutoScrollMargin – Bu ham yuqoridagi xossa bajargan vazifani bajaradi, faqat uning o’lchamlarini belgilash orqali. BackColor – Formaga fon berish. Masalan, ko’k rangni tanlasak, formaning barcha bo’sh maydoni ko’k rangga kiradi.

2. Biz quyida formada grafiklar chizish bilan tanishamiz. Misol sifatida formada sin(x) va cos(x) funksiyalarini qanday tasvirlanishini ko’rib chiqaylik. Dastur kodini tahlil qilaylik. Fayl nomini Grafik deb nomlaymiz. Grafik.h (Dizayn rejimida) faylida Kod qismi #pragma once namespace loyiha { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; /// <summary> /// Сводка для Form1 /// /// Внимание! При изменении имени этого класса необходимо также изменить /// свойство имени файла ресурсов ("Resource File Name") для средства компиляции управляемого ресурса, /// связанного со всеми файлами с расширением .resx, от которых зависит данный класс. В противном случае,

/// конструкторы не смогут правильно работать с локализованными /// ресурсами, сопоставленными данной форме. /// </summary> public ref class Form1 : public System::Windows::Forms::Form { public : Form1( void ) { InitializeComponent(); // //TODO: добавьте код конструктора // } protected : /// <summary> /// Освободить все используемые ресурсы. /// </summary> ~Form1() { if (components) { delete components; } } private : System::Windows::Forms::TextBox^ textBox1; private : System::Windows::Forms::Button^ button1; private : System::Windows::Forms::Button^ button2; private : System::Windows::Forms::Button^ button3; protected :

protected : private : /// <summary> /// Требуется переменная конструктора . /// </summary> System::ComponentModel::Container ^components; #pragma region Windows Form Designer generated code /// <summary> /// Обязательный метод для поддержки конструктора - не изменяйте /// содержимое данного метода при помощи редактора кода. /// </summary> void InitializeComponent( void ) { System::ComponentModel::ComponentResourceManager^ resources = ( gcnew System::ComponentModel::ComponentResourceManager(Form1:: typeid )); this ->textBox1 = ( gcnew System::Windows::Forms::TextBox()); this ->button1 = ( gcnew System::Windows::Forms::Button()); this ->button2 = ( gcnew System::Windows::Forms::Button()); this ->button3 = ( gcnew System::Windows::Forms::Button()); this ->SuspendLayout(); // // textBox1 // this ->textBox1->Location = System::Drawing::Point(75, -1); this ->textBox1->Name = L "textBox1" ; this ->textBox1->Size = System::Drawing::Size(399, 20); this ->textBox1->TabIndex = 0; this ->textBox1->Text = L "Biz quydagi loyiha ishimizda funksiya grafigini chizishni o\'rganamiz. " ; this ->textBox1->TextAlign = System::Windows::Forms::HorizontalAlignment::Center;