GDI+ imkoniyatlari GDI + atamasi .NET Framework muhrini ko‘rib chiqishda qisqacha keltirib o‘tilgan edi. Ushbu ma’ruza GDI + sinflari (Graphics Device Interface — grafik qurilmalar interfeysi) yordamida dasturlashga qaratilgan. Kartografik dasturlar, o‘yinlar, avto-matlashtirilgan loyihalashtirish/avtomatlashtirilgan ishlab chiqarish tizimlari (CAD/CAM), rasm chizish dasturlari, diagrammalar tuzish dasturlari va boshqa ko‘plab chizilmalar chizishda grafiklarni Windows forms ga qo‘yish kodini kiritishni talab qiladi. Dasturiy bo‘lmagan boshqaruv elementlarini yaratish, shuningdek, grafikaga ishlov berish kodini foydalanishni talab qiladi. Microsoft ning eng yangi sinf kutubxonasi grafikani qayta ishlash kodini yaratishni avvalgidek osonlashtirdi.
Grafikaga ishlov berish kodini yozish - pro grammlashning eng qiziqarli vazifalaridan biri. Kodni o‘zgartirish va ushbu o‘zgarish natijalarini ko‘rinayotgan shaklda darhol kuzatish – juda qiziqarli hisoblanadi. Ilovaning yangi usulidagi ma’lumotlarini taqdim etadigan standart bo‘lmagan grafik oynani yaratash, yoki dasturni yanada zamonaviy qiladigan va ularni qo‘llash imkoniyatlarini qo‘llab-quvvatlaydi.
Boshida ushbu bo‘limda GDI + yordamida rasm chizish metodikalari ko‘rib chiqiladi.
Rasm ko‘rsatish uchun oynalar yaratilganda, odatta, System.Windows.Forms.Form.dan kelib chiqadigan sinf e’lon qilinadi. Standart bo‘lmagan boshqaruv elementi yaratilganda, System.Windows.Forms.UserControl avlod sinf e’lon qilinadi. Har qanday vazifada ham bu OnPaint () virtual funktsiyaning qayta aniqlanishiga olib keladi .
Windows tizimi bu funktsiyani har safar oynaning istalgan qismini takrorlash talab qilinadi.
Ushbu hodisaning kelib chiqishida PaintEventArgs sinfi argument sifatida beriladi. PaintEventArgs ma’lumotning ikkita muhim elementini o‘z ichiga oladi: Graphics sinfini birinchi bo‘lib ko‘rib chiqamiz.
Graphics sinfi
Graphics sinfi GDI + ni chizish yuzasini inkapsulyatsiya qiladi. Rasmning uchta asosiy turi mavjud:
□ oynalar va boshqaruv elementlari;
Printerga jo‘natiladigan sahifalar;
□ bitlar va rasmlarni ko‘rsatish.
Graphics sinfi bu chizishning istalgan yuqori qismida chizish funktsiyalarini taqdim etadi. Boshqa imkoniyatlar qatorida undan Bez’e, ellips, rasm, chiziqlar, to‘g‘ri burchak va matnni chizishda foydalanish mumkin.
Oyna uchun Graphics ob’ektini ikki turli usul bilan olish mumkin. Birinchidan, OnPaint usulini qayta aniqlash (). Form sinfi Control sinfidan olingan OnPaint () usulini meros qilib oladi va bu usul Paint voqeasini qayta ishlovchisi hisoblanadi. Graphics ob’ektini hodisaga o‘tkaziladigan PaintEventArgs sinfidan olish mumkin:
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
g.DrawLine(Pens.Black, 0, 0, 100, 100);
}
Boshqa holatlarda Paint hodisasining generatsiyasini kutmasdan, bevosita oynada rasm chizishni amalga oshirish talab qilinishi mumkin. Ushbu holat oynada grafik ob’ektni tanlash uchun kodni yaratishda (Windows boshlovchi oynasidagi piktogrammalarni tanlash sifatida) yoki ob’ektni sichqoncha olib tashlashda yaratilishi mumkin. Graphics obʼyektini Form tomonidan Control sinfidan meros etilgan yana bir usuldir:
private void Form1_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
g.DrawRectangle(Pens.Black,0, 0,100, 100);
g.Dispose(); // bul kerek