Kirish Roʻyxatdan oʻtish

Docx

  • Referatlar
  • Diplom ishlar
  • Boshqa
    • Slaydlar
    • Referatlar
    • Kurs ishlari
    • Diplom ishlar
    • Dissertatsiyalar
    • Dars ishlanmalar
    • Infografika
    • Kitoblar
    • Testlar

Dokument ma'lumotlari

Narxi 30000UZS
Hajmi 514.9KB
Xaridlar 0
Yuklab olingan sana 04 Iyun 2025
Kengaytma docx
Bo'lim Kurs ishlari
Fan Informatika va AT

Sotuvchi

G'ayrat Ziyayev

Ro'yxatga olish sanasi 14 Fevral 2025

82 Sotish

UWP(Win Ui) da grafika va multimedialar bilan ishlash

Sotib olish
 “Algoritmik tillar va dasturlash” fanidan
“ UWP(Win Ui) da grafika va multimedialar bilan ishlash ”
mavzusidagi
KURS ISHI
Farg‘ona -2025 Mundarija
Kurs ishining dolzarbligi-Hozirgi kunda axborot texnologiyalarining jadal 
sur’atlarda rivojlanib borishi bilan bir qatorda, foydalanuvchilarning 
ilovalardan kutayotgan talablari ham oshib bormoqda. Ayniqsa, 
interfeyslarning qulayligi, vizual jozibadorligi va funksional imkoniyatlari 
foydalanuvchi tajribasini shakllantirishda muhim omil hisoblanadi. ................ 3
 C# tilining asosiy xususiyatlari ........................................................................ 8
Grafikalar bilan ishlash ........................................................................................ 11
Fluent Design System. Asosiy Komponentlar ..................................................... 12
XAML va C# yordamida WinUI ilovalarini yaratish .......................................... 13
Windows operatsion tizimining grafik tizimi ...................................................... 14
PNG (Portable Network Graphics) .................................................................. 14
GIF (Graphics Interchange Format) ................................................................ 14
Multimedia kontentni ko‘rsatishda GUI roli ................................................... 17
DirectX ning asosiy komponentlari: ................................................................ 18
                                           KIRIS H
“Dunyoda   globallashuv   va   raqobat   tobora   kuchayib   borayotgan   bugungi
vaziyatda barcha sohalarda yuksak bilimli kadrlarni tayyorlamasak, taraqqiyotdan
ortda qolib ketishimiz mumkin.”
Shavkat  Mirziyoyev
Zamonaviy   dasturlashda   foydalanuvchi   interfeysini   yaratish   muhim   o‘rinni
egallaydi.   Microsoft   tomonidan   ishlab   chiqilgan   WinUI   (Windows   UI   Library)
texnologiyasi Windows operatsion tizimida zamonaviy, yengil va funksional grafik ilovalar   yaratish   uchun   keng   imkoniyatlarni   taqdim   etadi.   Ushbu   kurs   ishida
WinUI   va   C#   dasturlash   tili   asosida   ilovalarni   ishlab   chiqish   jarayoni,   bu
texnologiyaning   afzalliklari,   arxitekturasi   va   real   hayotdagi   qo‘llanilishi   tahlil
qilinadi.
Win   UI   —   bu   Windows   platformasi   uchun   zamonaviy   foydalanuvchi
interfeysini   yaratishga   mo‘ljallangan   kutubxona.   U   grafik   va   multimedia
elementlarini   yaratishda   qulayliklar   beradi.   Kurs   ishi   Win   UI’da   grafik   va
multimedia   elementlarining   dasturlash   jarayonidagi   o‘rni   va   qo‘llanilishini
o‘rganishga qaratilgan.
WinUI (Windows UI Library)   — bu   Windows 10 va undan keyingi versiyalar
uchun   mo‘ljallangan   zamonaviy   foydalanuvchi   interfeysi   (UI)   ramkasi   bo‘lib,
XAML   (Extensible   Application   Markup   Language)   va   C#   dasturlash   tillaridan
foydalangan holda ilovalar yaratishni qo‘llab-quvvatlaydi.
WinUI Microsoft tomonidan ishlab chiqilgan va   Universal Windows Platform
(UWP)   hamda   Windows   App   SDK   asosidagi   ilovalar   uchun   asosiy   interfeys
texnologiyasi sifatida xizmat qiladi. U Windows ilovalari uchun   interaktiv, vizual
jihatdan   boy   va   yuqori   unumdorlikka   ega   foydalanuvchi   interfeyslarini   yaratish
imkonini beradi.
Grafika va multimedia  foydalanuvchi bilan ilova o‘rtasidagi  muloqotni sezilarli
darajada   osonlashtiradi ,   shu   bilan   birga   dastur   interfeysining   ko‘rkamligini   va
funksionalligini   oshiradi . Ular   ilovaning  nafaqat   tashqi   ko‘rinishini   boyitadi,  balki
axborotni intuitiv, tushunarli va esda qoladigan tarzda yetkazishga xizmat qiladi.
Grafika   va   multimedia   yordamida   yaratilgan   interfeyslar   faqat   ko‘rkam
ko‘rinishga ega emas ,  balki  funksional va foydalanuvchi ehtiyojlariga mos   bo‘ladi.
Bu   esa   foydalanuvchi   sadoqatini   oshiradi,   ilova   samaradorligini   kuchaytiradi   va
undan foydalanish qulayligini ta’minlaydi.
Kurs   ishining   dolzarbligi- Hozirgi   kunda   axborot   texnologiyalarining   jadal
sur’atlarda   rivojlanib   borishi   bilan   bir   qatorda,   foydalanuvchilarning   ilovalardan
kutayotgan   talablari   ham   oshib   bormoqda.   Ayniqsa,   interfeyslarning   qulayligi, vizual   jozibadorligi   va   funksional   imkoniyatlari   foydalanuvchi   tajribasini
shakllantirishda muhim omil hisoblanadi.
Shu   nuqtai   nazardan,   zamonaviy   UI   (User   Interface)   texnologiyalaridan
foydalanish,   xususan   WinUI   kabi   ilg‘or   platformalarda   dasturiy   ta’minot   ishlab
chiqish, foydalanuvchilarga yuqori sifatli, interaktiv va samarali ilovalarni taqdim
etish imkonini yaratadi.
Bundan   tashqari,   grafika   va   multimedia   vositalarining   dasturiy   interfeyslarda
qo‘llanilishi,   axborotning   tushunarli   va   sezgir   tarzda   taqdim   etilishiga   yordam
beradi.   Bu   esa   nafaqat   ilovaning   ko‘rkamligini,   balki   uning   funksionalligini   va
foydalanuvchi bilan samarali muloqot qilish imkoniyatini oshiradi.
Mazkur   kurs   ishida   zamonaviy   texnologiyalardan   foydalanilgan   holda,
interfeysni  ishlab chiqish  va multimedia  elementlarini  dasturga  integratsiya  qilish
orqali foydalanuvchi tajribasini oshirishga qaratilgan yondashuvlar o‘rganiladi. Bu
nafaqat   amaliy   ahamiyatga   ega,   balki   kelajakda   raqobatbardosh   dasturiy
mahsulotlar yaratishda muhim rol o‘ynaydi.
Kurs   ishining   obyekti —   Windows   UI   Library   (WinUI)   platformasi   asosida
yaratilayotgan ,   grafika   va   multimedia   elementlari   bilan   boyitilgan   foydalanuvchi
interfeysi   hisoblanadi.   WinUI   –   bu   Windows   10   va   undan   keyingi   operatsion
tizimlar   uchun   Microsoft   tomonidan   ishlab   chiqilgan   zamonaviy,   ochiq   manbali
foydalanuvchi interfeysi kutubxonasi bo‘lib ,  C#   va   XAML (Extensible Application
Markup   Language)   tillaridan   foydalanib   yuqori   darajadagi   vizual   va   interaktiv
ilovalar   yaratish imkonini beradi.
WinUI   dasturchilarga   an’anaviy   WPF  (Windows   Presentation   Foundation)  va
UWP (Universal Windows Platform) yondashuvlariga nisbatan   zamonaviy dizayn
imkoniyatlari,   yaxshilangan   ishlash   tezligi   va   operatsion   tizimdan   mustaqil
interfeys yangilanishi   kabi afzalliklarni taqdim etadi. Ayniqsa, WinUI 3 versiyasi
chiqarilgach,   u   Windows   App   SDK   bilan   birgalikda   ishlash   imkoniyatiga   ega
bo‘lib,   Win32 asosidagi desktop ilovalarda ham zamonaviy XAML interfeyslarini
joriy etishga yo‘l ochdi. Grafika   va   multimedia   bilan   ishlash   imkoniyatlari   orqali   WinUI   platformasi
quyidagi imkoniyatlarni taqdim etadi:
Image   control   va   Canvas   elementlari   yordamida   grafik   obyektlarni   dinamik
boshqarish va chizish.
MediaPlayerElement   komponenti   orqali   video   va   audio   fayllarni   ilovaga
joylash , ularni boshqarish va foydalanuvchi bilan o‘zaro ta’sirni ta’minlash.
SVG   va   vektor   grafikalarni   qo‘llash   orqali   yuqori   aniqlikdagi   tasvirlarni
interfeysda aks ettirish.
Storyboard   va   VisualStateManager   orqali   animatsiyalar   yaratish,
foydalanuvchi harakatlariga javoban ilova reaksiyalarini boshqarish.
Input   events   (masalan,   mouse,   touch,   keyboard)   bilan   grafik   obyektlar   bilan
interaktiv muloqotni ta’minlash.
Shuningdek,   WinUI   yordamida   yaratilgan   interfeyslar   Fluent   Design   System
talablariga   mos   bo‘lib,   foydalanuvchilarga   zamonaviy,   intuitiv   va   sezgir
(responsive)   interfeys   tajribasini   taqdim   etadi.   Bu   esa   nafaqat   dizayn   sifati,   balki
foydalanuvchi bilan samarali muloqot qilish imkoniyatini ham oshiradi.
Grafika   va   multimedia   elementlarining   qo‘llanilishi   —   ayniqsa   ta’limiy,
taqdimot,   o‘yin,   yoki   axborot   vizualizatsiyasiga   mo‘ljallangan   ilovalarda   —
ma’lumotni esda qolarli, tushunarli va interaktiv shaklda yetkazishga xizmat qiladi.
Aynan   shu   xususiyatlar   WinUI   asosida   yaratilayotgan   ushbu   interfeysni   kurs   ishi
uchun dolzarb obyekt sifatida tanlashga asos bo‘ladi.
Kurs   ishi   davomida   aynan   WinUI   platformasida   grafik   tasvirlar   (rasmlar,
shakllar,   ikonalar)   va   multimedia   vositalari   (video,   audio)   bilan   ishlash
imkoniyatlari,   ularning   ilovaga   integratsiya   qilinishi   hamda   foydalanuvchi   bilan
samarali muloqotdagi o‘rni o‘rganiladi.
Shuningdek, grafik va multimedia elementlaridan foydalangan holda  interaktiv
va funksional ilova interfeysini yaratish   asosiy obyekt sifatida tanlanadi. Bu ilova
orqali foydalanuvchiga intuitiv, chiroyli va foydalanish uchun qulay bo‘lgan grafik
muhiti taqdim etiladi. Kurs   ishining   predmeti   - WinUI   (Windows   UI   Library)   platformasida   grafik
va   multimedia   elementlari   bilan   ishlashning   texnologik   va   dasturiy   asoslarini
o‘rganish ,   ularni   ilova   interfeysiga   integratsiya   qilish   hamda   foydalanuvchi   bilan
samarali muloqotni ta’minlovchi interaktiv komponentlarni yaratish jarayonidir.
Bu   predmet   doirasida   WinUI   yordamida   grafik   obyektlar   (rasmlar,   shakllar,
ikonalar)   va   multimedia   vositalari   (video,   audio)   bilan   ishlash,   ularni   boshqarish,
interfeysga   joylashtirish,   va   foydalanuvchi   harakatlariga   mos   ravishda   ularga
reaksiya berish imkoniyatlari chuqur tahlil qilinadi.
Kurs ishining vazifalari:
1. WinUI   platformasi   haqida   umumiy  nazariy   ma’lumotlarni   o‘rganish ,   uning
rivojlanish bosqichlari va zamonaviy Windows ilovalari uchun tutgan o‘rnini tahlil
qilish.
2. C#   va   XAML   dasturlash   tillari   asosida   foydalanuvchi   interfeysi   yaratish
bo‘yicha dastlabki bilim va ko‘nikmalarni shakllantirish.
3. WinUI’da   grafik   obyektlar   (rasmlar,   shakllar,   ikonalar)   bilan   ishlash
usullarini   o‘rganish ,   ularni   ilova   interfeysida   vizual   tarzda   aks   ettirishni   amalga
oshirish.
4. Multimedia   komponentlari   (video   va   audio   fayllar)   bilan   ishlash
mexanizmlarini o‘rganish , ularni ilovaga joylashtirish va boshqarishni amaliyotda
qo‘llash.
5. Foydalanuvchi   bilan   interaktiv   muloqotni   ta’minlovchi   elementlar   yaratish ,
masalan:   tugmalar,   oyna,   media   boshqaruv   elementlari   va   animatsiyalar   orqali
javob reaksiyalarini tashkil etish.
6. Grafika   va   multimedia   vositalari   yordamida   interfeysning   vizual
jozibadorligini   oshirish ,   uning   funksionalligini   foydalanuvchi   uchun   qulay   va
intuitiv qilish.
7. Yaratuvchi   ilovaning   dizayn,   funksional   va   texnik   jihatlarini   tahlil   qilish ,
foydalanilgan   texnologiyalar   asosida   uni   baholash   va   takomillashtirish   yo‘llarini
belgilash. Kurs   ishining   tarkibi.   Ushbu   kurs   ishi   kirish   qism,   asosiy   qism,   xulosa,
foydalanilgan adabiyotlar ro xati va ilovalarni o z ichiga oladi.ʻ ʻ
     
Nazariy qis m
C#   — Microsoft tomonidan ishlab chiqilgan, .NET platformasida ishlaydigan,
ob’ektga   yo‘naltirilgan   (OOP)   dasturlash   tilidir.   U   yuqori   darajadagi   sintaksisga
ega   bo‘lib,   Windows   ilovalarini   yaratish   uchun   keng   qo‘llaniladi.   C#   tili
yordamida   Windows   Forms   (WinForms)   va   Windows   Presentation   Foundation (WPF)   kabi   foydalanuvchi   interfeysi   (UI)   kutubxonalarida   dasturlar   yaratish
mumkin.
  C# tilining asosiy xususiyatlari
Ob’ektga   yo‘naltirilgan   dasturlash   (OOP):   C#   sinflar,   ob’ektlar,
inkapsulyatsiya,   meros,   polimorfizm   va   interfeyslar   kabi   OOP   tamoyillarini
qo‘llab-quvvatlaydi. Bu dasturiy ta’minotni modulli va qayta foydalanish imkonini
beradi. 
Xavfsizlik   va   xotira   boshqaruvi:   C#   xavfsiz   turlarni   qo‘llab-quvvatlaydi   va
avtomatik xotira boshqaruvi (garbage collection) mexanizmini ta’minlaydi, bu esa
xotira oqishlarining oldini olishga yordam beradi.
Platformalararo   qo‘llab-quvvatlash:   C#   dasturlari   .NET   Core   yordamida
Windows,   Linux   va   macOS   kabi   turli   platformalarda   ishlashi   mumkin.   Bu   esa
dasturchilarga keng imkoniyatlar yaratadi.
Keng   qo‘llanish   sohalari:   C#   korporativ   ilovalar,   o‘yinlar,   mobil   ilovalar   va
veb-dasturlash kabi turli sohalarda qo‘llaniladi. 
C# tili yordamida quyidagi Windows ilovalarini yaratish mumkin:
Windows Forms (WinForms):   Bu klassik  Windows ilovalarini  yaratish uchun
ishlatiladi. WinForms yordamida foydalanuvchi interfeysini yaratish va boshqarish
oson.
Windows   Presentation   Foundation   (WPF):   Bu   ilg‘or   grafik   foydalanuvchi
interfeysi  yaratish imkonini  beruvchi  kutubxona. WPF yordamida 2D/3D grafika,
animatsiyalar va ma’lumotlar bog‘lash (data binding) kabi imkoniyatlar mavjud.
Universal   Windows   Platform   (UWP):   Bu   Windows   10   va   undan   yuqori
versiyalarda ishlaydigan  ilovalarni  yaratish uchun  ishlatiladi. U mobil  qurilmalar,
planshetlar va ish stoli kompyuterlari uchun mos keladi.
WinUI haqida umumiy ma’lumot
WinUI   —   bu   Microsoft   tomonidan   ishlab   chiqilgan,   Windows   uchun
zamonaviy foydalanuvchi interfeysi (UI) kutubxonasi bo‘lib, Windows 10 versiya
1809   (Build   17763)   va   undan   yuqori   versiyalarida   ishlaydi.   WinUI   yordamida yuqori   sifatli   grafikalar,   animatsiyalar   va   multimedia   elementlarini   yaratish
mumkin.
WinUI   —  bu  Windows  dasturchilari  Universal  Windows  Platform   (UWP)  va
Win32 ilovalari uchun foydalanishi mumkin bo‘lgan ochiq manbali (open source)
kontrollerlar   va   kutubxonalar   to‘plamidir.
UWP  dasturchilari   o‘z  ilovalarini   yaratishda  Windows  dasturiy  ta’minot   to‘plami
(SDK)   dan   foydalanadilar   va   loyiha   xususiyatlarida   ma’lum   bir   SDK   versiyasini
tanlashlari   shart.   Microsoft   esa   UWP   kontrollerlari   va   foydalanuvchi   interfeysi
(UI)   komponentlarini   Windows   SDK   dan   ajratib   olib,   ularni   WinUI   nomi   bilan
ochiq manbali kutubxonalar sifatida chiqarishni boshladi. Bu orqali Windows SDK
versiyalari Windowsning o‘z versiyalari bilan bog‘liq bo‘lishidan kelib chiqadigan
cheklovlarni   bartaraf   etib,   WinUI   versiyalarini   Windowsdan   ancha   tezroq
yangilash imkoniyati paydo bo‘ldi. Shu bilan birga, WinUI kontrollerlari Windows
10 ning eski versiyalarida ham ishlatilishi mumkin.
Hozirda UWP va Win32 ilovalarini yaratishda WinUI dan foydalanish tavsiya
qilinadi,   lekin   WinUI   va   UWP   ning   Windows   dasturlash   sohasidagi   o‘rni   va
ahamiyatini tushunish muhimdir.
Ushbu   kitobda   siz   WinUI   3.0   kutubxonalaridan   foydalangan   holda   Windows
ilovalarini   qanday   yaratishni   o‘rganasiz.   Kitob   davomida   Windows   ilovalarini
yaratishda   tavsiya   etilgan   uslublar   va   amaliyotlarga   rioya   qilgan   holda   haqiqiy
loyiha ustida ishlaysiz.
WinUI   ilovamizni   yaratishni   boshlashdan   oldin,   Windows   mijoz   dasturlari
(client   development),   turli   Extensible   Application   Markup   Language   (XAML)
foydalanuvchi interfeysi belgilarining turlari hamda WinUI ning boshqa Windows
ish   stoli   (desktop)   dasturlash   ramkalari   bilan   taqqoslanishi   haqida   mustahkam
bilimga ega bo‘lish muhimdir.   Shu sababli, ushbu birinchi bobda avvalo UWP va
WinUI haqida asosiy tushunchalarni o‘rganamiz.
Ushbu bobda quyidagi mavzularni ko‘rib chiqamiz:
UWP nima va Microsoft nima uchun yana bir dasturlash ramkasini yaratdi XAML   yordamida   qanday   qilib   turli   o‘lchamdagi   va   turdagi   qurilmalarda
yaxshi foydalanuvchi interfeyslarini yaratish mumkin
WinUI nima uchun yaratilgan va u UWP bilan qanday bog‘liq
WinUI Windows dasturchilarining umumiy ekotizimidagi o‘rni
WinUI 3.0 ning yangi imkoniyatlari
Ushbu   kirish   qismi   uzoq   davom   etmaydi,   lekin   WinUI   ilovamni   yaratishni
boshlaganda kerakli kontekstni taqdim etaman. Keyingi bobda esa birinchi WinUI
loyihamni   yaratib,   amaliy   kod   yozishni   boshlaymiz.
UWP   ilovalari   2015   yilda   Windows   10   bilan   birga   ishga   tushirilishidan   oldin,
Windows   8   va   8.1   uchun   XAML   ilovalari   mavjud   edi.   Ushbu   ilovalarda   XAML
sintaksisi va ko‘plab dasturlash interfeyslari (API) bir xil edi. Bu Microsoftning ish
stoli,   mobil   va   boshqa   platformalarda   (Xbox,   aralash   haqiqat   va   boshqalar)
universal   ilova   yaratishni   maqsad   qilgan   keyingi   qadami   edi.   XAML   yordamida
yozilgan ilovalar Windows 8 va Windows Phone uchun alohida yozilishi mumkin
edi.   Bunday   loyihalar   turli   platformalar   uchun   alohida   bajariluvchi   fayllar
(binarlar)   yaratib,   ularni   kompyuter   yoki   Windows   Phone   qurilmalariga
o‘rnatishga imkon berardi.
Ammo, Windows 8 XAML ilovalari hozirgi UWP ilovalarga nisbatan ko‘plab
cheklovlarga ega edi. Masalan, ular faqat to‘liq ekran rejimida ishlagan, quyidagi
skrinshotda ko‘rsatilgandek.
WinUI   dan   foydalanish   sizga   ochiq   manbali   dasturiy   ta’minotning   barcha
afzalliklarini taqdim etadi. Ochiq manbali dasturlar odatda juda ishonchli bo‘ladi.
Faol   dasturchilar   jamoasi   tomonidan   ochiq   holatda   ishlab   chiqilgan   dasturiy
ta’minotda muammolar tez aniqlanib, tezda hal qilinadi.
  Agar   ochiq   manbali   paketda   muammo   topsangiz,   uni   o‘zingiz   tuzatib,
o‘zgarishni   jamoaga   yuborishingiz   mumkin.   Ochiq   manbali   loyihalar   yirik
korxonalardagi   mahsulot   guruhlari   bilan   moslashish   talabisiz   tez   yangilanadi.
Windows   endilikda   muntazam   yangilanishlarni   chiqaradi,   lekin   bu   hali   ham
kontroller kutubxonalarining yangilanishlaridan sekinroq hisoblanadi. WinUI   ni   tanlashning   eng   asosiy   sababi   uning   orqaga   mosligi   (backward
compatibility)   hisoblanadi.   UWP   kontrolleridan   foydalanganda,   aynan   o‘sha
versiyadagi   yangi   imkoniyatlar   va   tuzatishlar   eski   Windows   versiyalarida
ishlatiluvchi ilovalarga o‘rnatib bo‘lmaydi. WinUI esa, agar siz minimum qo‘llab-
quvvatlanadigan Windows versiyasini  to‘g‘ri belgilasangiz, yangi  kontrollerlar va
imkoniyatlarni   bir   nechta   Windows   versiyalarida   ishlatish   imkonini   beradi.   Ilgari
UWP   dasturchilari   uchun   mavjud   bo‘lmagan   kontrollerlar   endi   WinUI   orqali
mavjud bo‘ladi.
Masalan, Microsoft Fluent UI dizaynini Windows’ga 2017 yil kuzidagi (16299
versiyasi) chiqarilishgacha joriy qilmagan edi. Ammo WinUI kontrollerlari Spring
2017 chiqarilishidagi (10.0.15063.0 versiyasi) Windows versiyasini maqsad qilgan
ilovalarga   kiritilishi   mumkin.   WinUI   kontrollerlari   Fluent   UI   uslubini   qo‘llab-
quvvatlaydi.   Shuningdek,   WinUI   UWP   va   Windows   SDK   da   umuman   mavjud
bo‘lmagan kontrollerlar va boshqa imkoniyatlarni qo‘shadi.
Grafikalar bilan ishlash
Microsoft.UI.Composition   —   bu   Windows   App   SDK/WinUI   3   ning   Visual
qatlamini   tashkil   etuvchi   kutubxona   bo‘lib,   quyidagi   asosiy   komponentlardan
iborat:
Compositor:   Bu   asosiy   ob’ekt   bo‘lib,   barcha   Composition   ob’ektlarini
yaratadi va boshqaradi.
Visual:   Bu   Composition   ob’ekti   bo‘lib,   ekranda   ko‘rsatiladigan   barcha
elementlarni ifodalaydi.
Brushes:   Bu   ob’ektlar   yordamida   ranglar,   gradientlar,   tasvirlar   va   boshqa
vizual elementlar yaratiladi.
Effects:   Bu   ob’ektlar   yordamida   tasvirlarga   turli   effektlar   qo‘llanadi,
masalan, blur, sepia, invert va boshqalar.
Animations:   Bu   ob’ektlar   yordamida   Visual   ob’ektlariga   animatsiyalar
qo‘llanadi. InteractionTracker:   Bu   ob’ekt   foydalanuvchi   kiritishlarini   (masalan,
sichqoncha   harakati,   teginish)   kuzatadi   va   ularga   asoslangan   animatsiyalarni
boshqaradi.
Fluent Design System. Asosiy Komponentlar
Fluent Design System  quyidagi asosiy komponentlardan iborat:
1. Light (Yorug‘lik):   Foydalanuvchining e’tiborini jalb qilish va ma’lumotlarni
yoritish   uchun   ishlatiladi.   Masalan,   hover   effekti   yoki   fokus   holatida   yorug‘lik
qo‘llaniladi.
2. Depth (Chuqlik):   2D interfeysga qo‘shimcha o‘lchov qo‘shish uchun z-o‘qi
orqali   elementlarni   qatlamlash.   Bu   foydalanuvchiga   interfeysning   strukturasini
yaxshiroq tushunishga yordam beradi.
3. Motion   (Harakat):   Elementlar   o‘rtasidagi   o‘tishlarni   silliq   va   tabiiy   qilish
uchun animatsiyalar  qo‘llaniladi. Bu foydalanuvchiga interfeysdagi  o‘zgarishlarni
intuitiv ravishda qabul qilish imkonini beradi.
4. Material   (Material):   Interfeys   elementlariga   turli   material   effektlarini
qo‘llash. Masalan,   Acrylic   (muzli oynaga o‘xshash effekt) yoki   Mica   (fon rangiga
moslashadigan effekt) materiallari qo‘llaniladi.
5. Scale   (Masshtab):   Interfeysning   turli   qurilmalarda   moslashuvchanligini
ta’minlash.   Bu   dizaynning   turli   ekran   o‘lchamlari   va   rezolyutsiyalariga   mos
kelishini ta’minlaydi.
Fluent Design System  quyidagi dizayn printsiplariga asoslanadi:
Natural on every platform:   Ilova foydalanuvchining qurilmasiga moslashishi va
tanish interfeys elementlarini ishlatishi kerak.
Built   for   focus:   Interfeys   foydalanuvchining   e’tiborini   jalb   qilishi   va   uni
chalg‘itmasligi kerak.
One   for   all,   all   for   one:   Dizayn   barcha   foydalanuvchilarni   inobatga   olishi   va
ularning ehtiyojlariga javob berishi kerak.
Unmistakably   Microsoft:   Ilova   Microsoft   brendiga   xos   bo‘lishi   va   uni   tanib
olishni osonlashtirishi kerak. XAML va C# yordamida WinUI ilovalarini yaratish
XAML (Extensible Application Markup Language)  — bu Microsoft tomonidan
ishlab   chiqilgan,   foydalanuvchi   interfeyslarini   deklarativ   ravishda   yaratish   uchun
ishlatiladigan   XML-ga   asoslangan   til.   WinUI   ilovalarida   XAML   yordamida
foydalanuvchi interfeysini yaratish mumkin.
C#   —   bu   ob’ektga   yo‘naltirilgan   dasturlash   tili   bo‘lib,   WinUI   ilovalarida
biznes   mantiqini   amalga   oshirish   uchun   ishlatiladi.   C#   yordamida   foydalanuvchi
kiritishlarini   qayta   ishlash,   ma’lumotlarni   boshqarish   va   boshqa   biznes
jarayonlarini amalga oshirish mumkin.
MVVM   —   bu   foydalanuvchi   interfeysi   (View),   biznes   mantiqi   (Model)   va
ularning   o‘zaro   aloqasini   tartibga   soluvchi   dizayn   naqshidir.   WinUI   ilovalarida
MVVM   naqshidan   foydalanish,   kodni   modulli   va   qayta   ishlatiladigan   qilishga
yordam beradi.
Model:   Ilovaning ma’lumotlar va biznes mantiqini ifodalaydi.
View:   Foydalanuvchi bilan bevosita aloqada bo‘ladigan interfeysni ifodalaydi.
ViewModel:   Model   va   View   o‘rtasidagi   bog‘lanishni   ta’minlaydi.   WinUI
ilovalarida   MVVM   naqshidan   foydalanish   uchun,   ViewModel   sinfida
INotifyPropertyChanged   interfeysini  amalga   oshirish  va  XAML   faylida   {x:Bind}
yoki  {Binding}  sintaksisidan foydalanish mumkin.  
Multimedia bilan ishlash
WinUI   yordamida   multimedia   bilan   ishlash   uchun   quyidagi   imkoniyatlar
mavjud:
MediaPlayerElement:  Bu element yordamida video va audio fayllarni o‘ynatish
mumkin. MediaPlayerElement XAML va C# kodida ishlatilishi mumkin.
Windows.Media.Playback.MediaPlayer:   Bu   sinf   yordamida   video   va   audio
oqimlarini   boshqarish,   ovoz   balandligini   sozlash,   ijro   holatini   tekshirish   va
boshqalar mumkin.
Windows.Media.Capture:   Bu   sinf   yordamida   kamera   va   mikrofondan
ma’lumot olish, suratga olish va video yozib olish mumkin. Windows operatsion tizimining grafik tizimi
Windows   operatsion   tizimi   grafik   tizimi,   foydalanuvchi   bilan   o‘zaro   aloqada
bo‘lish   uchun   grafik   interfeys   (GUI)dan   foydalanadi.   Bu   tizim   quyidagi   asosiy
komponentlardan iborat:
GDI   (Graphics   Device   Interface) :   Windowsning   asosiy   grafik   kutubxonasi
bo‘lib,   u   ekranda   tasvirlarni   chizish,   matnni   chiqarish   va   boshqa   grafik
operatsiyalarni amalga oshirish uchun ishlatiladi.
DirectX :   Asosan video o‘yinlar va yuqori sifatli grafikalar uchun mo‘ljallangan
API bo‘lib, u tezkor va samarali grafik ishlov berishni ta’minlaydi.
Windows   Presentation   Foundation   (WPF) :   . NET   Framework   asosida
ishlaydigan,   yuqori   sifatli   foydalanuvchi   interfeyslarini   yaratish   uchun
ishlatiladigan kutubxona.
Windows Imaging Component (WIC) :   Rasm fayllarini o‘qish va yozish uchun
ishlatiladigan texnologiya bo‘lib, turli xil rasm formatlarini qo‘llab-quvvatlaydi.
Grafik formatlar: BMP, JPEG, PNG, GIF
BMP (Bitmap)
Afzalliklari :   Oddiy va tezkor ishlov berish, yuqori sifatli rasm saqlash.
Kamchiliklari :   Katta hajm, siqilmagan format.  
JPEG (Joint Photographic Experts Group)
Afzalliklari :   Yuqori siqilish darajasi, fotosuratlar uchun ideal.
Kamchiliklari :   Siqilish jarayonida ma’lumot yo‘qotilishi (lossy compression).
PNG (Portable Network Graphics)
Afzalliklari :  Lossless siqilish, shaffoflikni qo‘llab-quvvatlash.
Kamchiliklari :  Katta fayl hajmi, animatsiyalarni qo‘llab-quvvatlamaydi.
GIF (Graphics Interchange Format)
Afzalliklari :  Animatsiyalarni qo‘llab-quvvatlash, kichik hajm.
Kamchiliklari :   Foydalanish cheklangan rang palitrasi (256 rang).
  Windows Paint dasturining asosiy funksiyalari Microsoft   Paint   (MS   Paint)   —   bu   Windows   operatsion   tizimida   mavjud   bo‘lgan
oddiy   raster   grafik   tahrirlovchi   dastur.   U   quyidagi   asosiy   funksiyalarni   taqdim
etadi:
Rasm chizish vositalari :  Qalam, cho‘tka, shakllar, matn qo‘shish.
Rasmni kesish va o‘lchamini o‘zgartirish :  Rasmning kerakli qismlarini ajratib olish
va o‘lchamini sozlash.
Ranglarni   tanlash   va   qo‘llash :   Rang   palitrasidan   ranglarni   tanlash   va   ularni
chizmada qo‘llash.
Filtrlar va effektlar :  Oddiy filtrlar va effektlar yordamida rasmni tahrirlash.
Yangi   funksiyalar :   Windows   11   yangilanishlari   bilan   Paint   dasturiga   sun’iy
intellekt asosida ishlaydigan «Generative Fill» va «Sticker  Generator» kabi yangi
funksiyalar qo‘shildi  .  
Windowsda skrinshot olish vositalari
Snipping Tool — bu Windows operatsion tizimida mavjud bo‘lgan skrinshot olish
vositasi bo‘lib, u quyidagi funksiyalarni taqdim etadi:
Turli   xil   snip   rejimlari : To‘liq   ekran,   oynani   tanlash,   erkin   shakl   va
to‘rtburchak shakl.
Tahrirlash   vositalari :   Rasmga   matn   qo‘shish,   chizish,   o‘chirish   va   boshqa
tahrirlarni amalga oshirish.
Saqlash   va   ulashish :   Skrinshotni   PNG,   JPEG   yoki   GIF   formatlarida   saqlash   va
ijtimoiy tarmoqlarda yoki elektron pochta orqali ulashish.
Matnni rasmdan ajratib olish :   OCR (Optical Character Recognition) texnologiyasi
yordamida rasmda mavjud bo‘lgan matnni ajratib olish  
Snip va Sketch
Windows   10  va   undan   keyingi   versiyalarida   mavjud  bo‘lgan   Snip   &   Sketch
dasturi,   skrinshot   olish   va   ularni   tahrirlash   uchun   kengaytirilgan   imkoniyatlarni
taqdim etadi.
Skrinshot   olish   rejimlari :   To‘liq   ekran,   erkin   shakl,   to‘rtburchak   shakl   va
oynani tanlash. Tahrirlash   vositalari :   Rasmga   matn   qo‘shish,   chizish,   o‘chirish   va   boshqa
tahrirlarni amalga oshirish.
Saqlash va ulashish :   Skrinshotni PNG, JPEG yoki GIF formatlarida saqlash va
ijtimoiy tarmoqlarda yoki elektron pochta orqali ulashish.
ShareX   —   bu   bepul   va   ochiq   manbali   skrinshot   olish   va   ekran   yozib   olish
dasturi bo‘lib, u quyidagi funksiyalarni taqdim etadi:
Windowsda multimedia fayllari bilan ishlash
Audio   fayllar   bilan   ishlash:   Windows   Media   Player,   Groove   Music
dasturlarining imkoniyatlarini beradi.
Video   fayllar   va   ularni   boshqarish:   Films   &   TV,   Windows   Movie   Maker   va
zamonaviy tahrirlash dasturlari haqida ma’lumot turi.
Multimedia   fayllarining   formatlari   va   ularning   o‘zaro   farqlari   (MP3,   WAV,
MP4, AVI va boshqalar) kiradi.
Grafik va multimedia interfeysi
Grafik   foydalanuvchi   interfeysi   (GUI)   —   bu   kompyuter   bilan   interaktiv
aloqada   bo‘lish   uchun   vizual   elementlar   to‘plamidir.   Eng   keng   tarqalgan   GUI
elementlari quyidagilardan iborat.
Ikonalar .  Fayllar, papkalar yoki dasturlarni ifodalovchi kichik tasvirlar.
Tugmalar :   Foydalanuvchi   tomonidan   bosilishi   mumkin   bo‘lgan   elementlar,
odatda amallarni bajarish uchun ishlatiladi.
Menyular :   Foydalanuvchiga   turli   xil   variantlarni   tanlash   imkonini   beruvchi
ro‘yxatlar.
Oynalar   (Windows) :   Ekranda   ma’lumotlarni   ko‘rsatish   uchun   ajratilgan
hududlar.
Slaydlar,   tugmalar,   matn   maydonlari :   Interaktiv   elementlar   bo‘lib,
foydalanuvchi bilan tizim o‘rtasidagi aloqani ta’minlaydi.
Bu   elementlar   foydalanuvchining   tizim   bilan   o‘zaro   aloqasini   soddalashtiradi
va samaradorligini oshiradi. Multimedia kontentni ko‘rsatishda GUI roli
GUI   multimedia   kontentini   samarali   va   intuitiv   tarzda   taqdim   etishda   muhim
rol   o‘ynaydi.   Masalan,   video   pleerlar,   musiqa   pleerlar   va   tasvir   ko‘rsatuvchi
dasturlar foydalanuvchiga quyidagi imkoniyatlarni taqdim  etadi.   Vizual  interfeys :
Kontentni ko‘rish va boshqarish uchun qulay oynalar.   Interaktiv elementlar :   Play,
pause,   stop   kabi   tugmalar   orqali   kontentni   boshqarish.   Navigatsiya   vositalari :
Slayderlar yordamida vaqtni yoki tovush balandligini sozlash.   Menyu tizimi :  Turli
xil   sozlamalar   va   variantlarni   tanlash   imkoniyati.   GUI   yordamida   multimedia
kontentini   taqdim   etish   foydalanuvchining   tajribasini   yaxshilaydi   va   tizim   bilan
o‘zaro aloqani soddalashtiradi.
Windows API va grafik texnologiyalari
Windows   API   (WinAPI)   —   bu   Microsoft   Windows   operatsion   tizimi   uchun
ishlab   chiqilgan   dasturiy   interfeyslar   to‘plamidir.   U   dasturchilarga   grafik
interfeyslar yaratish, multimedia ma’lumotlarini qayta ishlash, fayllar bilan ishlash
va tizim resurslariga kirish imkonini beradi.
GDI,GDI+   (Graphics   Device   Interface) :   Ekranda   chizmalar,   matnlar   va
shakllarni chizish uchun ishlatiladi. GDI+ esa GDI ning kengaytirilgan versiyasidir
va   antialiased   chizmalar,   shaffoflik   va   boshqa   zamonaviy   grafik   xususiyatlarni
qo‘llab-quvvatlaydi.
Direct2D .   Microsoft  tomonidan ishlab chiqilgan 2D  vektor  grafik API  bo‘lib,
GPU yordamida yuqori sifatli va tezkor renderlashni ta’minlaydi.   Википедия
Direct 3 D .  3 D   grafikalarni   yaratish   uchun   ishlatiladigan   API   bo ‘ lib ,  o ‘ yinlar   va
boshqa   grafik   dasturlar   uchun   asosiy   vosita   hisoblanadi .
DirectShow .   Multimedia   fayllarini   o‘qish,   yozish   va   tahrirlash   uchun
ishlatiladigan API bo‘lib, video va audio oqimlarini boshqarish imkonini beradi.  
Windows Imaging Component (WIC) .  Rasm fayllarini o‘qish va yozish uchun
ishlatiladigan   API   bo‘lib,   BMP,   JPEG,   PNG,   TIFF   kabi   ko‘plab   formatlarni
qo‘llab-quvvatlaydi.
Bu   komponentlar   yordamida   dasturchilar   Windows   platformasida   grafik   va
multimedia ilovalarini yaratishda keng imkoniyatlarga ega bo‘lishadi. DirectX   —   bu   Microsoft   tomonidan   ishlab   chiqilgan   grafik,   audio   va   boshqa
apparat resurslari bilan ishlash uchun mo‘ljallangan API to‘plamidir.   U o‘yinlar va
boshqa yuqori samarali grafik dasturlarni yaratishda keng qo‘llaniladi.
DirectX ning asosiy komponentlari:
Direct3D ,  3D grafikalarni yaratish uchun ishlatiladi.
Direct2D ,  2D vektor grafikalar uchun ishlatiladi.
DirectSound ,  Audio ma’lumotlarini qayta ishlash uchun ishlatiladi.
DirectInput ,   Kirish   qurilmalari   (klaviatura,   sichqoncha,   joystick)   bilan   ishlash
uchun ishlatiladi.
DirectPlay :  Tarmoq orqali o‘yinlarni o‘ynash uchun ishlatiladi.
DirectX   ning   so‘nggi   versiyasi   —   DirectX   12   Ultimate   bo‘lib,   u   Windows   11
platformasida   mavjud.   Bu   versiya   o‘yinlarda   yuqori   samaradorlik,   ko‘p   yadroli
protsessorlarni   samarali   ishlatish   va   yangi   grafik   texnologiyalarni   qo‘llab-
quvvatlash imkonini beradi.  
OpenGL   (Open   Graphics   Library)   —   bu   Khronos   Group   tomonidan   ishlab
chiqilgan   ochiq   manbali   grafik   API   bo‘lib,   u   ko‘plab   operatsion   tizimlarda
ishlaydi.   DirectX esa faqat Windows platformasida ishlaydi.
OpenGL   ning   afzalliklari   orasida   ko‘p   platformali   qo‘llab-quvvatlash   va
kengaytirilgan   imkoniyatlar   mavjud.   Biroq,   uning   samaradorligi   ba’zi   yangi
texnologiyalarni qo‘llab-quvvatlashda pastroq bo‘lishi mumkin.
DirectX   esa   Windows   platformasida   yuqori   samaradorlikni   ta’minlaydi   va
yangi   texnologiyalarni   qo‘llab-quvvatlashda   afzalliklarga   ega.   Biroq,   uning   faqat
Windows   va   Xbox   platformalarida   ishlashi   uning   ko‘p   platformali   qo‘llab-
quvvatlashini cheklaydi.
Amaliy qism
WinUi loyihasini yaratish. “Search for templates” (Shablonlarni qidirish) maydoniga   winui   deb yozamiz,
so‘ng  Blank App (WinUI in UWP) C #  shablonini tanlang va quyidagi skrinshotda
ko‘rsatilgandek  Next   tugmasini bosamiz.
Loyihaga   MyMediaCollection   nomini   beramiz,   qolgan   maydonlarni   esa   o‘z
holicha   qoldiring   va   Create   tugmasini   bosamiz.   Keyin   ilovangiz   uchun   maqsad
qilinadigan   Windows   versiyalarini   tanlash   so‘raladi.   WinUI   3.0   uchun   quyidagi
minimal versiyalar tanlanishi shart: Target Version (Maqsad qilingan versiya):  Build 18362 yoki undan yuqori
Minimum   Version   (Minimal   versiya):   Build   17134   yoki   undan   yuqori   bo‘lishi
kerak.
Eslatma
Ilovangiz   uchun   yangi   versiyalarni   tanlash   sizga   bog‘liq,   ammo   shuni   yodda
tutingki,   agar   yangi   versiyalarni   tanlasangiz,   eski   Windows   10   versiyalaridagi
foydalanuvchilar   ilovani   o‘rnata   olmaydi.     Target   Version   (Maqsad   qilingan
versiya)   Minimum   Version   (Minimal   versiya)   dan   teng  yoki   katta  bo‘lishi   kerak.
Agar nima tanlashni bilmasangiz, standart qiymatlarda qolishingiz mumkin.
Endi loyiha yaratildi va Visual  Studio ishga tushdi. Ilovani ishga tushiring va
shablon MainPage uchun nima taqdim etganini ko‘ring. Siz sahifani joylashtirgan
bo‘sh oynani ko‘rishingiz kerak. Keyin esa, Visual Studio biz uchun boshlang‘ich
sifatida nima yaratganini ko‘rib chiqamiz.
App.xaml   fayli,   nomidan   ko‘rinib   turibdiki,   butun   ilova   bo‘ylab   mavjud
bo‘ladigan resurslarni saqlaydi.
Agar  bir  nechta  sahifalarda ishlatilishi  kerak bo‘lgan shablonlar  yoki  uslublar
bo‘lsa,   ularni   Application   darajasida   qo‘shish   kerak. Yangi loyihaning App.xaml faylida boshlash uchun ba’zi mazkur kodlari  bo‘ladi,
quyidagi kod parchasi bunga misol bo‘la oladi:
Keyingi bo‘limda XAML  asoslarini  ko‘rib chiqamiz. Hozircha shuni  bilingki,
Application.Resources   bo‘limi   butun   ilova   bo‘ylab   umumiy   foydalaniladigan
barcha   resurslarni   o‘z   ichiga   oladi.   Ushbu   bo‘lim   ichida   joylashgan
ResourceDictionary.MergedDictionaries   bo‘limi   boshqa   XAML   fayllariga   ishora
qiladi,   ularning   resurslari   ham   butun   ilova   bo‘ylab   ulashiladi.   Bu   dasturchilarga
umumiy kontentni bir nechta resurs fayllariga bo‘lish imkonini beradi, natijada kod
tartibli va boshqarilishi oson bo‘ladi. Shuningdek, bu ilova bo‘ylab uchinchi tomon
resurslarini   ulashishga   ham   imkon   beradi.   Masalan,   ushbu   fayl
Microsoft.UI.Xaml.Controls namespace  dan keladigan   XamlControlsResources   ni
birlashtiradi.   Bu   biz   ilova   qurishda   foydalanadigan   WinUI   kontrollerlari   uchun
zarur bo‘lgan resurslardir.
App.xaml.cs faylini ko‘rib chiqish
Solution Explorer’da App.xaml faylining tugunini kengaytiring, u yerda 
App.xaml.cs nomli boshqa faylni ko‘rasiz. Bu fayl  code-behind  deb ataladi. U — 
qisman C# sinfi bo‘lib, XAML fayli bilan birgalikda  App  sinfini ta’riflaydi. C#  faylini ochsangiz, unda ancha kod bo‘lganini ko‘rasiz. Bu yerda ilova darajasidagi 
barcha hodisalarni boshqarasiz. Quyidagi hodisa boshqaruvchilari sukut bo‘yicha 
qo‘shilgan:
OnLaunched:  Ilovangiz birinchi marta ishga tushganda bajarilishi kerak bo‘lgan
maxsus mantiq shu yerga qo‘shiladi. Shuningdek, ilovaga uzatilgan argumentlarni
(masalan,   ishga   tushishda   ma’lum   sahifaga   o‘tish   ko‘rsatmasi)   shu   yerda   qayta
ishlash mumkin.
OnNavigationFailed:   Agar   sahifa   yuklab   bo‘lmasa,   ushbu   boshqaruvchi   ishga
tushadi. Bu yerda ba’zi sukutdagi istisno (exception) ishlov berish kodlari mavjud.
OnSuspended:   Windows ilovangizni vaqtincha to‘xtatganda (suspend qilganda)
ushbu boshqaruvchi chaqiriladi. Ilova holatini saqlash kerak bo‘lsa, buni shu yerda
bajaring.
MainPage.xaml faylini ko‘rib chiqish
MainPage.xaml   fayli   ilova   ishga   tushganda   yuklanadigan   MainPage   WinUI
sahifasini   o‘z   ichiga   oladi.   Buni   App.xaml.cs   faylida   joylashgan   OnLaunched
hodisa   boshqaruvchisida   ko‘rish   mumkin,   quyidagi   kod   parchasida
ko‘rsatilganidek:
Yangi   bo‘sh   WinUI   ilovasida,   sahifa   bo‘sh   Grid   tartib   (layout)   nazorat
elementini   o‘z   ichiga   oladi.   Button   nazorat   elementini   Text   xususiyati   “Media”
bo‘lgan   TextBlock   bilan  almashtirib  ko‘ring  va   StackPanel   o‘rniga   Grid   qo‘ying.
Natija quyidagicha bo‘lishi kerak: KODI:1
1. MainWindow.xaml – UI dizayni:
<Window
    x:Class=«WinUIGraphicsMediaApp.MainWindow»
    xmlns=«http://schemas.microsoft.com/winfx/2006/xaml/presentation»
    xmlns:x=«http://schemas.microsoft.com/winfx/2006/xaml»
    Title=«Grafika va Multimedia»
    Height=«450»
    Width=«800»>
        <StackPanel   HorizontalAlignment=«Center»   VerticalAlignment=«Center»
Spacing=«20»>
        <!-- Rasmni ko‘rsatish -->
                <Image   x:Name=«MyImage»   Width=«300»   Height=«200»
Stretch=«Uniform» />
        <!-- Video player -->
                <MediaPlayerElement   x:Name=«MyMediaPlayer»   Width=«300»
Height=«200» AreTransportControlsEnabled=«True» />
        <!-- Yuklash tugmalari -->         <StackPanel Orientation=«Horizontal» Spacing=«10»>
            <Button Content=«Rasm yuklash» Click=«OnLoadImageClick» />
            <Button Content=«Videoni ijro etish» Click=«OnPlayVideoClick» />
        </StackPanel>
    </StackPanel>
</Window>
2. MainWindow.xaml.cs – Kodi
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Windows.Storage;
using Windows.Storage.Streams;
using Windows.Media.Playback;
using Windows.Media.Core;
using Windows.UI.Xaml.Media.Imaging;
namespace WinUIGraphicsMediaApp
{
    public sealed partial class MainWindow : Window
    {
        public MainWindow()
        {
            this.InitializeComponent();
        }
        private async void OnLoadImageClick(object sender, RoutedEventArgs e)
        {
                        var   file   =   await   StorageFile.GetFileFromApplicationUriAsync(new
System.Uri(«ms-appx:///Assets/sample.jpg»));
            var stream = await file.OpenAsync(FileAccessMode.Read);
            BitmapImage bitmapImage = new BitmapImage();
            await bitmapImage.SetSourceAsync(stream);
            MyImage.Source = bitmapImage;         }
        // Videoni ijro etish
        private void OnPlayVideoClick(object sender, RoutedEventArgs e)
        {
                        var   source   =   MediaSource.CreateFromUri(new
System.Uri(«ms-appx:///Assets/samplevideo.mp4»));
            MyMediaPlayer.Source = source;
            MyMediaPlayer.MediaPlayer.Play();
        }
    }
}
KODI:2
MainWindow.xaml – UI dizayni:
<Window
    x:Class=«WinUIDrawingApp.MainWindow»
    xmlns=«http://schemas.microsoft.com/winfx/2006/xaml/presentation»
    xmlns:x=«http://schemas.microsoft.com/winfx/2006/xaml»
    xmlns:canvas=«using:Microsoft.UI.Xaml.Controls»
    Title=«Grafik chizish va animatsiya»
    Height=«400»
    Width=«600»>
    <Grid>
        <Canvas x:Name=«DrawingCanvas» Width=«600» Height=«400»
                Loaded=«OnCanvasLoaded»
                Draw=«OnCanvasDraw»/>
    </Grid>
</Window>
MainWindow.xaml.cs – C# ko‘rinishi
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Media;
using Microsoft.UI.Xaml.Shapes;
using Microsoft.UI.Dispatching;
using Microsoft.UI;
using System;
namespace WinUIDrawingApp
{
    public sealed partial class MainWindow : Window
    {
        private DispatcherTimer timer;
        private double x = 0;
        private double speed = 2;
        public MainWindow()
        {
            this.InitializeComponent();
        }
        private void OnCanvasLoaded(object sender, RoutedEventArgs e)
        {
            // Har 16ms da (taxminan 60 FPS) OnTick ishlaydi
            timer = new DispatcherTimer();
            timer.Interval = TimeSpan.FromMilliseconds(16);
            timer.Tick += OnTick;
            timer.Start();
        }
        private void OnTick(object sender, object e)
        {
            x += speed;
            if (x > DrawingCanvas.ActualWidth || x < 0)
            {                 speed = -speed;
            }
            DrawingCanvas.Invalidate(); // Canvasni yangilash
        }
                private   void   OnCanvasDraw(object   sender,
Microsoft.UI.Xaml.Controls.CanvasDrawEventArgs args)
        {
            var ds = args.DrawingSession;
            ds.Clear(Colors.White);
            // Qizil doira chizish (animatsiyalanadi)
            ds.FillCircle((float)x, 200, 30, Colors.Red);
        }
    }
}
Natija:
Oq fon ustida qizil doira chapdan o‘ngga harakat qiladi va chekkalardan qaytadi. Xulosa
WinUI   –   zamonaviy   Windows   ilovalarini   yaratish   uchun   kuchli,
kengaytiriladigan   va   samarali   vositadir.   C#   dasturlash   tili   bilan   birgalikda  WinUI
dasturchilarga   mustahkam   arxitektura,   foydalanuvchiga   qulay   interfeys   va
funksional   imkoniyatlar   yaratishga   xizmat   qiladi.   Kurs   ishida   WinUI
texnologiyasining nazariy va amaliy jihatlari yoritildi hamda oddiy amaliy loyiha
asosida tajriba o‘rganildi.
Ushbu   bobda   Windows   ilova   ishlab   chiqish   tarixidan   ko‘p   narsalarni
o‘rgandik.   UWP   ning   kelib   chiqishi   va   uning   ildizlari   Windows   8   ilovalariga
bog‘liqligini   bilib   oldik,   shuningdek,   Windows   foydalanuvchi   interfeyslarini
yaratishda   XAML   ning   afzalliklari   haqida   tushuncha   hosil   qildik.   Oddiy   WinUI
ilova kodi va foydalanuvchi interfeysi qanday ko‘rinishini ham ko‘zdan kechirdik.
Oxir-oqibat,   WinUI   versiyalarining   yaqingi   tarixini   ko‘rib   chiqdik   va   yangi   3.0
versiyasining   UWP   foydalanuvchi   interfeysi   kutubxonalarining   to‘liq   o‘rnini
bosuvchi   va   kelajakda   WPF   dasturchilari   uchun   ham   maqbul   variant   ekanligini
tushundik.
C#   dasturlash   tilida   Windows   UI   (WinForms   yoki   WPF)   yordamida   grafik
obyektlar va multimedia elementlari bilan ishlash imkoniyatlari chuqur o‘rganildi.
Amaliy   ishlar   davomida   foydalanuvchi   interfeysini   yaratishda   grafik
komponentlardan   (masalan,   Graphics ,   Bitmap ,   Pen ,   Brush ,   Color )   foydalanish
usullari,   shuningdek,   multimedia   vositalarini   (audio   va   video   fayllarni   ijro   etish,
rasm   yuklash   va   ko‘rsatish)   boshqarish   texnologiyalari   amaliy   misollar   bilan
yoritildi.
Dastur   yaratishda   zamonaviy   texnologiyalar,   foydalanuvchi   uchun   qulay
interfeyslar,   interaktivlik   va   vizual   ta’sirchanlikni   ta’minlovchi   komponentlar
qo‘llanildi.   Xususan,   GDI+   (Graphics   Device   Interface)   yordamida   rasmlar
chizish, shakllar yaratish va matnlarni formatlash bo‘yicha imkoniyatlar o‘rganildi.
Shuningdek,   System.Media   va   Windows   Media   Player   COM   komponenti
yordamida tovush va video fayllarni ijro etish mexanizmlari amaliyotda qo‘llandi. Tadqiqot   natijalariga   ko‘ra,   C#   tili   va   Windows   UI   platformasi   grafik
interfeyslar   va   multimedia   ilovalarini   ishlab   chiqish   uchun   keng   imkoniyatlarga
ega.   Ushbu   kurs   ishi   natijasida   talaba   nafaqat   nazariy   bilimlarga,   balki   grafik   va
multimedia   funksiyalarini   dasturiy   tarzda   boshqarish   ko‘nikmalariga   ham   ega
bo‘ldi.   Men   bu   kurs   ishidan   Win   UI   3   ilovasiidan   foydalanib   dastur   tuzdim   bu
dasturimning qisqa mazmuni shundan iboratki : Bu dastur Ranglardan iborat bo‘lib
chiziqlar   yirdamida   rasm   chizish   uchun   mo‘ljallangan.   Bu   dasturimning   yana   bir
tarafi   agar   xato   chiziq   chizilgan   bo‘lsa   o‘chirish   imkonini   ham   beradi.Musiqa
qo‘yish  imkoniyati  ham  mavjud. Lekin bu dasturim  ma’lum  bir  versiyadan  so‘ng
ishlaydi. Foydalanilgan adabiyotlar va manbalar
1. Microsoft Docs:  https://learn.microsoft.com/en-us/windows/apps/winui/
2. Petzold, Charles.  Programming Windows.
3. Jesse Liberty.  Programming C#.
4. StackOverflow.com – dasturchilar uchun jamoaviy yordam sahifasi.
5. GitHub – ochiq kodli WinUI loyihalari.
6. roelsen A., Japikse P.  Pro C# 9 with .NET 5: Foundational Principles and 
Practices in Programming .  Apress, 2021. – 1080 b.
7. Price B.  C# 9 and .NET 5 – Modern Cross-Platform Development .  Packt 
Publishing, 2021. – 800 b.
8. Liberty J., Hurwitz B.  Programming C# 8.0: Build Cloud, Web, and Desktop 
Applications .  O‘Reilly Media, 2020.
9. Nathan C.  WPF in Action with Visual Studio .  Manning Publications, 2021.
10. Шилдт Г.  С# 10 и .NET 6. Полное руководство . – М.: Вильямс, 2022. – 
1232 с.
11. MSDN Documentation – Microsoft Docs: 
https://learn.microsoft.com/en-us/dotnet/
12. Microsoft Learn:  https://learn.microsoft.com/en-us/training/
13. Stack Overflow – savol-javoblar va kod misollari:  https://stackoverflow.com
14. Albahari J.  C# 10 in a Nutshell: The Definitive Reference .  O‘Reilly Media, 
2022.
15. Petzold C.  Programming Windows: Writing Windows 8 Apps With C# and 
XAML .  Microsoft Press, 2013. Ilovalar
MainWindow.xaml.cs – Kodi
using  Microsoft.UI.Xaml;
using  Microsoft.UI.Xaml.Controls;
using  Microsoft.UI.Xaml.Controls.Primitives;
using  Microsoft.UI.Xaml.Data;
using  Microsoft.UI.Xaml.Input;
using  Microsoft.UI.Xaml.Media;
using  Microsoft.UI.Xaml.Media.Imaging;
using  Microsoft.UI.Xaml.Navigation;
using  System;
using  System.Collections.Generic;
using  System.IO;
using  System.Linq;
using  System.Runtime.InteropServices.WindowsRuntime;
using  Windows.Foundation;
using  Windows.Foundation.Collections;
using  Windows.Media.Core;
using  Windows.Storage;
using  Microsoft.UI.Xaml.Shapes;  //  ✅  to‘g‘ri (WinUI 3 uchun)
using  Windows.Storage.Pickers;
// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.
namespace  MediaApp {
     ///   <summary>
     ///  An empty window that can be used on its own or navigated to within a 
Frame.
     ///   </summary>
     public   sealed   partial   class   MainWindow  : Window
    {
         private   bool  _isDrawing;
         private  Windows.Foundation.Point _lastPoint;
         public   MainWindow ()
        {
             this .InitializeComponent();
        }
       private   void  Canvas_PointerPressed( object  sender, PointerRoutedEventArgs e)
        {
            _isDrawing =  true ;
            _lastPoint = e.GetCurrentPoint(DrawingCanvas).Position;
        }
     private   void  Canvas_PointerReleased( object  sender, PointerRoutedEventArgs e)
        {
            _isDrawing =  false ;
        }
         private   void  ClearCanvas_Click( object  sender, RoutedEventArgs e)
        {
            DrawingCanvas.Children.Clear();
        }
         private   async   void  SaveCanvas_Click( object  sender, RoutedEventArgs e)
        {
            RenderTargetBitmap rtb =  new ();
             await  rtb.RenderAsync(DrawingCanvas);              var  pixelBuffer =  await  rtb.GetPixelsAsync();
             var  pixels = pixelBuffer.ToArray();
             var  fileSavePicker =  new  FileSavePicker(); 
fileSavePicker.FileTypeChoices.Add( «PNG Image» ,  new  List< string >() {
«.png»  });
            fileSavePicker.SuggestedFileName =  «drawing» ;
             var  hwnd = WinRT.Interop.WindowNative.GetWindowHandle( this );
            WinRT.Interop.InitializeWithWindow.Initialize(fileSavePicker, hwnd);
            StorageFile file =  await  fileSavePicker.PickSaveFileAsync();
             if  (file !=  null )
            {
                 using   var  stream =  await  file.OpenAsync(FileAccessMode.ReadWrite);
                 var  encoder =  await  
Windows.Graphics.Imaging.BitmapEncoder.CreateAsync(
 Windows.Graphics.Imaging.BitmapEncoder.PngEncoderId, stream);
                encoder.SetPixelData(
                    Windows.Graphics.Imaging.BitmapPixelFormat.Bgra8,
                    Windows.Graphics.Imaging.BitmapAlphaMode.Premultiplied,
                    ( uint )rtb.PixelWidth,
                    ( uint )rtb.PixelHeight,
                    96, 96, pixels);
                 await  encoder.FlushAsync();
            }
        }
         private   async   void  LoadImage_Click( object  sender, RoutedEventArgs e)
        {
             var  openPicker =  new  FileOpenPicker();
            openPicker.FileTypeFilter.Add( «.png» );
            openPicker.FileTypeFilter.Add( «.jpg» );              var  hwnd = WinRT.Interop.WindowNative.GetWindowHandle( this );
            WinRT.Interop.InitializeWithWindow.Initialize(openPicker, hwnd);
            StorageFile file =  await  openPicker.PickSingleFileAsync();
             if  (file !=  null )
            {
                 var  bmp =  new  BitmapImage();
                 using   var  stream =  await  file.OpenAsync(FileAccessMode.Read);
                 await  bmp.SetSourceAsync(stream);
                 var  img =  new  Image { Source = bmp, Width = 
DrawingCanvas.ActualWidth, Height = DrawingCanvas.ActualHeight };
                DrawingCanvas.Children.Add(img);
            }
        }
         private   async   void  OpenMedia_Click( object  sender, RoutedEventArgs e)
        {
             var  openPicker =  new  FileOpenPicker();
            openPicker.FileTypeFilter.Add( «.mp4» );
            openPicker.FileTypeFilter.Add( «.mp3» );
             var  hwnd = WinRT.Interop.WindowNative.GetWindowHandle( this );
            WinRT.Interop.InitializeWithWindow.Initialize(openPicker, hwnd);
            StorageFile file =  await  openPicker.PickSingleFileAsync();
             if  (file !=  null )
            {
                 var  stream =  await  file.OpenAsync(FileAccessMode.Read);
                MediaPlayer.Source = MediaSource.CreateFromStorageFile(file);
            }
        }
         private   readonly  Stack<UIElement> _drawnElements =  new ();
        private   void  Canvas_PointerMoved( object  sender, PointerRoutedEventArgs e)
        {              if  (_isDrawing)
            {
                 var  currentPoint = e.GetCurrentPoint(DrawingCanvas).Position;
                 // Use Eraser color (White) if EraserToggle is checked, else use 
ColorPicker color
                 var  strokeColor = EraserToggle.IsChecked =  true
    ? Microsoft.UI.Colors.White
    : ColorPicker.Color;
                 var  line =  new  Line
                {
                    X1 = _lastPoint.X,
                    Y1 = _lastPoint.Y,
                    X2 = currentPoint.X,
                    Y2 = currentPoint.Y,
                    Stroke =  new  SolidColorBrush(strokeColor),
                    StrokeThickness = BrushSizeSlider.Value
                };
                DrawingCanvas.Children.Add(line);
                _lastPoint = currentPoint;
            }
        }
         private   void  UndoLastLine_Click( object  sender, RoutedEventArgs e)
        {
             if  (_drawnElements.Count > 0)
            {
                 var  last = _drawnElements.Pop();
                DrawingCanvas.Children.Remove(last);
            }
        }     }
}
<?xml version=«1.0» encoding=«utf-8»?>
< Window
     x : Class =«MediaApp.MainWindow»
     xmlns =«http://schemas.microsoft.com/winfx/2006/xaml/presentation»
     xmlns : x =«http://schemas.microsoft.com/winfx/2006/xaml»
     xmlns : local =«using:MediaApp»
     xmlns : d =«http://schemas.microsoft.com/expression/blend/2008»
     xmlns : mc =«http://schemas.openxmlformats.org/markup-compatibility/2006»
     mc : Ignorable =«d»
     Title =«MediaApp»>
     < Window.SystemBackdrop >
         < MicaBackdrop  />
     </ Window.SystemBackdrop >
     < Grid >
         < TabView >
             <!-- Drawing Tab -->
             < TabViewItem  Header =«Drawing Canvas»>
                 < Grid  Margin =«10»>
                     < Grid.RowDefinitions >
                         < RowDefinition  Height =«Auto» />
                         < RowDefinition  Height =«*» />
                     </ Grid.RowDefinitions >
                     <!-- Top controls: ColorPicker + Buttons -->
                     < StackPanel  Orientation =«Horizontal»  Spacing =«15»  
VerticalAlignment =«Center»  Grid.Row =«0»>
                         < ColorPicker  x : Name =«ColorPicker»  Color =«Red»  Width =«200»  
Height =«200» />
                         < Slider  x : Name =«BrushSizeSlider»  Minimum =«1»  
Maximum =«20»  Width =«100»  VerticalAlignment =«Center» />
                         < Button  Content =«Clear»  Click =«ClearCanvas_Click»  
Padding =«12,6» />
                         < Button  Content =«Save»  Click =«SaveCanvas_Click»  
Padding =«12,6» />
                         < Button  Content =«Load»  Click =«LoadImage_Click»  
Padding =«12,6» />
                         < ToggleButton  x : Name =«EraserToggle»  Content =«Eraser»  
Padding =«12,6» />
                     </ StackPanel >                      <!-- Canvas below controls, with fixed size and centered -->
                     < Border  Grid.Row =«1»  Background =«LightGray»  
HorizontalAlignment =«Center»  VerticalAlignment =«Top»  Margin =«0,20,0,0»  
Padding =«5»  CornerRadius =«6» >
                         < Canvas  x : Name =«DrawingCanvas»
                             Width =«800»
                             Height =«500»
                             Background =«White»
                             PointerPressed =«Canvas_PointerPressed»
                             PointerMoved =«Canvas_PointerMoved»
                             PointerReleased =«Canvas_PointerReleased» />
                     </ Border >
                 </ Grid >
             </ TabViewItem >
             <!-- Media Player Tab -->
             < TabViewItem  Header =«Media Player»>
                 < Grid  Margin =«10»>
                     < MediaPlayerElement  x : Name =«MediaPlayer»
                                     AreTransportControlsEnabled =«True»
                                     Width =«800»  Height =«450»
                                     HorizontalAlignment =«Center»  
VerticalAlignment =«Center»/>
                     < Button  Content =«Open Media»
                         VerticalAlignment =«Bottom»
                         HorizontalAlignment =«Center»
                         Click =«OpenMedia_Click»
                         Margin =«10» />
                 </ Grid >
             </ TabViewItem >
         </ TabView >
     </ Grid >
</ Window >
Natija:      bu yerdan ixtiyoriy rang tanlanadi.
  bu chiziq yordamida rangning qalinligi o‘lchanadi.   Eraser   bu   yerda   o‘chirg‘ich   vazfasini   bajaradi.
O‘chirg‘ichning ham qaliligi yoki yupqaligini aniqlash mumkin.
Bu yerda Clear ni bossangiz shu rangdagi chiziqni chizadi. Istalgan rasmingizni chizishingiz mumkin.

Algoritmik tillar va dasturlash  fanidan kurs ishi 

Sotib olish
  • O'xshash dokumentlar

  • Konus kesimlari va ularning fokal xossalari
  • WPFda Application sinfi va boshqaruv elementlari shablonini yaratish
  • Algoritmik tillar va dasturlash
  • Axborot resurs markazi uchun avtomatlashtirilgan tizim kurs ishi
  • Talabalar bilimini baholovchi dastur yaratish

Xaridni tasdiqlang

Ha Yo'q

© Copyright 2019-2025. Created by Foreach.Soft

  • Balansdan chiqarish bo'yicha ko'rsatmalar
  • Biz bilan aloqa
  • Saytdan foydalanish yuriqnomasi
  • Fayl yuklash yuriqnomasi
  • Русский