Grafik interfeysga ega dastur. Qt yordamida grafik interfeys yaratish. C# kodidan interfeys yaratish

1.1. Salom Qt!

Eng oddiy Qt dasturi matni ostiga kursorni olib boring:

1 #shu jumladan 2 #shu jumladan 3 int main(int argc, char *argv) 4 ( 5 QApplication ilovasi(argc, argv); 6 QLabel *label = yangi QLabel("Salom, Qt!", 0); 7 app.setMainWidget(label); 8 yorliq ->show(); 9 return app.exec(); 10 ) Bu yerda 1 va 2-qatorlarda QApplication va QLabel sinflari kiritilgan.

5-qatorda QApplication sinfining namunasi yaratiladi, u dastur resurslari tomonidan boshqariladi. QApplication konstruktor argumentlar argc va argv o'tdi, Qt chig'anoqlari buyruq qatori argumentlarini qayta ishlash mumkin.

6-qator "Salom, Qt!" Ko'rsatadigan QLabel vizual komponentini yaratadi. Qt terminologiyasida grafik interfeysga ega bo'lgan barcha vizual komponentlar deyiladi vidjetlar(Vidjetlar). Tugmalar, menyular, aylantiruvchi aylanishlar va turli ramkalar - bularning barchasi vidjetlardir. Ba'zi vidjetlar o'z vidjetlarida ishlatilishi mumkin, masalan, g'alati dasturlar - QMenuBar, QToolBar, QStatusBar va boshqalar tomonidan ishlatilishi mumkin bo'lgan eng aniq vidjet. null) bu vidjet “Rabbiy”ni tanimasligini bildiruvchi indikator. boshqa vidjet bilan tizimga kirmang.

7-qatorda dasturning "bosh" vidjeti tayinlangan. Agar koristuvach dasturning "bosh" vidjetini yopsa (masalan, oyna sarlavhasida "X" tugmasini bosaman), dastur o'z ishini yakunlaydi. Agar dastur bosh vidjetini tanimasa, oyna yopilgandan keyin fon rejimini kutishda davom etadi.

8-qatorda belgi ko'rinadi. Vidjetlar har doim ko'rinmas holga keltiriladi, shuning uchun dasturchi yoqimsiz hid paydo bo'lishidan oldin displey parametrlarini sozlash imkoniyatidan mahrum bo'ladi.

9-qatorda Qt kutubxonasi xizmatini o'tkazish o'chirilgan. Shu paytdan boshlab dastur tanib olish rejimiga o'tadi, agar siz hech narsa qilmasangiz, shunchaki terish tugmachasini tekshiring, masalan, tugmachani yoki sichqonchani bosing.

Be-yaka diya koristuvacha yumurtlama podium(boshqacha aytganda - "ilg'ayish"), dastur bo'lsa, siz bir yoki bir nechta funktsiyani bosishingiz mumkin. Shu ma'noda, grafik interfeysga ega qo'shimchalar turli xil dasturlarda tubdan o'zgartiriladi, ma'lumotlarni paketli qayta ishlash bilan, masalan, kiritilgan ma'lumotlarni koristuvach sifatida qabul qilgan holda, ular mustaqil ravishda yoga bilan shug'ullanadi, natijalarni ko'radi va keyingi ishtirokisiz o'z ishlarini yakunlaydi. odamlar.

Chaqaloq 1.1. Windows XP uchun Vikno dasturlari


Endi dasturimizning robotini qayta yozish vaqti keldi. Avvalo, sizda Qt 3.2 o'rnatilgan bo'lishi kerak (yoki yangi versiya) va PATH yo'lini bin katalogiga o'zgartirish. (Windows uchun Qt kutubxonasini o'rnatish vaqtida o'zgartirilgan PATH sozlamalari avtomatik ravishda o'chiriladi)

Hello katalogidan hello.cpp nomi bilan dastur matnini fayldan ko'chiring.

Boshqa katalogga o'ting va buyruqni bering:

Qmake -project platformadan mustaqil loyiha faylini yaratish (hello.pro), va keyin quyidagi buyruqni bering: qmake hello.pro Bu buyruq loyiha fayli asosida Makefile yaratadi. Dasturni kompilyatsiya qilish uchun make buyrug'ini bering, so'ngra matn terish orqali c ni ishga tushiring Salom(Windows da) yoki ./Salom(Unix uchun) yoki hello.app-ni oching(Mac OS X). Agar siz Windows-da ishlayotgan bo'lsangiz va Microsoft Visual C++ dan foydalansangiz, make buyrug'ini almashtirishingiz va nmake buyrug'ini berishingiz kerak. Shu bilan bir qatorda, hello.pro faylidan quyidagi buyruqni ishga tushirish orqali Visual Studio loyihasini yaratishingiz mumkin: qmake -tp vc hello.pro va keyin dasturni Visual Studio'da kompilyatsiya qiling.

Chaqaloq 1.2. Formatlangan matn bilan yorliq.


Va endi trochni buzamiz. Biz yorliqning ko'rinishini o'zgartirdik, matnga HTML uslubida formatlash qo'shdik. Kim uchun, qatorni almashtiring

QLabel *label = yangi QLabel("Salom, Qt!", 0); QLabelda *label = yangi QLabel("

Salom " "Qt!

", 0); va dasturni qayta tanlang.


1.2. Signallarning ishlashi.

Hujumkor dumba ko'rsatmoqda - dasturning dííí koristuvachga reaktsiyasini qanday tashkil qilish kerak. Tugmachani bosish uchun Tsya dasturi, yakka bosilganda dastur yopiladi. QLabel asosiy vidjet sifatida QPushButton va qo'shimcha kod o'rnini egallaganligi sababli, tashqi matn allaqachon oldingi dumbaga o'xshaydi.

Chaqaloq 1.3. Dasturdan chiqish.


1 #shu jumladan 2 #shu jumladan 3 int main(int argc, char *argv) 4 (5 QApplication ilovasi(argc, argv); 6 QPushButton *tugmasi = yangi QPushButton("Chiqish", 0); 7 QObject::connect(tugma, SIGNAL(bosilgan) ), 8 &app, SLOT(quit())), 9 app.setMainWidget(tugma);10 tugma->show(); signallari, koristuvach qilganlar haqida yogo gapirib, bu amalmi yoki lagerini o'zgartiradiganlar haqida. Misol uchun, QPushButton klassining namunasi tugma bosilganda dasturga bosilgan() signalini yuboradi. Signal funktsiyani ishlov beruvchiga "ulanishi" mumkin (bunday Qt ishlov beruvchilar deyiladi) uyalar). Shu tarzda, agar vidjet signaldan ustun bo'lsa, slot avtomatik ravishda chaqiriladi. Ilovalar bosilgan() signalni tugma kabi QApplication klassining namunasi bo'lgan quit() uyasiga ulagan. SIGNAL() va SLOT() vikilari makro-signaldir, biz ular haqida keyingi bobda xabar beramiz.

Endi dasturni olaylik. O'ylaymanki, siz allaqachon chiqish katalogini yaratgansiz va quit.cpp faylini tarqatgansiz. Buyruq bering qmake loyiha faylini yaratish va keyin birdan - Makefile yaratish uchun:

Qmake -project qmake quit.pro Endi buyruq bilan dasturdan chiqing qilish va yoga boshlang. "Chiqish" tugmasini bosasizmi yoki klaviaturadagi "Muammo" tugmachasini bosasizmi, dastur o'z ishini tugatadi.

Hujum qiluvchi nuqtada ikkita vidjetni sinxronlashtirish uchun signallar va slotlarni qanday yutib olish mumkinligi ko'rsatilgan. Tsya dasturi proponuê koristuvacheví zaprovaditi svíy vík. Buni lichnikni boshqarish uchun tugmalar yordamida yoki buzzardning yordami uchun qilishingiz mumkin.

Chaqaloq 1.4. Yosh dasturi.


Uchta vidjet qo'shing: QSpinBox, QSlider va QHBox (gorizontal joylashtirish maydoni). Dasturning asosiy vidjeti QHBox hisoblanadi. QSpinBox va QSlider komponentlari QHBox va ê o'rtasida joylashgan muvofiq , Oxirgi paytgacha.

Chaqaloq 1.5. Yosh uchun vidjetlar.


1 #shu jumladan 2 #shu jumladan 3 #shu jumladan 4 #shu jumladan 5 int main(int argc, char *argv) 6 (7 QApplication ilovasi(argc, argv); 8 QHBox *hbox = yangi QHBox(0); 9 hbox->setCaption("Yoshingizni kiriting"); 10 hbox-> setMargin(6);11 hbox->setSpacing(6); 12 QSpinBox *spinBox=yangi QSpinBox(hbox); 13 QSlider *slider=yangi); 15 slider->setRange(0, 130); 16 QObject :: ulanish (spinBox, SIGNAL (valueChanged (int)), 17 slayder, SLOT (setValue (int))); (valueChanged(int)), 19 spinBox, SLOT(setValue(int))), 20 spinBox->setValue(35); 21 app.setMainWidget(hbox); 22 hbox->show(); 23 qaytar app.exec( );24) 8-11-qatorlar QHBox-ni yarating va yoping. Oyna sarlavhasiga matn kiritish uchun setCaption() ga qo'ng'iroq qiling. Va keyin biz mos vidjetlar orasidagi bo'sh joyni (6 piksel) tiklaymiz.

12 va 13-qatorlarda QSpinBox va QSlider yaratiladi va QHBox Vlasnik sifatida tayinlanadi.

QSpinBox va QSlider vidjetlarining joylashishini ham, kengayishini ham aniq belgilamaganlarni hayratda qoldirmadi, badbo'y hid QHBox o'rtasida chiroyli tarzda yoyilgan edi. tsgogo i tayinlash QHBox uchun Vlasne. Vín vykonuê avtomatik ravishda tegishli vidjetlarni joylashtirish, ularga joylashtirish va joylashish koordinatalarini belgilash, víd í̈khníh mumkin bo'lgan vlaštuvan. Qt-da QHBox-ga o'xshash ko'plab sinflar mavjud bo'lib, ular bizga vizual komponentlarning holatini qo'lda sozlash va o'lchamini o'zgartirish bilan muntazam ishda yordam beradi.

14 va 15-qatorlarda lichnik va pastning ruxsat etilgan almashinuvi o'rnatiladi. (Biz ishonch bilan tan olishimiz mumkinki, bizning stenografiyamiz 130 yilni bosib o'tishi dargumon.) Ikki connect() viki, 16-19-qatorlarda nom bayrog'ini sinxronlashtiradi, shuning uchun nega badbo'y hid har doim bir xil ma'noga ega bo'lishi kerak. Vidjetlardan birining qiymati o‘zgarganda, u boshqa vidjetning setValue(int) uyasiga mos kelish uchun valueChanged(int) signalini yuboradi.

20-qatorda lichnikning asosiy qiymati (35) o'rnatiladi. U o'tkazilganda, o'zgaruvchi kirish argumenti qiymatiga asoslanib, 35 ga teng bo'lgan valueChanged(int) signalini bekor qiladi. Bu raqam QSlider vidjetining setValue(int) uyasiga uzatiladi, u qiymatni o'rnatadi. vidjet 35 ga teng. Agar valueChanged(int) signali allaqachon yuborilgan boʻlsa, uning baʼzi qiymatlari keskin oʻzgargan va shu tarzda QSpinBox vidjetiga setValue(int) uyasi chaqirilgan. Birinchi marta lichilnik signal yubormadi, uning ma'nosining parchalari va shunga o'xshash 35. Shu tarzda rekursiv rekursiya saqlanadi. Malyunok 1.6 vaziyatni tasvirlaydi.

Chaqaloq 1.6. Bir ma'noning o'zgarishi boshqasini o'zgartirishni talab qiladi.


22 ta QHBox qatorida ko'rinadigan bo'lishga harakat qiling (bir vaqtning o'zida vidjetlar yordamida).

Qt interfeysini shakllantirishga yondashuv tushunish uchun yanada sodda va juda moslashuvchan. Yovvoyi tarzda, dasturchi kerakli vidjetlarni tanlaydi, ularni joylashtirish joylari (maketlari) o'rtasiga qo'yadi, go'yo o'z chizig'idan vidjetlarni joylashtirish va vidjetlarning kuchini olish uchun. Yakuniy bosqichda vidjetlarning o'zaro aloqalari signallar va uyalar mexanizmi orqali o'rnatiladi, go'yo ular dinamik interfeysining xatti-harakatlarini eshitadi.

1.3. Ilg'or tizimdan robot.

Dovidkov tizimi Qt - ehtimol har qanday sotuvchining eng muhim vositasi. Von ushbu kutubxonaning barcha sinf funktsiyalarini tavsiflaydi. (Qt 3.2 hujjatlari 400 dan ortiq sinflar va 6000 funksiyalarning tavsiflarini o'z ichiga oladi.) Bu kitobda Qt sinflari va funktsiyalari juda ko'p, ammo u to'liq emas. Shuning uchun siz ilg'or Qt tizimi bilan mustaqil ravishda tanishishingiz kerak.

Vidjet uslublari
Skrinshotlar, Windows XP operatsion tizimida bachili, buli otrimani. Biroq, vidjetlarning joriy ko'rinishi dastur ishga tushirilgan platformaga qarab o'zgaradi. Boshqa tomondan, Qt har qanday qo'llab-quvvatlovchi platformalarning eski ko'rinishini taqlid qilishi mumkin.



Ushbu maqolada mening C ++ ning eng keng tarqalgan shakllaridan eng oddiy qo'shimchalarni yaratish tavsifi mavjud. Yana bir bor aniq aytmoqchiman: "forma" C ++ qo'shimchalarini ishlab chiqish Microsoft Visual Studio'da joriy etiladi (uni asosiy raqobatchi Borland Software ko'radi). Warto, Visual Studio'da shakllar bilan qo'shimchalar yaratishning ikkita usuli borligini anglatadi, qaror yangi loyihani yaratish vaqtida qabul qilinadi.

Ulardan birinchisi grafik interfeysni amalga oshiradigan va Microsoft.NET Framework bilan mos keladigan Windows Forms. Ushbu qo'llanma sizga Microsoft Windows interfeysi elementlariga kirish va yadro kodida Win32 API o'ramini yaratish imkonini beradi. O'z fikrlarini yanada oqilona shaklda ifodalash uchun Daniya pidxidi konsoldan keyingi qo'shimchaga ko'proq o'xshaydi, lekin biroz ko'proq katlanmış. vikorist shakli.

Microsoft Foundation Classes (MFC) kutubxonalariga asoslanishning yana bir usuli bu dastur asosini yaratish vazifasini o'z zimmasiga olishdir. Avvalo, MFC-dan tashqari vikorist naqsh MVC (Model-View-Cont roller). Daniya birinchisidan ko'ra ko'proq yig'iladigan, lekin unga o'ralib, siz osongina turli xil qo'shimchalar uchun ramka yaratishingiz mumkin, masalan, matn muharriri yoki Ribbon komponentini burishingiz va MS Office 2010 ko'rganingizdek menyu yaratishingiz mumkin.

MS Visual Studio'da dastur yaratish

Yangi dastur yaratamiz: File->New->Project. Bir qarashda, siz Windows Forms ilovasini bilib olishingiz va tanlashingiz, nom berishingiz (ilova1) va yangi loyihani tasdiqlashingiz va "OK" tugmasini bosib yaratishingizni tasdiqlashingiz kerak.

Avvalo, vositachi dasturlash holda rozpochat, yo'l nima tushunish uchun keyingi. Podiya tse diya, qo'shiq onglari uchun scho vídbuvaêtsya. Siz ishlatishingiz mumkin bo'lgan eng oddiy (va eng keng va) Load, Click ... ulardan ba'zilarini ko'rib chiqamiz:

  • Faollashtirilgan - elementni faollashtirish soatini belgilaydigan podia.
  • Bosing - elementni bir marta bosish aybdor.
  • DoubleClick - elementni bosing.
  • HelpRequested - tugmani bosganda yordam .
  • Bo'yoq - Agar element qayta bo'yalgan bo'lsa, viniklash.
  • MouseLeave - podíya spratsovuê, agar kursor element orasida qolsa.

Quvvat elementi ushbu turdagi bo'lishi kerakligini unutmang. Ob'ekt uchun mavjud bo'lgan barcha shakllarni ko'rib chiqish uchun siz uni ko'rishingiz va vakolat oynasida blister belgisini tanlashingiz kerak. Quyida Form1 elementi uchun qisman bo'lim mavjud. Yuklash pastki dasturi uchun bachiti qilish mumkin bo'lganligi sababli, Form1_Load funksiyasi tanlangan, shuning uchun forma olinganda ushbu funktsiyaga joylashtirilgan kod bosiladi.

Form1.h faylini oching, quyidagi kod bo'ladi:

Xususiy: System::Void Form1_Load(System::Object^ jo'natuvchi, System::EventArgs^ e)( )

Bu Form1_Load funksiyasining o'zi, chunki u forma yozib olinganda ishlatiladi. Shaklga TextBox komponentini qo'shish orqali narsalarni almashtiramiz.

Kim uchun, manba shaklini oching va yoga qarang. Keyin asboblar paneli panelini tanlang va TextBox komponentini shaklga torting. Form1_Load funksiyasini quyidagicha o'zgartiring:

Xususiy: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) ( textBox1->Text = "Salom, World!"; //textBox1 - qutiga qo'shgan matn nomi)

Loyihani ishga tushiring, natijalar quyidagi bildirishnomani ko'rsatishi mumkin:

Hammasi hozircha, keyingi darslarda davom eting.

Oxirgi yangilanish: 26.05.2019

Xamarin.Forms vizual interfeysi uch tomondan iborat. Sahifa Page sinfining ob'ekti bo'lib, u butun ekran maydonini egallaydi. Tobto mobil ilovaning ekranida bo'lganlar bir xil tomonda. Dastur bir yoki bir nechta tomonlarga ega bo'lishi mumkin.

Sahifa odatda konteyner maketlaridan birini qabul qiladi, unda tugmalar va matn maydonlari kabi standart vizual elementlar, shuningdek, joylashishning boshqa elementlari ularning diapazoniga joylashtiriladi.

Ko'p mavzularni, HelloApp loyihasini yaratishni ko'rib chiqing (aks holda biz yangisini yaratamiz). Qulfning orqasida butun interfeys App.xaml.cs faylida joylashgan va oqim dasturini ifodalovchi App sinfida yaratilgan:

Yogo blokirovkasi kodi:

Tizimdan foydalanish; Xamarin.Forms yordamida; Xamarin.Forms.Xaml yordamida; nomlar maydoni HelloApp ( umumiy qisman sinf Ilova: Ilova ( umumiy App() ( InitializeComponent(); MainPage = new MainPage(); ) himoyalangan bekor qilish bekor OnStart() ( // Ilovangiz ishga tushganda boshqarish ) himoyalangan bekor qilish bekor OnSleep() ( / / Ilovangiz uyqu holatida bo'lganda boshqarish ) himoyalangan bekor qilish void OnResume() ( // Ilovangiz davom etganda ishlang ) ) )

Ilova sinfi ishchisi konstruktordan boshlanadi, ob'ektni ishga tushirishni boshlash uchun InitializeComponent() usulini chaqiradi va keyin MainPage vakolatini o'rnatadi. Ilova sinfining vakolati orqali dasturning asosiy tomoni o'rnatiladi. Bunday holda, unga HelloApp.MainPage klassi tayinlanadi, bu MainPage.xaml va MainPage.xaml.cs fayllariga tayinlangan bir xil sinfdir.

Alesey yo'li yolg'iz emas. Xamarin.Forms C# kod yordamida ham, html ga o'xshash xaml mov yordamida deklarativ tarzda vizual interfeys yaratishga imkon beradi yoki ularni birlashtira olasiz.

C# kodidan interfeys yaratish

Dodamo, StartPage deb nomlangan C# sinfi bilan HelloApp loyihasiga.

Men bu sinfda shunday joy muhim:

Xamarin.Forms dan foydalanish; HelloApp nom maydoni ( StartPage sinfi: ContentPage ( umumiy StartPage() ( Yorliq sarlavhasi = yangi Label() ( Matn = "Salom Xamarin shakllari" ); this.Content = sarlavha; ) ) )

Bu sinf ContentPage sinfiga kiruvchi tomonni ifodalaydi. Konstruktor matn bilan yorliq yaratadi, chunki u yon tomon sifatida o'rnatiladi (this.Content = header).

Bosh sahifani boshlang'ich sahifa sifatida belgilash uchun Ilova sinfini o'zgartiring:

Xamarin.Forms dan foydalanish; nom maydoni HelloApp ( umumiy qisman sinf Ilova: Ilova ( umumiy App() ( InitializeComponent(); MainPage = new StartPage(); ) himoyalangan bekor qilish bekor OnStart() ( // Ilovangiz ishga tushganda boshqarish ) himoyalangan bekor qilish bekor OnSleep() ( / / Ilovangiz uyqu holatida bo'lganda boshqarish ) himoyalangan bekor qilish void OnResume() ( // Ilovangiz davom etganda ishlang ) ) )

Endi Asosiy sahifaning kuchi StartPage-ning aqlli tarzda katlanmış tomoniga ishora qiladi.

Bu, shuningdek, Visual Studio eng oddiy kodli tomonlarning yangi sinflarini qo'shish uchun shablon tayyorlayotganligini anglatadi. Shunday qilib, yangi sahifa qo'shish uchun yangi element qo'shganda Kontent sahifasi shablonini (C#) tanlashingiz kerak:

Ushbu sinf yechimning asosiy loyihasiga qo'shiladi (HelloApp misolida).

Sinf tomoni matime keyingi kodini qo'shing:

Tizimdan foydalanish; vicorist System.Collections.Generic; System.Linq yordamida; vicorist System.Reflection.Emit; System.Text yordamida; Xamarin.Forms yordamida; nom maydoni HelloApp ( umumiy sinf Page1: ContentPage ( umumiy Page1() ( Content = New StackLayout ( Bolalar = ( Yangi yorliq ( Matn = " Salom sahifa " ) ) ) ) ) ) )

Bu sinf ContentPage tayanch sinfidan ham voz kechadi va MainPage sinfining yaratilishi bilan deyarli bir xil tashkilotdir.

Va dastur sinfida siz ushbu tomonni boshlang'ich sifatida belgilashingiz mumkin:

Xamarin.Forms dan foydalanish; HelloApp nom maydoni ( umumiy qisman sinf Ilova: Ilova ( umumiy App() ( InitializeComponent(); MainPage = new Page1(); ) //........... ) )

5

Men Nintendo DS uchun tugmalar, matn maydonlari va nisbatlar kabi GUI tizimining juda ko‘p turli xil versiyalarini yaratdim, lekin menga bu sinflarni Gui sinfining bir sinfiga biriktirish usuli ham kerak edi. bir zumda ekranda hamma narsani bir vaqtning o'zida bo'yab, va bir marta men barcha tugmalarni aylantiring, shuning uchun perevyriti, chi bo'l kabi tugmalarni bosdi. Mening taomim barcha sinflarni (masalan, tugmalar va matn maydonlari) bitta GUI sinfida tashkil qilishning eng yaxshi usulimi?

O'q, men o'ylaganimdek, bitta yo'l, lekin men to'g'risini bilmayman:

Tahrirlash: Men g'olib C++man.

Class Gui (ommaviy: void update_all(); void draw_all() const; int add_button(Button *tugma); // Qaytaruvchi tugma identifikatori void remove_button(int button_id); xususiy: tugma *tugmalar; int raqamli tugmalar; )

Ushbu kodda bir nechta muammolar bo'lishi mumkin, lekin men sizga o'zim xohlaganlar haqida xabar bermoqchiman.

  • 5 qadam
  • Tartiblash:

    Faoliyat

2

Kontent men nashr qilishni tanlaganlarimga ko'proq o'xshaydi, faqat meniki Sony PSP dasturlash uchun tan olingan.

Men bir necha soat davomida aylanib yurdim, ba'zi kitoblar va VTMlar bilan maslahatlashdim, oddiy ui tizimlari g'oyasi haqida nima va nima qilish kerak.

Class uiElement() ( ... virtual void Update() = 0; virtual void Draw() = 0; ... ) class uiButton() public: uiElement (... virtual void Update(); virtual void Draw() ; ... ) class uiTextbox() public: uiElement ( ... virtual void Update(); virtual void Draw(); ... ) ... // Boshqa ui elementlari sinfi uiWindow() ( ... void Yangilash (); void Draw(); void AddElement(uiElement *Element); void RemoveElement(uiElement *Element); std::list elementlar; ... ) void uiWindow::Update() ( ... uchun (roʻyxat ::iterator it = Elements.begin(); bu! = Elements.end(); it++) it->Update(); ... ) void uiWindow::Draw() ( ... uchun (roʻyxat ::iterator it = Elements.begin(); bu! = Elements.end(); it++) it->Draw(); ... )

tamoyil - oynani yaratish va yadro interfeysi elementlarini yangiga o'tkazish va kichiklarni chaqirish va eng muhim asosiy funktsiyalar usullarini yangilash.

Hali qiladigan ishim yo'q, chunki rasm kodi bilan bog'liq muammolarim bor. Kompyuter va PSP-da turli xil API-lar bilan men OpenGL va psp gu uchun o'rash kodini ko'rib chiqyapman.

Men yordam berishga umid qilaman.

0

Bir asosiy strategiya, eslatish uchun, ehtimol kompozit naqsh. Past darajada, biz sizga barcha GUI obyektlarini (ob'ektlar to'plamini) yaratilgandan keyin osonroq qayta ishlashga ruxsat berishimiz mumkin. Lekin men GUI grafik interfeysi dizayni bilan nima aloqasi borligini bilmayman, bu faqat to'g'ri yo'nalishni, loyiha uchun manba kodini bilish uchun joy. WxWidgets - chiqish kodiga ega bo'lgan platformalararo grafik interfeys. Loyihangizga omad!

0

3

Sokin, hto zatsykavleniya, eksa my z vídkritim vyhídnym kodi uchun, DS uchun BSD litsenziyali GUI asboblar to'plami:

Subject2k haqida xabar berish yaxshi, lekin men uiElement asosiy sinfidagi bolalar interfeysi elementlaridan qasos olish uchun ona kodini jiddiy tavsiya qilaman. Tse srazok, buning uchun men Vupsida tikdim.

Yakscho wi emas Kodni asosiy sinfda yangilang, chunki katlama, pastga matn qutisi va tugmani amalga oshirishda jiddiy muammolar mavjud. Masalan:

  • Jadvalli panellar o'zaro vinyatkovist tanlovni ta'minlaydigan koristuva interfeysining yagona elementiga guruhlangan tugmalar to'plami sifatida modellashtirilishi mumkin;
  • Radiostansiyalar guruhlari (bir soat bilan);
  • Smogi aylantirish slayder/chute elementi va yuqoriga/pastga tugmalari sifatida taqdim etilishi mumkin;
  • Qaytib olinadigan ro'yxatlar konteyner ko'rinishida va koristuvach interfeysidagi dekal elementlarda taqdim etilishi mumkin.

Bundan tashqari, xotira xotirasi, DS 66 MGts chastotali protsessor va 4 MB RAMga ega bo'lishi mumkin, bu sizning dasturingizni saqlash uchun ham, yuklab olish uchun ham ishlatilishi mumkin (DS-disklar ishga tushirishdan oldin RAMga yuklanadi). Tizim qanday qurilganiga qarash haqiqatan ham sizning aybingiz, ya'ni STL ishlamaydi. Men Woopsi-dan STL-ni yuklab oldim va 0,5 MB kattalashtirishni saqladim. Qavat standartlari ortida juda boy emas, lekin hali ham 1/8 eng qulay DS xotira, spozhivaya STL-smyttya.

Men o'z blogimda koristuvach interfeysini yozishning butun jarayoni haqida xabar berdim:

U ikkita algoritm tavsifini o'z ichiga oladi, men ularni ekranni qayta bo'yash uchun o'ylab topdim, bu grafik interfeysni yaratishning qiyin qismidir (biri shunchaki to'rtburchaklarni tepaga bo'lib, ko'rinadigan joylarni eslab qoladi, ikkinchisi esa BSP vikorist daraxti). tushunish uchun samaraliroq va soddaroq), toscho d.

Windows 7