Soovitused graafiliste kasutajaliideste loomiseks. tuum. Akendega vidinaklasside puu juur. See klass määratleb kõikidele objektidele ühised omadused, nagu vidina akna suurus ja selle asukoht ekraanil. Sisaldab subc

Reegel 2: vähendage kasutaja koormust

Reegel 3: muutke liides ühilduvaks

Juhised

Programm "Korrastatud Start Menu"

Järeldus

Kirjandus

Sissejuhatus

"Disaineri kuldreegel on: "Ära kunagi tee teistele seda, mida nemad sulle tegid."

Tracey Leonard

Miks on vaja järgida kasutajaliidese ehitamise põhimõtteid?

Tarkvara tuleks arendada arvestades kasutaja nõudeid ja soove – süsteem peab kohanema kasutajaga. Seetõttu on disainipõhimõtted nii olulised.

Arvutikasutajad võivad saada positiivseid kogemusi, mis sisendavad kindlustunnet nende võimete vastu ja tõstavad arvutiga töötades kõrget enesehinnangut. Nende tegevust arvutiga võib iseloomustada kui "edu sünnitab edu". Iga positiivne kogemus programmiga suhtlemisel võimaldab kasutajal laiendada tarkvaraga tutvumise piirkonda ja tõsta oma pädevustaset. Hästi läbimõeldud liides, nagu hea õpetaja ja õpikud, tagab viljaka suhtluse kasutaja ja arvuti vahel. Edukad liidesed võivad isegi aidata inimesel tavapärasest kasutatavate programmide ringist välja tulla ja uusi avastada, süvendada arusaama liideste ja arvutite toimimisest.

Liidese kujundamise põhimõtted on kõrgetasemelised kontseptsioonid ja esitused, mida saab tarkvara kujundamisel kasutada. Peate kindlaks määrama, milline põhimõte on teie süsteemi jaoks kõige olulisem ja vastuvõetavam.

Projekteerima asudes on vaja esile tõsta oluline põhimõte, mis saab kompromisside otsimisel määravaks. Kõigi disainipõhimõtete järgimine võib viia selleni, et mõnes olukorras ei õigusta see ennast ja mõjutab lõpptulemust negatiivselt. Põhimõtted on tegevusjuhised.

Kasutajaliidese kujundamise kolm põhimõtet on sõnastatud järgmiselt:

1) kasutajaliidese juhtimine;

2) kasutaja mälu koormuse vähendamine;

3) UI järjepidevus.

Kust leida kasutajaliidese disaini põhimõtteid

Hansen esitas esimese nimekirja disainipõhimõtetest. Põhimõtted on järgmised:

1) tunneb kasutajat;

2) vähendada meeldejätmist;

3) optimeerida toiminguid;

4) parandage vead.

Paljud suured operatsioonisüsteemide tootjad toovad turule oma uusi tooteid, avaldavad asjakohaseid juhendeid ja juhiseid. Need väljaanded paljastavad liidese kujundamise lähenemisviisi põhimõtted. Juhendid avaldas Apple Computer, Inc. (1992), IBM Corporation (1992), Microsoft Corporation (1995) ja UNIX OSF/Motif (1993).

Lugejad saavad neid väljaandeid kasutada õppevahendina. Liidese terminoloogia võib juhendites erineda, kuid materjali adresseerimine, keerukusaste ja kirjeldatud kasutajaliidese põhimõtted on kõigi raamatute puhul samad.

Põhimõtete järgimise tähtsus

"Liidese mitteühildumine võib suurettevõttele maksta miljoneid dollareid tootlikkuse ja kulude kaotust. tehniline abi"- Jesse Briest.

Need põhimõtted kehtivad kogu tarkvara ja riistvara, igat tüüpi ja tüüpi liideste puhul. Neid arendati üsna pikka aega: tehti uuringuid tarkvaraliidese vallas, tehti arendustööd, intervjueeriti paljude arvutiplatvormide, sealhulgas Macintoshi ja PC kasutajaid.

Need põhimõtted on ajaproovile ja uute arvutitehnoloogiate tulekule vastu pidanud. Jakob Nielsen märkis: "Põhimõtted jäävad fundamentaalseks isegi siis, kui programmil on futuristlik 3D-disain koos "DataGlove"-ga sisendiks, liikumise tuvastamiseks ja reaalajas videopiltideks. Need on asjakohased, kuna väljendavad dialoogi põhiideed masin kasutab käske" .

Nende põhimõtete tõlgendamine sõltub sellest riistvara, operatsioonisüsteem, kasutajaliidese komponendid ja selle ülesanded. Sageli tühistab äriotsus disainerite põhimõtete kasutamise. Ka kasutaja- ja disainermudelid on erinevad ning mõjutavad põhimõtete rakendamist. Mõnel verstapostid projekti arendamine võib tekitada küsimuse: "Mis saab edasi?". Vastus peaks olema: "Mida kasutaja tahab!".

Otsuse liidese loomise optimaalsete põhimõtete valimise kohta peaksid kõik disainimeeskonna liikmed ühiselt välja töötama. Need otsused peaksid aitama parandada tarkvaratoodete ostmist ja arendamist.

Kasutajaliidese kujundamise reeglid

"Tehke see lihtsamaks, kuid mitte primitiivsemaks."

Albert Einstein

Reegel 1: andke juhtimine kasutajale

Kogenud disainerid võimaldavad kasutajatel mõnda ülesannet oma äranägemise järgi lahendada. Arhitektid peavad kompleksse hoonekompleksi ehitamise lõpetamisel rajama nende vahele jalakäijatele rajad. Siiani nad täpselt ei tea, kust inimesed alasid läbivad. Seetõttu ei rajata teid kunagi üheaegselt hoonete ehitamisega. Majadevahelistele platvormidele on paigutatud sildid kirjaga: "Palun kõndige murul." Mõne aja pärast naasevad ehitajad ja alles nüüd täidavad vastavalt elanike "tahtele" läbipekstud teed asfaldiga.

Põhimõtted, mis annavad kasutajale süsteemi üle kontrolli:

1) kasutama režiime heaperemehelikult;

2) anda kasutajale võimalus valida: töötada kas hiire või klaviatuuriga või nende kombinatsiooniga;

3) võimaldama kasutajal tähelepanu koondada;

4) näidata sõnumeid, mis aitavad teda tema töös;

5) luua tingimused koheseks ja tagasipööratavaks tegevuseks, samuti tagasisideks;

6) tagama sobivad marsruudid ja väljapääsud;

7) kohandama süsteemi erineva väljaõppetasemega kasutajatele;

8) muuta kasutajaliides arusaadavamaks;

9) anda kasutajale võimalus kasutajaliidest oma maitse järgi kohandada;

10) võimaldama kasutajal liideseobjektidega vahetult manipuleerida;

Kasutage režiime targalt

Režiimid pole alati halvad. On vaja võimaldada inimesel valida endale vajalikud režiimid. Liides peaks olema nii loomulik, et kasutajal oleks nendega mugav töötada. Kasutaja ei mõtle tekstitöötlusprogrammis töötades sisestus- või ülekirjutamisrežiimile üleminekule - see on üsna ratsionaalne ja loomulik.

Lubage inimesel kasutada hiirt ja klaviatuuri

Võimalus töötada klaviatuuriga, kasutades hiire asemel klaviatuuri. See tähendab, et kasutajal on lihtsam töötada, ta lihtsalt kas ei saa seda kasutada või tal pole seda. Tööriistaribad on loodud teie töö kiirendamiseks hiire kasutamisel. Klaviatuuriga töötades neid aga kätte ei saa – sellisteks puhkudeks on ette nähtud "rippmenüüd".

Luba kasutajal tähelepanu vahetada

Ärge sundige kasutajaid alustatud töövooge lõpetama. Andke neile valik – tühistage andmed või jätate need alles ja minge tagasi sinna, kus pooleli jäid. Andke kasutajatele võimalus programmis töötamise protsessi juhtida.

Näita selgitussõnumeid ja tekste

Kasutage kogu liideses kasutajasõbralikke termineid. Nad ei pea teadma bittide ja baitide kohta!

Sõnumites ja kutsetes tuleks valida õige toon. sama oluline on kindlustada probleemide ja vigade vastu. Vale terminoloogia ja vale toon panevad kasutajad tekkivates vigades iseennast süüdistama.

Pakkuge kohest ja pöörduvat tegevust ja tagasisidet

Iga tarkvaratoode peab sisaldama funktsioone UNDO ja REDO. Kasutajat tuleb sellest teavitada see tegevus ei saa tagasi võtta ja võimaluse korral lubage see alternatiivseks toiminguks. Hoia inimest pidevalt kursis hetkel toimuvaga.

Pakkuge selged teed ja väljapääsud

Kasutajad peaksid nautima mis tahes tarkvaratoote liidest. Isegi tööstuses kasutatavad liidesed ei tohiks kasutajat hirmutada, ta ei tohiks karta nuppude vajutamist ega teisele ekraanile kolimist. Interneti-invasioon on näidanud, et navigeerimine on peamine interaktiivne tehnika Internetis. Kui kasutaja saab aru, kuidas WWW-s soovitud lehele jõuda, siis on 80-protsendiline tõenäosus, et ta saab liidest aru. Inimesed õpivad väga kiiresti, kuidas brauseriga töötada.

Kohandage erineva oskustasemega kasutajatega

Ärge "ohverdage" kogenud kasutajaid tavaliste kasuks. Neile on vaja tagada kiire juurdepääs programmi funktsioonidele. Kui nad on harjunud kasutama ühte makrot, ärge tüütage neid toimingu sooritamiseks mitme sammu läbimisega.

Muutke kasutajaliides "läbipaistvaks"

Kasutajaliides on tarkvaratoote "müütiline" osa. Kell hea projekt kasutajad isegi ei tunne selle "kohalolu". Kui see on halvasti kujundatud, peavad kasutajad selle nimel isegi palju pingutama tõhus kasutamine tarkvaratoode. Liidese ülesanne on aidata inimestel tunda end arvutis "sees", vabalt manipuleerida ja objektidega töötada. Seda nimetatakse "läbipaistvaks" liideseks!

Märkus: Uurime vidinaid – graafilise kasutajaliidese visuaalseid elemente, nende paigutust, suurusepoliitikat, signaali-pesa ühendusi, graafilise liidese elemente ja nende kasutamist.

13.1 Vidinad

Vidinad on visuaalsed elemendid, mis moodustavad graafilise kasutajaliidese.

Vidinate näited:

  • Nupp (klass QPushButton );
  • Silt (klass QLabel);
  • Sisestusväli (klass QLineEdit);
  • Numbriline loenduri väli (QSpinBox klass);
  • Kerimisriba (QScrollBar klass).

Qt-l on kasutamiseks saadaval umbes 50 valmisklassi graafilisi elemente. Kõigi vidinate vanemklass on QWidget klass. Sellest on päritud kõik visuaalsete elementide peamised omadused, mida me hoolikalt kaalume. Alustame näitega graafilise liidesega programmide arendamise võimaluste uurimist.

Loome tühja projektifaili. Käivitage projektiviisard ja valige jaotisest Projektid (projektid). Muu projekt. Järgmisena valige projekti tüüp. Tühi Qt projekt. Lisage projektifailile järgmine sisu:

TEMPLATE = rakendus #Qt moodulid kasutame QT += vidinaid # Vidinate lisamise moodul (nõutav Qt5 jaoks). TARGET = vidin#Käivitatava faili nimi SOURCES += \ main.cpp

Nüüd loome lihtne programm aknaga, kus kuvame pealdise. Määrake akna suurus ja pealkirja tekst, samuti määrake pealkirja font. Selleks loome järgmise sisuga faili main.cpp:

#kaasa #kaasa int main (int lArgc, char * lArgv ) ( // Looge QApplication objekt, mis lähtestab ja konfigureerib aknaprogrammi, // juhib selle täitmist QApplication sündmusesilmuse abil lApplication (lArgc, lArgv); QLabel lLabel; // Loo QLabel vidin - silt lLabel.setText (" Ma olen vidin!"); //Sildi teksti lLabel.setGeometry(200, 200, 300, 150) määramine; //Mõõtmete määramine - asukoht (x, y) laius ja kõrgus . Seadke joondustekst lLabel.setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); //Fonti parameetrite määramiseks kasutatakse klassi QFont. //Valige Arial Blacki fondiperekond ja suurus 12. QFont lBlackFont(" Arial Black " , 12); lLabel. setFont(lBlackFont); //Sildi lLabel.show() fondi määramine; //Ekraanil sildi kuvamiseks kutsuge meetodit show() return lApplication.exec(); //Start programm käivitada exec() käivitab //loop sündmuste käsitlemise - programm ootab kasutaja toiminguid ja teostab nende töötlemist. )

Nagu näete, on Qt-s liideseid moodustavatel elementidel oma asukoht ja suurus - nn "geomeetria" - ja seega hõivavad nad ekraanil vastava ristkülikukujulise ala (vt joonis 13.1). Samuti on igal elemendil sätted, mis määravad selle käitumise ja välimuse.


Riis. 13.1.

Struktuuri loomiseks korraldatakse vidinad "osa – terviku" põhimõttel hierarhiasse. Kõik vidinad võivad sisaldada teisi vidinaid. Selline visuaalne element muutub selles sisalduvate elementide "vanemaks" (vanemavidinaks). Pange tähele, et selliseid seoseid ei tohiks segi ajada pärimisega C++, programmi klassidevaheliste suhetega. Vidinate vahelised seosed on seosed objektide vahel. Sellel suhtel on mitmeid tagajärgi:

  • vanemelement vastutab alamelemendi kustutamise eest: kui vanemvidin kustutatakse, kustutab see automaatselt kõik alamelemendid;
  • vanemvidin asetab lapsvidinad enda sisse, vanemast väljapoole jäävad alamvidinate osad jäävad nähtamatuks;
  • osa vanemvidina olekust antakse edasi alamvidinatele – see puudutab mõningaid visuaalsele elemendile rakendatavaid omadusi (nähtavus, tegevus) ja stiile.

Vidinad, millel pole vanemat (vidinad kõrgeim tase), näevad programmis välja nagu eraldi aknad. Kaaluge näidet. Helistame uus projekt VanemNäide . Projektifail sisaldab GUI projekti tavalisi sätteid:

TEMPLATE = rakenduse SIHT = ParentExample QT += vidinad

Peaaknana kasutatava vidina jaoks loome uue klassi. Selle kategooria jaoks Failid ja klassid (failid ja klassid) valige jaotis C++ ja valige C++ klass (vt joonis 13.2).

Järgmine samm on luua aknale mõned elemendid. Selleks ava fail parentwidget.cpp ja muuda klassi konstruktori koodi. Elementide kuvamiseks piisab, kui luua need klassi konstruktoris ja määrata nende isaks ParentWidget. Parenterwidget.cpp kood näeb välja selline:

#include "parentwidget.h" #include #kaasa #kaasa ParentWidget::ParentWidget (QWidget * vanem) : QWidget (parent) ( //Loo silt, määrates vanemvidina - see, st klassi ParentWidget eksemplar. QLabel * lLabel=uus QLabel (see); // Asukoht emavidina ülemise vasaku nurga suhtes lLabel ->setGeometry(50, 0, 100, 30); lLabel ->setText("TextLabel"); //Tekst sildil. //Looge nupp, määrake vanem , geomeetria ja tekst QPushButton * lPushButton = uus QPushButton (see); lPushButton->setGeometry (50, 50, 100, 30); lPushButton->setText (" PushButton "); /, Määra väli "inparent" , geomeetria ja tekst QLineEdit * lLineEdit = uus QLineEdit ( see); lLineEdit -> setGeometry(50, 100, 100, 30); lLineEdit -> setText("LineEdit"); lLineEdit(teksti valimine/Select ->); sisestusväljal (lihtsalt näiteks) //Lõpuks muutke vanemvidina suurust setGeometry (x (), y (), 300, 150); //ja määrake akna pealkirja tekst setWindowTitle (" emavidina näide "); )

Kuna vanemelement on ParentWidget , on selle sees silt (QLabel ), nupp (QPushButton ) ja tekstiväli (QLineEdit). Alamvidinate asukoht määratakse vanema vasaku ülanurga suhtes. Seda saab hõlpsasti kontrollida, muutes meie programmi akna suurust ja asukohta. Pange tähele, kuidas lõime uue operaatori abil hunniku mällu kasutajaliidese elemendid. See tagab, et elemente ei eemaldata pärast ParentWidgeti konstruktori valmimist.

Traditsiooniline graafilise kasutajaliidese lähenemine on seotud Sutherlandi, Newmani jt töödega, milles interaktsioon põhineb regenereeritud graafilise ekraani ja valguspliiatsi kasutamisel. Graafilise dialoogi edasine areng on seotud edusammudega interaktiivsete arvutigraafikasüsteemide vallas, mis tõi kaasa regulatsiooni rahvusvaheliste standardite kujul.
GKS on esimene rahvusvaheline graafikastandard. See oli "tööjaama" kontseptsiooni pioneeriks ja loogilised seadmed sisend (klaviatuur, valik, lokaator, hindaja, osuti, koordinaatjärjestuse sisend). Kahjuks eostatud paradigma ülimuslikkuse ajal vektorjoonistus. Siit ka dialoogitoe nõrkus: võimetus sisestada uusi seadmeid või muuta seadme pilti ekraanil isegi rakendusprogrammist (kasutaja graafika pakett), mis toob kaasa vajaduse kasutada dialoogi korraldamisel enamasti tegelaskuju. Dialoogi rakendamine GKS-is on rakendusprogrammi eesõigus, eraldiseisva kujundamise võimalust ei eeldata.
Graafika teine ​​suund - rastergraafika avaldas äärmiselt suurt mõju kogu järgnevale interaktiivsete süsteemide arengule. Kõik kaasaegsete tööjaamade kasutajaliidese põhifunktsioonid on tuletatud Xerox PARCi tööst: aknahaldus

  • graafiliste sümbolite ("ikoonide") kasutamine objektide kujutamiseks
  • suhtlemisstiil, mida nimetatakse otseseks manipuleerimiseks
  • hiire populaarsus ekraani positsioneerimisseadmena
  • objektorienteeritud programmeerimisstiil.
Sellest ajast alates on kasutajaliideste loomise ja haldamise tööriistade klassifitseerimise süsteemi käsitletud kolmel tasandil:
  1. aknahaldussüsteemid (WMS - Window Manager System);
  2. spetsiaalsed tööriistad;
    • tavaline (MacIntosh, SunView...)
    • objektorienteeritud (Smalltalk-80, Andrew, InterView)
  3. kasutajaliidese haldussüsteemid.
Järgmised jaotised annavad lühikesed omadused, kõigi nende tasemete olek ja funktsionaalne kirjeldus.

Aknahaldussüsteemid (WMS)

Mitme akna tehnoloogia annab kasutajale juurdepääsu rohkemale teabele, kui on võimalik ühe ekraaniga. Windows võimaldab juurdepääsu mitmesugustele teabeallikatele. Kasutaja saab kombineerida mitmest allikast pärinevat teavet, uurida teavet erinevatel detailsustasemetel. Mitme programmi režiimis on võimalik hallata mitut paralleelsed ülesanded. Iga ülesande sisend ja väljund kuvatakse eraldi akendes, mis võimaldab kasutajal igale ülesandele vastavalt vajadusele keskenduda.
WMS, aknaga seotud haldusressursside töökeskkond, toetab:

  • kattuvad aknad (ekraani ristkülikukujulised alad);
  • mitmesugused sisendseadmed (digitaalsed ja analoogsed);
  • kursorid
  • fonte.
Operaatori ja rakendusprogrammi poolne liides sisaldab käske akende avamiseks/hävitamiseks, nende suuruse ja asukoha muutmiseks, üles tõstmiseks, akna ikooniks kokkutõmbamiseks ja taastamiseks. Sisaldab graafilist väljundteeki (ainult põhiprimitiivid) ja sündmuste töötlejat. Seega on kasutajaliidese rakendamiseks mõned mehhanismid.
WMS-i rakendusi on kahte tüüpi: baassüsteem(Kernel System), mis töötab ühes masinas, ja võrk (Network oriented), mis on realiseeritud klient-serveri mudeli alusel.

Kasutajaliidese tööriistakomplekt

Saada oma head tööd teadmistebaasi on lihtne. Kasutage allolevat vormi

Üliõpilased, magistrandid, noored teadlased, kes kasutavad teadmistebaasi oma õpingutes ja töös, on teile väga tänulikud.

postitatud http://www.allbest.ru/

postitatud http://www.allbest.ru/

VENEMAA FÖDERAATSIOONI FÖDERAALNE HARIDUSAMET

Riiklik õppeasutus

erialane kõrgharidus

Venemaa riiklik humanitaarabiülikool

Infoteaduse ja turvatehnoloogiate instituut

Üldinformaatika osakond

TEST

INFOTEHNOLOOGIALE

GRAAFILISED LIIDESED JA VAHENDID NENDE ARENDAMISEKS

Lisitšenok Konstantin Viktorovitš

Eksternõpe 3 aastat õpet

(4-aastane õppeperiood)

Rühm b (infosfäär)

Teaduslik nõunik,

Tehnikateaduste kandidaat, õppejõud: Mashintsov E.A.

Moskva 2005

Plaan

Sissejuhatus

X aknasüsteem

Süsteemi üldine paigutus X aken

Programmeerimine X Toolkit Intrinsic (Xt) raamatukoguga

Xt objektid, nende klassifikatsioon

Teabeallikad

Sissejuhatus

Kui 1959. aastal UNESCO infotöötluse konverentsil pakkus hr Strechi esimest korda välja ajajagamise režiimi arvutiprobleemide lahendamiseks, siis sellest hetkest on tavaks lugeda interaktiivse andmetöötluse algust ja sellest tulenevalt ka inimese ja masina liidese uurimine. Arvutite võimsuse kasvades kasvasid ka vestlustarkvara komponendi maksumus. Masina efektiivsuse probleemi on teravdanud interaktiivsust graafikaga kombineerivate tööjaamade kiire turule tulek. Mõiste tõhusus on sellest ajast alates oma tähendust muutnud - kui varem peegeldas see selliseid omadusi nagu protsessori aeg ja hõivatud mälu maht, siis nüüd mõistetakse seda kui arendamise lihtsust, hooldamise lihtsust ja programmiga töötamise mugavust. Seetõttu on kasutajaliidese uurimis- ja arenduskulud põhjendatud.

Iga rakendustarkvara arendamine hõlmab reeglina kasutajaliidese loomist. Alates kõige kaasaegsemast kasutajaliidesed sarnaste ideede põhjal aktiivne kasutamine"hiir", keskenduge objektidele, graafikale jne. - protsesside ja nähtuste jäljendamine, võimalus kasutada igale inimesele tema igapäevaelust tuttavaid algoritme), siis on võimalus ja vajadus töötada välja abitarkvara, mis on mõeldud selliste "standardsete" liideste või õigemini nende aluste loomiseks. .

Teisest küljest nõuavad paljud ja mitmekesised riistvara- ja süsteemiplatvormid, millel see tarkvara peab töötama, selle kaasaskantavust tasemel lähtekood. Ülaltoodud nõuded viivad loogiliselt ideele kaasaskantavast ühtsest tarkvaratööriistakomplektist kasutajaliideste loomiseks või, kui pidada silmas lõplikku rakendustarkvara toodet, siis süsteemi (mooduli, ploki), mis haldab (haldab, käitab, hooldab, haldab) kasutajaliides.

Selliseid tööriistu (kasutajaliidese tööriistad) saate liigitada vastavalt skeemile:

* Tekstipõhised ekraanisüsteemid (curse, ncurse jne).

* Graafilised ekraanisüsteemid.

* Mitme akna süsteemid (WMS):

* tähemärgile orienteeritud (tekst);

* graafika;

* UI tööriistakomplektid

* traditsiooniline;

* objektorienteeritud;

* UIDS - User Interface Development System - kasutajaliidese arendussüsteem (tööriistakomplekt);

* UIMS – User Interface Management System – kasutajaliidese (haldus)süsteem (tarkvaramoodul – lõpptoote lahutamatu osa koostoimes vastava UIDS-iga);

* UIDE – User Interface Development Environment – ​​kasutajaliidese arenduskeskkond.

See skeem ei pretendeeri süstemaatilisele klassifikatsioonile, pigem on see lihtsalt loendus.

Praegu tehakse suuri jõupingutusi meetodite väljatöötamiseks ja tööriistade loomiseks süsteemides nimega UIMS – User Interface Management System.

SüsteemX aken

X aken või lihtsalt X- on süsteem graafilise kasutajaliidese loomiseks, algselt - UNIX-i kasutavates arvutites. X loodi MIT-is (Massachusettsi Tehnoloogiainstituut). Versioon 11.6 (X11R6) on juba välja antud ja käivad ettevalmistused versiooni 7 väljalaskmiseks.

X Window eripäraks on selle arhitektuur – see on üles ehitatud klient-server skeemi järgi. Interaktsioon X-kliendi ja X-serveri vahel toimub vastava rakendustaseme protokolli – X-protokolli – raames. X Window on ükskõikne kasutatava transpordi suhtes, milleks võib olla kas kohalik UNIX-pesa või mis tahes võrk, näiteks TCP. See tähendab, et X klient ja X server võivad "elada" ka erinevates arvutites, st. programm suudab teostada graafilise info sisend-väljundit teise arvuti ekraanil ning X-kliendi ja X-serveri arhitektuuri erinevused ei mängi mingit rolli - seda annab X-protokolli standard. Süsteem annab masina ekraanile graafilise väljundi, võtab vastu signaale sisendseadmetelt, nagu klaviatuur ja hiir, ning edastab need programmidele. Tuleb märkida, et väljundseadmel võib olla rohkem kui üks ekraan. X annab väljundi ükskõik millisele neist. Kõik see: ekraan (ekraanid), sisendseadmed (klaviatuur, hiir) nimetatakse X Window - kuvamiseks.

Tänu oma arhitektuurile kasutatakse X-akent vabalt hajutatud arvutisüsteemides, näiteks TCP / IP (interneti) võrkudes.

X võimaldab kasutajal (ekraani taga) suhelda korraga paljude programmidega. Et nende väljundit ei segataks, loob süsteem "virtuaalsed alamekraanid" - kuvari aknad. Iga rakendus (tavaliselt) joonistab ainult oma aknas (või selle akendes). X pakub tööriistu akende loomiseks, ekraanil liigutamiseks, suuruse muutmiseks, kuvamiseks ja nii edasi.

Programmidel on reeglina komplekt konfiguratsiooniparameetrid- ressursid. See võib olla akna värvi erinevaid valikuid teksti font (ligatuur, suurus jne) ja palju muud. Süsteem standardib rakendusressursside määratlemise ja haldamise viisi ning sisaldab mitmeid protseduure nendega töötamiseks. Seda funktsioonide komplekti nimetatakse "ressursihalduriks" (Xrm – X ressursihaldur). Programmi seadistuste "salvestust" nimetatakse ressursside andmebaasiks.

X toimib vastavalt sündmustepõhise arhitektuuri ideoloogiale – korraldab sündmuste kaudu suhtlust programmide endi vahel ning programmide ja väliskeskkonna vahel. Sündmus on teabeühik, mis tuvastab süsteemis toimuvad muudatused või toimingud. Sündmuse identifikaatori järgi saate selle kohta teavet - sündmuse tüüp, selle omadused, kus see juhtus jne.

Jagatud X-akna seade

Süsteem X aken on programmide ja teekide kogu. Selle "süda" on eriprogramm - X-server. See on eraldi UNIX-protsess, mis toimub arvutis, mille külge ekraan on ühendatud. Server on see, kes teab konkreetse riistvara funktsioone, teab, mida tuleb teha mis tahes graafilise objekti, näiteks primitiivse, kuvamiseks ekraanil. Samuti oskab ta tajuda ja töödelda klaviatuurilt ja hiirelt tulevaid signaale.

Server suhtleb klientprogrammidega, saates või vastu võttes neilt andmepakette. Kui server ja klient on sisse lülitatud erinevad masinad, siis saadetakse andmed üle võrgu ja kui ühel, siis kasutatakse sisemist kanalit. Näiteks kui server tuvastab, et kasutaja vajutas hiirenuppu, siis valmistab ta ette vastava paketi (sündmuse) ja saadab selle kliendile, kelle aknas hiirekursor nupu vajutamise hetkel oli. Ja vastupidi, kui programm peab midagi ekraanil kuvama, loob ta vajalik pakett andmed ja saadab need serverisse. Ilmselgelt selle interaktsiooni kirjeldus, paketivormingud jne. ja teeb eelmainitud X-protokolli spetsifikatsiooni.

X jaoks programmeerimiseks ei ole aga vaja teada serveri ja X-protokolli juurutamise üksikasju. Süsteem pakub standardset protseduuride teeki, mille abil programmid pääsevad juurde X "kõrgetasemelisele" teenusele. Nii et punkti ekraanil kuvamiseks piisab vastava helistamisest standardprotseduur, edastades sellele vajalikud parameetrid. See protseduur teeb kogu andmepakettide moodustamise ja nende serverisse edastamise töö.

X aken

Nagu varem mainitud, on aken X-i põhimõiste. Tavaliselt tähistab see ristkülikukujulist ala ekraanil, mille süsteem annab kliendiprogrammile. Viimane kasutab graafilise teabe kuvamiseks akent.

Aknal on sise- ja äär. Akna peamised atribuudid on sisemuse laius ja kõrgus, samuti serva laius (paksus). Neid parameetreid nimetatakse akna geomeetriaks.

Iga aken on seotud koordinaatsüsteemiga, mille alguspunkt asub akna ülemises vasakus nurgas (täpsemalt selle sisemuses). X-telg on paremal ja y-telg all. Mõlema telje mõõtühik on piksel.

X Window võimaldab programmil luua mitu akent korraga. Nad on ühendatud hierarhias, milles ühed on "vanemad" ja teised "lapsed". Server ise loob igale ekraanile ühe peaakna, mis on kõigi teiste akende kõrgeim "vanem". Seda akent nimetatakse "juuraknaks".

Aknahaldus

Aknaid saab ekraanil paigutada suvaliselt, üksteisega kattudes. X Windowil on tööriistade komplekt, mida klientprogramm saab kasutada akende suuruse muutmiseks ja nende ümberpaigutamiseks ekraanil. Süsteemi eripäraks on see, et sellel ei ole sisseehitatud võimalust hallata aknaid hiire või klaviatuuri abil. Selleks vajate spetsiaalset klienti - aknahaldurit (aknahaldurit).

Haldur aga ei saa aknaid korralikult hallata, kui ei tea neist midagi. Akendel võib olla erinevaid omadusi, mida aknahaldur peaks pakkuma: näiteks on paljudel juhtudel mugav omada akende pealkirju, teistel on soovitav, et akent ei saaks väiksemaks teha või vastupidi – teatud suurusest suuremaks. Akna saab "kokku tõmmata" ikooniks ("ikoon") - sellisel juhul peab haldur teadma, millist ikooni kasutada ja kuidas seda nimetada. Kliendid saavad oma akende soovid haldurile edastada kahel viisil:

* X-akna loomisel saab üle kanda "soovitused" (vihjed) akna algpositsiooni, selle geomeetria, miinimum- ja maksimumsuuruste jms kohta;

* Saate kasutada X-i sisseehitatud programmidevahelise suhtlemise viisi - "omaduste" mehhanismi.

X-akna graafilised võimalused

X Window System on loodud töötama bitmap-kuvaritega. Bittide arvu piksli kohta nimetatakse ekraani sügavuseks või paksuseks. Kõigis pikslites olevad samade numbritega bitid (sama kahendnumbrid) moodustavad justkui tasandi, justkui paralleelselt ekraaniga. Seda nimetatakse värvitasandiks. X võimaldab teil joonistada mis tahes värvitasandil (tasapindadel) teisi mõjutamata.

Piksli väärtus ei määra otseselt ekraanil oleva punkti värvi, vaid määrab lahtri numbri spetsiaalses massiivis, kuhu värviväärtus salvestatakse, s.t. piksli väärtus määrab praeguse paleti värvinumbri.

X-l on suur hulk protseduure, mis võimaldavad joonistada graafilisi primitiive: punkte, jooni, kaare, teksti; töötada vabakujuliste aladega.

"Omadused" ja aatomid

X Windowil on sisseehitatud võimalused kliendiprogrammidevahelise teabe edastamiseks. Selleks kasutatakse "omaduste" mehhanismi. "kinnisvara" on teabe struktuur Mõne objektiga, näiteks aknaga, seotud atribuut, mis on saadaval kõigile X klientidele. Igal atribuudil on nimi ja kordumatu identifikaator – aatom. Tavaliselt kirjutatakse vara nimed suured tähed. Aatomeid kasutatakse atribuutide sisule juurdepääsuks, et vähendada klientide ja X-serveri vahel saadetava teabe hulka.

X pakub mitmeid protseduure, mis võimaldavad tõlkida omaduse nime ainulaadseks aatomiks ja vastupidi, hankida aatomilt vajalikud andmed.

Mõned omadused ja neile vastavad aatomid on eelnevalt määratletud ja luuakse serveri initsialiseerimisel.

Raamatukogu programmeerimineX Toolkit Intrinsic (Xt)

Programmeerimise hõlbustamiseks X akende süsteemis on loodud mitmeid pakette. Praegune de facto standard on X Toolkit Intrinsics (Xt) teek, mis sisaldub süsteemi standardses distributsioonis. Xt muudab programmide lähtestamise ja akende loomise lihtsaks. Lisaks on raamatukogus tööriistad objektide (juhtelementide) loomiseks, mida programmid kasutavad kasutajatega suhtlemisel. Xt terminites nimetatakse juhtelementi vidinaks.

IN praegu paketi põhjal rakendatakse erinevaid juhtelementide (objektide) komplekte (komplekte), näiteks Athena, OSF / Motif, Open Look. Neid komplekte koos Xt endaga kasutatakse kui käepärane tööriist liideste loomiseks. Nad hoolitsevad kodutööde eest, mida programmeerija peaks käsitsi tegema, kui ta kirjutab oma rakenduse, kasutades ainult X Window teegi põhirutiine.

Fundamentals Xt

programmeerimiskasutaja graafiline liides

Xt objektid

Xt pakett on aluseks juhtelementide – vidinate (tühjade) loomisele. Xt mõistes on vidin lihtsalt andmestruktuur, mille väljad sisaldavad elemendi enda ID-d, selle akna ID-d, kui see on olemas, ja palju muud. Sellise objekti atribuute nimetatakse ressurssideks. Vidina ressurssideks võivad olla näiteks selle akna värv, akna äärise värv, kuvatava teksti font jne.

Iga objekt kuulub ühte etteantud klassist (vidinaklass). Klassi mõistetakse objektorienteeritud programmeerimise puhul tavapärases tähenduses, s.t: klassi võib käsitleda kui eksemplaride (objektide) kogumit, millel on samad omadused. Xt klassid moodustavad hierarhia.

Töötamise ajal loob programm ise objektid (klassi eksemplarid -- vidin). Need moodustavad kogusid, millest igaüks esindab ka teatud hierarhiat. Iga sellist hierarhiat nimetatakse vidinapuuks. Puu juur on tingimata vidin, mis kuulub eriklassi ühte alamklassi - Shell. Kui objektide puu kahe vidina A ja B hulgast on esimene juurele lähemal kui teine, siis on A objekti B vanem ("vanem") ja B on alamobjekt (või "laps" objekt). (laps)) A-st. Seega on kestaobjekt kõigi teiste selle objektipuu vidinate emavidin. Just tema viib läbi programmi ja aknahalduri suhtlust.

Kirjeldatud vidinate hierarhia vastab nende akende suhtele, mis on X-akna omadus. Lisaks on objektide peal teine ​​hierarhia. Fakt on see, et töö ajal saavad mõned objektid teisi juhtida. Näiteks kui objektil on alamobjektid, siis geomeetria muutumisel saab see automaatselt ümber ehitada oma järeltulijate geomeetria. Et see juhtuks, luuakse vidina vahele link – "haldus" link. Igal objektil võib olla üks või mitu "hallatavat" alamobjekti.

Xt-d kasutaval programmil on vidina ja X-aknaga suhtlemiseks kolm mehhanismi.

* helista tagasi

Protseduurid ("tagasihelistamisprotseduurid"). Iga klassi jaoks on määratletud tegevuste kogum, millele sellesse kuuluvad objektid peavad reageerima. Näiteks on iga klassi jaoks ette nähtud reaktsioon vidina hävitamiseks. Kui toiming sooritatakse, kas standardfunktsioon Xt või üks või mitu programmi pakutavat protseduuri. Selliseid funktsioone nimetatakse tagasihelistamisprotseduurideks või lihtsalt tagasihelistamiseks.

*Tegevus

- protseduurid. Programm saab tellida reaktsiooni ühele või teisele Xt-lt tulevale keerulisele sündmusele (sündmuste rühmale). Kui sündmus toimub, otsib Xt vastava funktsiooni ja kutsub seda välja.

* Sündmuste juhid

- sündmuste juhid. See meetod on sarnane eelmisele, kuid kiirem ja vähem paindlik. See võimaldab teil reageerida ainult lihtsatele (üksikutele) sündmustele, kuid mitte nende jadadele.

Üldine programmeerimisskeem

X-s töötavad programmid peavad sooritama mitmeid standardseid toiminguid, nagu näiteks serveriga ühenduse loomine, aknahalduri vajalike atribuutide seadistamine ja palju muid samme. Kui kasutada Xt, siis seda kõike tehakse ühe protseduuriga – XtInitialize(). See initsialiseerib paketi enda, X Window ressursihalduri (\term Resource manager) ja teeb muid vajalikke toiminguid. XtInitialize() (või XtAppInitialize()) kutsed peavad eelnema kõigile teistele Xt protseduuride väljakutsetele. XtInitialize() tagastab identifikaatori shell-widget , mida saab kasutada programmi objektipuu juurena.Programmi klassi nimi on reeglina sama, mis programmi enda nimi, ainult see algab tähega suur algustäht. Ressursihaldur kasutab programmi nime ja klassi selle parameetrite otsimiseks ressursside andmebaasist.

Iga programm saab käsureal teatud valikuid määrata. Xt määratleb "standardsed" parameetrid, mida saab programmi käivitamisel edasi anda. Lisaks võib käsurida sisaldada mittestandardseid parameetreid, mis on selle rakenduse jaoks ainulaadsed. XtInitialize() skannib käsurida ja paigutab vastavad andmeväärtused andmebaasi.

Initsialiseerimise käigus luuakse ka programmi kontekst – struktuur, mis salvestab kogu info rakenduse kohta. Konteksti eesmärk on kaitsta programmi operatsioonisüsteemi erinevate muudatuste mõju eest. XtInitialize() loob mingi standardse konteksti (vaikekonteksti), kuid sellegipoolest on alates X-i neljandast versioonist soovitatav luua programmi iga üksiku eksemplari jaoks eraldi "isiklik" kontekst, mille jaoks Xt-i mõistes , peaksite kasutama protseduuri XtAppInitialize() kutset ( XtInitialize() asemel). Pange tähele, et Xt rakendusel võib olla mitte üks, nagu tavaliselt, vaid mitu "tipptasemel" objekti.

Järgmine etapp pärast initsialiseerimist on programmi juhtelementide loomise etapp, nendevahelise seose kirjeldamine, erinevatele sündmustele reageeringute seadmine (sündmuse töötlejate ja muude sarnaste objektide registreerimine). Seda saab teha erinevatel viisidel, traditsiooniline on kasutada näiteks protseduuri XtCreateWidget() objekti loomiseks, objekti juhtimise üleandmiseks selle vanemale - protseduur XtManageChild(), vidina sündmuste töötlejate registreerimiseks - protseduur XtAddEventHandler(), jne. ja nii edasi.

Kui kõik programmiobjektid on tööks valmis, kuvatakse nende graafilised esitused (näiteks nendele vidinatele vastavad aknad) protseduuriga XtRealizeWidget() ekraanil.

Järgmine etapp on põhitsükkel – sündmuste vastuvõtmise ja saatmise tsükkel. Seda rakendatakse protseduuri XtMainLoop() kutsumisega (XtAppMainLoop()).

Programm, mis kasutab ainult X-teegi (Xlib) rutiine, peab ise arvestama iga sissetuleva sündmusega (saama selle sündmuste järjekorrast selgesõnalise väljakutsega, näiteks XNextEvent() või XPeekEvent()) ja vastavalt reageerima. Kui ülesandel on mitu akent, tuleb enne mis tahes toimingute tegemist määrata, millises aknas sündmus toimus ja millisel hierarhia tasemel seda sündmust töödeldakse (kas seda sündmust töödeldakse antud objekt Või tema vanem? Kõik see on üsna tüütu.

Xt hoolitseb kogu rutiinse töö eest. XtMainLoop() võtab vastu järgmise sündmuse ja määrab akna, millele see on mõeldud. Vastav vidin asub aknal. Viimase jaoks on sündmuste käitleja, toiminguprotseduur või tagasihelistamine määratletud registreerituna, et vastata toimunud sündmusele. Kui võrk on olemas, kutsutakse neid. Eespool kirjeldatud mehhanismi nimetatakse sündmuste saatmiseks.

XtMainLoop() (XtAppMainLoop()) lõpetab programmi aknahalduri nõudmisel automaatselt.

Xt objektid, nende klassifikatsioon

Xt pakub võimaluste komplekti objektide loomiseks, mida programmid kasutavad kasutajaga ja üldiselt muu välismaailmaga suhtlemiseks.

Iga programmi loodud vidin on ühe või teise klassi esindaja. Xt-l ja sellel põhinevatel pakettidel, nagu OSF/Motif, Athena, Tk/tcl, Open Look jne, on suur hulk sellised klassid. Uute vidinate loomine, mida standardsetes teekides pole, eeldab ka vastava klassi loomist (defineerimist), mis on tavaliselt aeganõudev ülesanne.

Igal klassil on mitmeid fikseeritud omadusi, mis on ühised kõigile selle eksemplaridele (näiteks tagasihelistamisprotseduuride loend). Nende omaduste väärtused objektide endi jaoks võivad erineda.

Kõik Xt klassid moodustavad hierarhia. Kui klass B on hierarhia tipule lähemal kui klass D, siis B-d nimetatakse D baasklassiks ja D-d B tuletatud klassiks (või alamklassiks).

Alamklassid pärivad kõigi oma põhiklasside omadused. See tähendab, et klassi eksemplaril on mitte ainult oma klassi tunnused, vaid ka kõigi baasklasside atribuudid.

Programmides identifitseeritakse iga klass muutujaga, mis osutab vastavale andmestruktuurile. Seda muutujat nimetatakse klassi osutiks. Selle struktuuri andmed täidetakse Xt initsialiseerimisel.

Peamised vidinaklassid:

objektiks. Abstraktne klass (klass, mis ei tooda oma objekti), mida kasutatakse kõigi objektide puu juurena. See sisaldab ühte alamklassi:

RectObj. Abstraktne klass, mida kasutatakse teatud tüüpi objektide funktsioneerimiseks vajalike üldiste omaduste määratlemiseks (näiteks objektide jaoks, millel pole akent). See sisaldab alamklassi:

tuum. Akendega vidinaklasside puu juur. See klass määratleb kõikidele objektidele ühised omadused, nagu vidina akna suurus ja selle asukoht ekraanil. Sisaldab alamklassi:

Komposiit. Sellesse klassi kuuluvad vidinad võivad olla teiste objektide vanemad. Komposiitklassi eksemplarid määravad oma alamobjektide jaoks järgmised käitumised:

* määrab "lapse" vidina asukoha vastavalt teatud piirangutele;

* hävitamisel vabastab alamobjektide poolt kasutatava mälu (Composite klassi vidina hävitamisel hävitatakse kõigepealt kõik selle "lapsed");

* juhib oma lapse vidinate akende kuvamist;

* juhib sisendfookuse ülekandmist objektide vahel.

Komposiitklass sisaldab alamklasse:

Piirang. See klass on põhiklassi edasine laiendus. Selle eksemplaridel on täiendav võimalus kontrollida oma laste suurust ja asukohta. Näiteks saab alamobjekte paigutada erijärjekorras: reas, veerus jne.

Kest. See on eriklass, mis on loodud aknahalduriga suhtlemiseks. selle klassi vidinal saab olla ainult üks laps. Shelli klass sisaldab alamklasse:

OverrideShell. See on Shelli klassi oluline alamklass. Selle klassi vidinaakna puhul on atribuudi override_redirect väärtuseks määratud True, st. aknahalduril pole selle üle kontrolli. Selle klassi objektide akendele ei ole reeglina aknahalduri poolt lisatud tarvikuid (pealkiri, raam, standardnupud) ning neid kasutatakse peamiselt erinevat tüüpi menüüde koostamiseks.

WMShell. See on Shelli klassi spetsiaalne alamklass, mis sisaldab aknahalduriga suhtlemiseks vajalikke täiendavaid välju. Sisaldab:

VendorShell. See klass on mõeldud suhtlemiseks spetsiaalsete aknahalduritega. See klass sisaldab alamklasse:

TopLevelShell. Selle klassi vidinaid kasutatakse tavaliselt programmi objektipuu shell-objektidena. Ta sisaldab:

ApplicationShell. Programmil võib reeglina olla ainult üks eksemplar, mis kuulub klassi ApplicationShell.

TransientShell. See klass erineb eelmisest ainult selle poolest, kuidas see aknahalduriga suhtleb. Selle klassi vidinaid ei saa minimeerida (ikooniks muuta). Kui aga klassi TransientShell objekti vanem muutub ikooniks, eemaldatakse vidina aken ekraanilt. Dialoogide loomiseks kasutatakse klassi TransientShell.

Igal vidinaklassil ja seega ka selle alusel loodud objektidel on üsna palju parameetreid. Seoses Xt-ga nimetatakse neid "ressurssideks". Xt pakub nendega töötamiseks laia valikut tööriistu.

Lisafunktsioonid Xt

Xt pakub mehhanismi failidega (ja välisseadmetega üldiselt) asünkroonses režiimis töötamiseks. Rakendus saab registreerida protseduuri, mis tuleb välja kutsuda, kui andmed on valmis või kui tekib lugemis-/kirjutustõrge.

Xt annab rakendusele võimaluse teatud ajavahemike järel teatud toiminguid teha. Näiteks perioodiliselt kuvada antud aknas ekraanil praegust kellaaega jne. Sellistel eesmärkidel kasutatakse spetsiaalset Xt mehhanismi - taimerit. See pakub kõne pärast programmi määratud erifunktsiooni teatud ajavahemikku.

Xt annab võimaluse sooritada teatud toiminguid, kui sündmuste järjekord on tühi. Seda tehakse spetsiaalse "töö" protseduuri registreerimisega, mille Xt kutsub, kui sündmuste järjekord on tühi. Selliseid funktsioone kasutatakse tavaliselt mitmesuguste toimingute ja arvutuste tegemiseks väga lühikese aja jooksul.

Iga rakendus saab vajadusel muuta tavapärast sündmuste vastuvõtmise ja saatmise (töötlemise) tsüklit – Xt pakub sündmuste järjekorraga töötamiseks tervet protseduuride komplekti.

Xt-l on nn kiirendite (kiirendi) mehhanism, mis võimaldab sisestada sündmuste ja tegevuste sõltuvusi. Kiirendid on sarnased tegevusprotseduuridele, selle erinevusega, et ühes vidinas toimuv sündmus (või sündmuste rühm) algatab kutse vastavale tegevusprotseduurile teisel objektil.

Xt toetab vidinaakendega töötamiseks mitmeid viise. Seega saab programm Xt-i pakutavaid rutiine kasutades näidata akent, määrata selle või selle töörežiimi ja sulgeda akna, kui see muutub ebavajalikuks. Neid protseduure kasutatakse peamiselt hüpikmenüüde ja dialoogide loomiseks. Reeglina on kõikidel vidinakomplektidel (nt OSF/Motif) omad palju mugavamad protseduurid menüüde ja dialoogide loomiseks.

Xti lisandmoodulid Praegu on Xt konsortsium X rangelt standardinud, kuid kõrgemaid standardeid pole. Populaarsed on:

*OSF/Motif Toolkit;

* Athena vidinakomplekt;

* OPEN LOOK Intrinsic Toolkit;

* Intervjuud;

*Tk/tcl.

Kõige tavalisemaks ja peaaegu de facto standardiks tuleks ilmselt pidada OSF/Motif.

Ateena

Athena vidinakomplekti ("vidinakomplekt") pakub X konsortsium osana standardsest X distributsioonist. Athena loodi põhirakenduste ja utiliitidega tehtud tööst MIT-i Athena projekti käigus, mille tulemuseks oli X Window System.

Athena oli algselt "lame" graafikaga – kõikidel nuppudel, menüüdel ja muudel liidese elementidel ei olnud varje, s.t. olid tasased. Umbes aasta tagasi ilmus AW3d, Athena vidinate variant, mis selle puuduse parandas.

Motiiv

Open Software Foundation Motif (OSF/Motif) on pakett, mis sisaldab aknahaldurit, utiliitide komplekti erinevate abitoimingute sooritamiseks ja Toolkit Intrinsicsile ehitatud objektide teeki.

Motiiv toetab kõiki Xt klasse ja seega ka nende klasside ressursse, kuid objekti ressursi nime ja klassi esindavad konstandid, mille eesliited on vastavalt XmN ja XmC. Ressursi tüübi salvestamiseks kasutatakse XmR-i prefiksiga konstante (Xt-s kasutusele võetud XtR asemel).

Motiiv laiendab Xt pakutavate objektiklasside komplekti. Eelkõige toetab Motif üsna suurt klasside komplekti, mis võimaldavad luua menüüsid, kerimisribasid), klõpsatavaid nuppe, redigeerida elemente jne.

Lisaks pakub Motif objektide eriklassi nimega vidin – need moodustavad Motifis eraldi klassi XmGadget, mis on klassi RectObj alamklass. Neid saab kasutada ka liidese elementide loomiseks, kuid nende eripära on see, et neil pole oma aknaid. Joonistamiseks kasutavad vidinad oma vanema akent.

Igas vidinaklassis on üsna lai valik nii päritud kui ka sellele omaseid lisaressursse. Need võimaldavad teil juhtida selliseid olulisi objektide omadusi nagu taustavärv, asukoht ekraanil, kuvatava teksti font jne.

Mõnda Motifi klasse ei kasutata vidina eksemplaride loomiseks (objektorienteeritud programmeerimise terminoloogias nimetatakse selliseid klasse abstraktseteks klassideks). Need sisaldavad kõige levinumaid atribuute ja meetodeid, mis on vajalikud erinevate vidinatüüpide toimimiseks.

Motiivil on kaks peamist objektide alamklassi: XmPrimitive ja XmManager (klassi XmGadget mainiti varem). Mõlemad klassid on abstraktsed. Esimene on päritud klassist Core ja seda kasutatakse objektiklasside alusena, mis ei oma muid objekte. Näited on klõpsatavad nupud, loendid ja nii edasi. Klass XmManager tuleneb klassist Constraint ja seda kasutatakse selliste objektide loomiseks, millel on alamobjekte ja mida saab hallata.

Objektide klassifikatsioon

XmGadgeti klass. Tavaliste Motifi objektiklasside (vidina) instantseerimisel genereeritakse ka vastav aken. Kui programm kasutab palju vidinaid, põhjustab see rakenduse märkimisväärset aeglustumist. Aega kulub nii akende loomisele kui ka nendega edasisele tööle. Kuid on lihtne näha, et iga objekti jaoks ei pea olema eraldi akent. Sildid, nupud ja paljud muud vidinad võivad edukalt kasutada oma põhiobjekte akende joonistamiseks. Akent pole – pole vaja uuesti serveriga ühendust võtta, jõudlus suureneb ja lisamälu ei lähe raisku.

Selle idee ellu viimisel on Motifi arendajad dubleerinud mõned objektiklassid, luues kaks versiooni - aknaga ja ilma aknata. Objektide versioonid, millel pole aknaid, juhivad oma hierarhiat abstraktsest klassist XmGadget ja neil on sama üldnimetus. See spetsiaalne objektiklass pärib oma omadused klassist RectObj, mis omakorda on abstraktne klass, mis sisaldab põhimehhanismid objekti geomeetria juhtimine.

Lisaks sellele, et vidinatel pole oma aknaid, seatakse neile ka muid piiranguid. Seega on nende jaoks võimatu defineerida sündmuste käitlejaid (sündmuskäsitlejaid), tõlketabeleid. Samuti ei saa vidinal olla alamobjekte. Muidu on vidina ja vastava vidina funktsionaalsus sama, seega me neid eraldi ei kirjelda, vaid loetleme.

Klass XmGadget sisaldab alamklasse:

*XmArrowButtonGadget.

* XmLabelGadget.\hfil

*XmPushButtonGadget.

*XmToggleButtonGadget.

*XmCascadeButtonGadget.

*XmSeparatorGadget.

XmPrimitive klass. See abstraktne klass sisaldab:

XmArrowButton. Klassi eksemplar on nupp, millele on joonistatud suunanool. Nupule saab klõpsata hiire või klaviatuuriga. Juhtelemendi äärisel võib olla vari, seda kasutatakse erinevate olekute näitamiseks, milles objekt võib olla: vaba ("pressitud") ja vajutatud.

Xm silt. Selle klassi esindajad (sildid) on ühed lihtsamad motiiviobjektid. Sildid on mõeldud teabe kuvamiseks: teksti või pildid (biti (piksli) kaardid).

XmPushButton. Selle klassi liikmed on ristkülikukujulised klõpsatavad nupud, kuhu saab tõmmata tekstirea.

Kui objekt on valitud näiteks hiire vasakut nuppu vajutades, kui kursor on objektil, siis muutub vidina äärise värv, mis tekitab klõpsuefekti. Nupu vabastamisel taastatakse äärise värv. Sellist vidinat saab klõpsata ka klaviatuurilt – selleks tuleb sisendfookus objektile üle kanda ja vajutada "tühikuklahvi" (tavaliselt).

XmDrawnButton. Selle klassi objektid on sarnased klõpsatavate nuppudega, ainsa erinevusega, et nad ei joonista teksti, vaid suvalise pildi (pikslikaart).

XmToggleButton. Selle klassi objektid tähistavad väikest nuppu, mille kõrval on reeglina selgitav tekst. Nupp võib olla kahes olekus: sees ja väljas (st see on lüliti). Neid iseloomustab juhtelemendi välimuse muutus.

Selle klassi esindajat kasutatakse nn "kontrollinuppude" (kontrollinuppude) loomiseks, mida oleks targem nimetada "linnudeks", ja "raadionupud" (raadionupp) - mitme asendiga lülitid. Esimesed on ette nähtud loogiliste parameetrite seadmiseks, st. millel on kaks tähendust. Viimased täidavad sarnast eesmärki, kuid väärtuste kogum on sel juhul piiratud ja sisaldab rohkem kui kahte elementi. Sel juhul sõltub XmToggleButton tüüpi objekti graafilise esituse vorm sellest, kas seda kasutatakse linnukese või raadionupuna.

Tavaliselt kombineeritakse klassi XmToggleButton vidinad konstruktsioonideks, mida nimetatakse vastavalt märkeruutudeks ja raadiokastideks. Need plokid tähistavad omakorda allpool kirjeldatud klassi XmRowColumn objektide modifikatsioone.

XmCascadeButton. Selle klassi objektid tähistavad klõpsatavaid nuppe ja neid kasutatakse menüüde loomisel. Kui klõpsate objektil, kuvatakse järgmise taseme alammenüü.

xmlist. Selle klassi esindajad on ühed kõige huvitavamad motiiviobjektid. Nende eesmärk on kuvada stringide loend ja võimaldada kasutajal seda teha erinevaid tegevusi loendiüksustega. Kasutaja saab valida ühe või mitu sellel objektil olevat rida ja need tõstetakse esile. Lisaks, kui loendis on sisendfookus, siis üks selle elementidest on punktiirraamiga esile tõstetud. Seda raami nimetatakse loendikursoriks.

XmScrollBar. Selle klassi objektid - kerimisribad (kerimisribad) kasutatakse reeglina koos teiste objektidega, nagu loend (XmList), tekst (XmText) ja teised. Kerimisriba on mõeldud ala kerimiseks, kui selles esitatavat infot (loend, tekst, pilt jne) ei ole võimalik aknas täismahus kuvada. XmScrollBar klassi objektid kujutavad riba (horisontaalne või vertikaalne), mille servades on noolenuppe. Ühel neist klõpsates keritakse noolega näidatud suunas. Kerimisriba ribal on liugur (liugur) - värviliselt esile tõstetud ristkülik. Kui selle hiirega "haakida" ja "lohistada", viib see reeglina ka ala kerimiseni.

XmSeparaator. Selle klassi objekte - eraldajaid - kasutatakse reeglina rakenduste akende välimuse parandamiseks. Selline vidin on vertikaalne või horisontaalne triip(joon) eraldavad objektide rühmad. Näiteks saab eraldajaid kasutada menüüdes ühe käsu teisest eraldamiseks, dialoogides klõpsatavate nuppude rühma eraldamiseks teistest elementidest jne.

xmtext. Selle klassi objektid võimaldavad kuvada ühte või mitut tekstirida. Kui jooned aknasse ei mahu, saab pilti kerida vasakule-paremale ja üles-alla. Teksti saab redigeerida – redigeerimisrežiimi saab muuta, määrates vastavad objektiressursid.

Motif pakub mitmeid mugavaid protseduure, mis võimaldavad selle klassi vidinaga teha väga erinevaid toiminguid: hankida ja muuta andmeid, kopeerida valitud osa andmetest süsteemi lõikepuhvrisse (lõikepuhvrisse) ja nii edasi.

XmTextField. Selle klassi objektid võimaldavad teil vaadata ja redigeerida ühte tekstirida.

XmManageri klass. See klass on abstraktne, st. pole kasutatud objektide kudemiseks. See määratleb põhiparameetrid, mida on vaja teiste objektidega manipuleerivate vidinaklasside loomiseks. Neid ressursse on vaja alamvidinate õigeks renderdamiseks ja nende sisendi fookuse kontrollimiseks.

XmManageri klass sisaldab:

XmBulletinBoard. Selle klassi objektidel võivad olla alamobjektid, mis paigutatakse aknasse suvaliselt. Alamvidinate aknakoordinaate mõõdetakse koordinaatsüsteemis, mille alguspunkt asub XmBulletinBoard klassi objekti akna ülemises vasakus nurgas.

Objekti suuruse muutmisel, näiteks hiirega, alamobjektide esialgne asukoht kas ei muutu või liigutatakse neid nii, et vältida vastastikust ristumist. Kui vidina aken muutub väiksemaks, võivad osad alamobjektidest muutuda nähtamatuks.

XmBulletinBoardi klass sisaldab:

Xform. Selle klassi objektide (vormide) eripäraks on võime juhtida nende alamobjektide asukohta, luues seosed nii vormi enda ja alamvidina kui ka alamobjektide endi vahel.

Iga alamvidina puhul saate määrata, mille külge selle vasak, parem, alumine või ülemine serv on ankurdatud. Seega, kui alamobjekti vasak ja parem serv on seotud vormi parema servaga, jääb kaugus nendest selle servani alati samaks. Kui vormi suurus väheneb, liigub alamobjekt vasakule ja kui suurus suureneb, siis paremale. Saate linkida ühe alamobjekti teisega. Seejärel liigub vidina kinnitatud alamobjekti asukoha muutmine lisatud objekti nii, et nendevaheline kaugus säilib.

Vormi suuruse muutmisel säilivad kõik suhted selle alamobjektide vahel.

XmSelectionBox. Selle klassi objektid ("valikukastid") kujutavad endast liitvidina näidet ja sisaldavad keritavat loendit, kus kasutaja saab valida soovitud üksuse, samuti tekstivälja (XmTextField objekt), kus loendis valitud üksus on kuvatakse. Kasutaja saab tehtud valikut muuta. Loendikasti ja tekstiväljale saab määrata selgitavaid silte, kasutades klassi XmLabel vastavaid vidinaid. XmSelectionBox klassi objekt sisaldab ka kolme nuppu (XmPushButton objektid). Vaikimisi on neil sildid "Ok", "Tühista" ja "Abi". Ja lõpuks on veel üks element - klõpsatav nupp, millel on vaikimisi nimi "Rakenda". See alamobjekt on algselt loodud, kuid ei sisaldu hallatavate vidinate loendis.

Valikuploki abil saab kasutaja määrata loendis vajaliku alamstringi või sisestada selle tekstiväljale. Seadistused kinnitatakse nupu "Ok" vajutamisega.

XmSelectionBoxi klass sisaldab:

XmCommand. Selle klassi objektid võimaldavad kasutajal valida soovitud käsu, kasutades juba sisestatud käskude loendit või sisestades käsu vidina spetsiaalselt selleks ette nähtud tekstiväljale.

XmFileSelection. Selle klassi objektid võimaldavad teil vaadata erinevate kataloogide praegust sisu ja valida konkreetse faili.

Selle klassi objektid sisaldavad järgmisi elemente:

* 2 tekstivälja: "Filter" ja "Valik" (klassi XmNextField objektid);

* 2 loendit: "Kataloogid" ja "Failid" (klassi XmList objektid);

* 4 nuppu: "Ok", "Filter", "Tühista" ja "Abi" (klassi XmPushButton objektid);

Tekstiväli "Filter" seab maski (malli) teatud alamhulga valimiseks kogu sellel väljal määratud tingimusele vastavate failide hulgast - malliga vastavuses - just seda alamhulka näidatakse loendis "Failid". Alamkataloogid kuvatakse loendis "Kataloogid". praegune kataloog. Tekstiväljal "Valik" kuvatakse loendis "Failid" valitud fail (selle nimi) ja samale tekstiväljale saab kasutaja sisestada käsitsi vajaliku faili täisnime. Nelja nuppu kasutatakse erinevate toimingute tegemiseks:

Ok - valige antud fail;

Filter - tekstiväljal "Failid" kuvatavate failide loendi värskendamine vastavalt kehtivale maskile;

Tühista – sulgeb vidina akna, faili ei valita;

Abi – abikõne.

XmMessageBox. Selle klassi objektid on mõeldud kasutajale programmi töötamise ajal tekkivate teadete väljastamiseks. See vidin on komposiit. Sellel on ala, kus kuvatakse tekstirida (sõnum), ja spetsiaalne ikoon, mis iseloomustab sõnumi tüüpi. Lisaks on objektil kolm vajutatavat nuppu. Vaikimisi on need märgistatud: "Ok", "Tühista" ja "Abi".

XmDrawing Area. Selle klassi objektid pakuvad programmile akent teabe joonistamiseks ja kuvamiseks. Klass ise ei paku parameetreid, mida saaks otse graafika kuvamiseks kasutada. Kuid selles klassis saadaolevate tagasihelistamisprotseduuride loendid võimaldavad teil saada teateid vidina akna ümberjoonistamise vajaduse ja sisendi fookuse vastuvõtmise kohta.

XmFrame. Selle klassi objekte kasutatakse mõne objekti eristamiseks teistest, raamiga ümber asetades. Selle klassi vidina eripära on see, et neil saab olla ja hallata ainult ühte alamobjekti.

XmPanedWindow. Selle klassi objektid võivad kombineerida erinevaid vidinaid. Alamobjektid eraldatakse üksteisest ja nende vahele asetatakse spetsiaalne element, mida nimetatakse aknaraamiks. See näeb välja nagu väike ruut ja seda kasutatakse lapse vidinate suuruse muutmiseks. Seega, kui XmPanedWindow klassi objektil on kaks alamobjekti, saate teha järgmist: "haakida" raami hiirega ja "lohistada" seda õiges suunas (alla-üles või vasakule-paremale) - pikisuunalise suuruse järgi (suurus selles suunas, kuhu see tiib "tõmmati") ühe alamobjekti "arvelt" suureneb (teise suurus väheneb), mõlema alamobjekti põikimõõtmed säilivad . XmPanedWindow klassi objekti "risti" suuruse määrab selle alamobjektide maksimaalne sarnane suurus.

XmRowColumn. Selle klassi objektid võivad kombineerida erinevaid vidinaid. Alamobjektid on paigutatud kindlasse järjekorda – maatriksi kujul. Vidinaklass XmRowColumn on järgmiste objektide loomise aluseks:

märkeruut - "kontrollitavate nuppude plokk" (st klassi XmToggleButton või XmToggleButtonGadget klassi objektid); "blokis" saadaolevate nuppude hulgast saab korraga valida mitu ("sees");

raadiokast - "raadio nuppude plokk" (st XmToggleButton või XmToggleButtonGadget objektid); "blokis" saadaolevate nuppude hulgast saab korraga valida ("lubatud") ainult ühe;

rippmenüü - "rippmenüü" - alammenüü aken, mis ilmub pärast nupu valimist ülataseme menüüs (menüüribal); menüüelemendid on paigutatud vertikaalselt;

valikumenüü - nupp koos seotud menüüga; nupu vajutamisel ilmub menüü aken, kust valitakse üks parameetri väärtus; menüüelemendid on paigutatud vertikaalselt;

hüpikmenüü - "hüpikmenüü", mida reeglina kutsutakse välja hiire kolmanda nupu vajutamisega; menüüaken ilmub kohta, kus asub selle kursor; menüüelemendid on paigutatud vertikaalselt;

menüüriba - ülataseme menüü, mis sisaldab rida nuppe (klassi XmCascadeButton või XmCascadeButtonGadget objektid), mida kasutatakse erinevate alammenüüde kutsumiseks (rippmenüü); menüüelemendid on paigutatud horisontaalselt.

XmScale. Selle klassi objekt on ristkülikukujuline ala, mis sisaldab fikseerivat liugurit (liugurit), mille abil saab kasutaja valida objektiga seotud parameetri väärtuse määratud vahemikust.

XmScrolledWindow. Selle klassi objekt annab võimaluse kuvada ja vaadata teatud teavet (tekst, pilt, loend). Selline vidin sisaldab reeglina alamobjekti, milles asuvad vaatamiseks mõeldud andmed (see võib olla XmText klassi objekt, XmDrawingArea vms) Andmete mugavamaks vaatamiseks horisontaal- ja vertikaalsed triibud kerige.

See klass sisaldab alamklassi

XmMainWindow. Selle klassi objektid kujutavad endast eraldi liidese komponenti, mis koosneb tavaliselt järgmistest osadest:

* tipptaseme menüü,

* käsuaken,

* "Tööruum,

* sõnumikast,

* ja kaks kerimisriba (horisontaalne ja vertikaalne).

Alamobjekte saab eraldada eraldajatega.

XmMenuShelli ja XmDialogShelli klassid. Motif pakub XmMenuShelli objektiklassi erinevate menüüde loomiseks. See klass pärineb klassist OverrideShell (Xt-st).

Nagu Xt kirjeldamisel juba mainitud, kasutatakse klassi TransientShell selliste programmiobjektide loomiseks, mis ühelt poolt võtavad otse ühendust aknahalduriga ja teisalt omavad funktsioone, mis eristavad neid tavalistest tipptaseme akendest. Peamine üks neist funktsioonidest on see, et TransientShelli klassi vidinat ei saa minimeerida. Kuid need eemaldatakse ekraanilt, kui vanem muutub ikooniks. Seda tüüpi vidinat kasutatakse tavaliselt programmi abiakende loomiseks.

Motiiv võtab TransientShelli klassi määratud omadused ja laiendab need tuletatud XmDialogShelli klassiks. Viimane toimib dialoogi kestaobjektina.

Motiivi dialoogiboksi struktuuri saab esitada järgmiselt:

XmDialogShelli klassi objekt

XmManageri alamklassi objekt, näiteks XmBulletinBoard või XmForm

Erinevad juhtelemendid: nupud, tekstisisestusväljad jne.

Raamatukogus on protseduuride komplekt, mis hõlbustab kirjeldatud konstruktsiooni loomist.

Dialoogid

Nagu mainitud, on Motifi dialoogiboksi ehitus järgmine: esiteks on XmDialogShelli klassi objekt, mis sisaldab seejärel klassi XmManager ühe alamklassi vidinat, seda objekti kasutatakse erinevate objektide majutamiseks.

Teek pakub dialoogide loomiseks spetsiaalseid protseduure. Neid eristab vidina tüüp, mis on XmDialogShelli klassi objekti alam.

Tekstiväljund

Raamatukogus on üsna palju vidinaid, mida kasutatakse tekstilise teabe kuvamiseks. Need on XmLabel koos alamklassidega, XmText jne. XmNfontlisti ressurssi kasutatakse võimalike fontide määramiseks, mida saab joonte joonistamisel kasutada. See on XmFontlist tüüpi. Selle väärtus on "font"/"fonttag" paaride komplekt.

Sildid (sildid) on loodud selleks, et muuta programmid sõltumatuks kasutaja määratud konkreetsetest fontidest. Seda tehakse järgmiselt: rakendus luuakse nii, et kõigis tekstiridadega töötavates funktsioonides pole mitte fonte endid, vaid nende silte. Kui ülesanne on koostatud ja käivitatud, siis vastavus siltide ja konkreetsed fondid. Viimaseid kasutatakse joonistamiseks.

Motiivil pole tööriistu mitte ainult ühes fondis kuvatud tekstiridadega töötamiseks, vaid see võimaldab töötada ka selliste objektidega nagu "liitread" – s.t. tekstiread, mis kasutavad paljusid fonte. Selliste stringide loomiseks, nendega töötamiseks ja nende teisendamiseks tavalisteks "ühe fondi" stringideks on komplekt tööriistu.

Töö piltidega

Motiiv ise töötab piltidega, esitades neid sisemises vormingus, mis on kõige lihtsam bitmap (bitmap), mis määratakse XImage struktuuri abil.

Sisend fookuse juhtimine

Motiiv toetab sisendfookuse edastamiseks kahte mudelit. Esimene on kaudne (osuti): fookus on antud vidinale, kus hiirekursor liigub. Teine mudel on selgesõnaline: fookuse ülekandmiseks asetage hiirekursor vidina aknasse ja vajutage hiire vasakut nuppu. Kui vidin või vidin saab sisendi fookuse, tõstetakse selle ääris esile.

Lisaks nendele sisendfookuse edastamise ja vastuvõtmise mudelitele on olemas ka mehhanism sisendfookuse ülekandmiseks ühelt vidinalt teisele. Objekte saab kombineerida rühmadesse - seda saab teha vastavate ressursside vajalike väärtuste määramisega või anda see süsteemile. Viimasel juhul seob Motif vidina automaatselt sisseehitatud reeglite abil. Näiteks sisaldab XmMessageBox klassi objekt kolme rühma: üks on "peamine" dialoogiobjekt (klass XmForm), teine ​​on "silt", milles sõnum kasutajale esitatakse, kolmas on nupud. vajutada.

Sisendfookus kantakse üle nii ühelt objektilt (rühmas) teisele kui ka rühmast rühma.

Fookuse ülekandmine grupis toimub nooleklahvide abil ja rühmast rühma - tabeldusklahvi abil (sellepärast nimetatakse rühmi endid Tab-rühmadeks). Fookuse ülekandmisel gruppi kantakse sisendfookus selles üle esimesele objektile, mis suudab fookuse vastu võtta (objekti fookuse vastuvõtmist saab takistada vastava ressursi vastava väärtuse määramisega). Grupi sisendi fookuse edastamise järjekord on sama, mis selle vidinate loomise järjekord. Sel juhul liigub klahvikombinatsioon tavaliselt fookust vastupidises suunas.

Motif pakub ka mitmeid protseduure, mida saab kasutada sisendi fookuse juhtimiseks.

Lesstif Hiljuti ilmus Motifi vabavaraline analoog, mis sellega täielikult ühildub. Seda nimetatakse Lesstifiks. Seda saab vabalt hankida lähtevormina ja koostada erinevatele Interneti-platvormidele.

Tk/tcl

Tcl - loe: - tähistab: "tööriista käsukeel" (instrumentaalne käsukeel). See koosneb kahest osast: tegelik keel ja raamatukogu.

Tcl-keelel on lihtne süntaks ja seda on lihtne programmeerida. Algsel kujul on tcl tõlk. See võimaldab teil luua uusi konstruktsioone, nagu funktsioone või programme, mis annab kvalifitseeritud programmeerijale võimsa tööriista mitte ainult lõplike rakenduste, vaid ka oma tcl-keele laienduse arendamiseks, oma stiili loomiseks ja säilitamiseks.

tcl-teek annab võimaluse kasutada rakendusprogrammides tcl-keeletõlke ja seetõttu kaasata programmidesse tcl-käskude keeles kirjutatud skripte. Teek sisaldab tcl-keele leksikaalanalüsaatorit, funktsioone, mis rakendavad sisseehitatud tcl-käske ja võimaldab lisada tcl-käskudele kohandatud alamprogramme (funktsioonikutseid). Selline paigutus on võimalik nii C kui ka C++ jaoks.

Tk on Motifiga ühilduv tööriistakomplekt graafiliste kasutajaliideste arendamiseks X Window keskkonnas. Lisaks standardliides C- ja C++-ga sisaldab see liidest tcl-iga, pakkudes võimalust kasutada Tk-rajatisi tcl-käsu tõlgendaja keskkonnas. See tähendab, et lisaks standardsele programmeerimisele C ja C++ keeles saab rakenduse liidese osi realiseerida skriptidena tcl keeles ning neid liidese osi (dialoogid, ekraanipaigutused jne) saab dünaamiliselt redigeerida lõplik programm tcl-käskude abil.

"Wish" aknakeskkond võimaldab luua graafilise kasutajaliidesega rakendusi, kasutades ainult tcl keele võimalusi.

Sarnased dokumendid

    Programmeerimissüsteemid ja nende graafilised võimalused. Teema "Programmeerimiskeele graafilised omadused" põhikooli õpilaste tõhusat omastamist soodustava multimeediumikursuse väljatöötamine (Basic ja Pascal programmeerimiskeelte näitel).

    lõputöö, lisatud 29.12.2010

    Ekraani graafilised komponendid, süsteemiobjektid ja funktsioonid. Süsteem, mis võimaldab kasutajal seadmega suhelda. Personaalarvutite graafiliste kasutajaliideste ajalugu, nende klassifikatsioon. X-aknasüsteem.

    esitlus, lisatud 22.05.2012

    Programmeerimine ja lihtsad graafikavõimalused. Vaate põhistruktuurid ja kaks konstruktorit argumentidega. Edasised punkti koordinaadid ja uue lähtestamine. Ristküliku ülemise vasaku nurga koordinaatide salvestamine ja muutmine.

    laboritööd, lisatud 12.01.2011

    Vektorarvutigraafika. Graafilised primitiivid. Pascali programmeerimiskeele graafilised omadused. Graafika õppimise juhised programmeerimiskeeles Pascal. Funktsioonide graafikute koostamine.

    kursusetöö, lisatud 13.06.2007

    Programmi arendamine Windows operatsioonisüsteemile kasutades VisualC++ (6.0, .NET). Seadme (elektriveekeetja) töötamise tarkvaralise simulatsiooni põhitõdedega arvestamine. Seadmeklasside ja selle graafilise liidese loomise reeglid.

    kursusetöö, lisatud 03.06.2014

    Arvutigraafika. Graafilise teabe esitamine arvutis. Graafilised vormingud. Graafiline redaktor. Vektorgraafika. CorelDraw. Programmi omadused, liides. CorelDraw tehnoloogilised võimalused ja kasutamine.

    kursusetöö, lisatud 19.05.2007

    Hajutatud arvutussüsteemide roll kaasaegsete probleemide lahendamisel. Tööriistade süsteem DVM paralleelprogrammide arendamiseks. Tööriistad graafilise liidese formaalse mudeli koostamiseks. Nõuded DVM-süsteemi graafilisele liidesele.

    kursusetöö, lisatud 15.10.2010

    Delphi 7 keskkonna abil programmeerimise olemus ja selle peamised graafilised võimalused. Autonoomselt koostatud programmimooduli ülesehitus ja selle põhimõtted. Graafiliste protseduuridega töötamise põhivõtted, kaare, ringi ja ellipsi konstrueerimine.

    kursusetöö, lisatud 16.12.2011

    Arvutigraafika ulatus. Arvutigraafika tüübid. Värvi eraldusvõime ja värvimudelid. Tarkvara graafilise teabe loomiseks, vaatamiseks ja töötlemiseks. Tekstitöötlusprogrammide, graafiliste redaktorite graafilised võimalused.

    test, lisatud 06.07.2010

    Graafiliste kasutajaliideste areng. X-aknasüsteemi seade ja aknahaldurid. KDE ja GNOME töölaua ja rakenduste kirjeldus. Ülevaade liidese korraldamise põhiprintsiipidest aastal Windowsi süsteem, selle rakenduspaketi kirjeldus.

Rakendusprogrammide väljatöötamisel esitatakse see kasulik looming GUI. Tegelikult on see keskkonna loomine teatud klassi ülesannete arvutamiseks ilma kasutaja poolt programmeerimata. Reeglina on mõttekas selliseid liideseid välja töötada mitme parameetriga ülesannete jaoks, kui see peaks selliseid probleeme korduvalt lahendama. Sel juhul on soovitav välja töötada graafiline liides, mis aitab kasutajal teatud parameetrite valikuga saada ülesande lahendamise tulemusi (tavaliselt graafilisel kujul). Selline liides võib olla mugav ka õppeülesannete loomisel, sest põhitähelepanu ei kulu õpilasel sel juhul programmeerimisele või ülesande lahendamisele, vaid vajalike parameetrite valimisele, tulemuste analüüsimisele ja mõistmisele.

Ülaltoodud lühikesest sissejuhatusest on selge, et graafilise liidese kohustuslikud elemendid teaduslike ja / või hariduslike probleemide lahendamisel peaksid olema:

1. Üks või mitu akent graafiliste arvutustulemuste kuvamiseks.

2. Mitu redigeeritavat akent, mille abil seadistatakse ja/või muudetakse ülesande parameetrite väärtusi.

3. Juhtnupud, mis võimaldavad arvutusprotsessi alustada ja peatada, tulemusi ümber joonistada, ülesandest väljuda.

4. Selgitavad sildid (staatiline tekst).

Muidugi on võimalikud ka muud juhtelemendid, nagu keritavad loendid, raadionupud paljudest valikutest ühe valimiseks jne, kuid selles õpetuses käsitleme üksikasjalikult ainult nelja loetletud tüüpi. Joonis 8 näitab lihtsaim liides, mis on loodud kahe lähedase sagedusega harmoonilise võnke lisamisel tekkivate löökide uurimiseks. Nagu jooniselt näha, on selles kõik ülaltoodud elemendid.

Sellise liidese loomiseks saate kasutada nii graafilise väljundi funktsioone kui ka erifunktsioon, mis on mõeldud kasutaja interaktiivseks suhtlemiseks joonisega. Seda funktsiooni nimetatakse uicontroliks. Kuid töö lihtsustamiseks ja sama tüüpi liideseelementide loomiseks MATLAB-süsteemis on olemas spetsiaalne programm, mis võimaldab luua vajalikke elemente visuaalse programmeerimise tasemel, peaaegu ilma koodi kirjutamata.

Riis. 8. Lihtsaim graafiline kasutajaliides “Löömise” ülesande lahendamiseks

9.1. Liidese välimuse loomine

Selles jaotises vaatleme MATLAB-i kasutamist graafilise liidese (GUI -GraphicsUserInterface) välimuse väljatöötamiseks, kasutades graafilisi (visuaalseid) programmeerimistööriistu. Kõne eest visuaalne redaktor peate MATLAB-i käsuaknasse sisestama juhendi. Teatud aja pärast, mille määrab teie arvuti kiirus, ilmub kaks uut akent, mis on näidatud joonisel 9. Üks neist on juhtpaneel ( kontrollpaneel, vasakpoolsel joonisel) ja kujund või joonistusala (joonis , parempoolsel joonisel). Need aknad võivad kattuda, kuid selguse huvides oleme need asetanud kõrvuti. Kui enne juhendi helistamist pole avatud pilti, kuvatakse ekraanile ülaltoodud pilt. Kui juhendfunktsioon kutsutakse välja pärast joonise joonistamist, avaneb see tühja funktsiooni asemel. Graafilise liidese loomist kaalume algusest peale.

Enne graafilise kasutajaliidese loomist on hea mõte "mustand" koostada, mida soovite liidesena kasutada. Vaatleme kolme väljundi näidet erinevad signaalid kolmes alamaknas, mis kõrgetasemelise graafika mõistes määratletaks alamplot(3,1,k) lausetega, kus k on graafiku number. Pealegi,

Riis. 9. Visuaali üldvaade graafiline redaktor ja redigeerida aknaid

tegelikest diagrammidega alamakendest paremal on kolm redigeeritavat

Väljad, kuhu saab sisestada/muuta arvväärtusi kolm

muutujad. Olgu need muutujad suvalised väärtused.

Selles esitluses me oma redigeeritavaid märkeruutusid ei varusta.

koy, kas sisestatud väärtused vastavad tingimustele, kuigi see võib

Saab. Nimetagem neid muutujaid N, R, C. Selles näites peame silmas arvutust

vool RC-ahelas, kui klemmidele suunatakse signaal numbriga N ning R ja C on takistus-

ioonid ja mahtuvus ahelas ( Täpsem kirjeldusülesandeid, vt põhiosa punkt 10

manuaalne tekst).

Meie liides peaks võimaldama väärtuse muutmist

väärtused N, R ja C, mis on paigutatud kolmeks

alamakende signaal üksteise kohal (pinge,

klemmidele rakendatud), signaali tuletis

la ja takistuspinge U r. Välja arvatud

aknad graafikute ja redigeeritavate akende kuvamiseks

R u n Ex i t

sisend tuleb asetada liidese paneelile -

sa veel kaks nuppu - RUN - käivitage programm

Riis. 10. Liidese vaade

konto ja EXIT - töö lõpetamine ja kustutamine

graafika aken.

Esimene samm on areneda välimus liides. Lase mööda

meie esialgse visandi järgi peaks liides välja nägema midagi sellist

järgmiselt (joonis 10). Selle liidese elemendid on kolm akent

graafiku väljund (teljed juhtpaneeli osas), kolm staatilist silti N,R,C (tekst ), kolm andmesisestuse/redigeerimise akent (redigeeri ) ja kaks nuppu (push ).

Alamakende loomiseks, milles graafikat kuvatakse, kasutage joonisel paremal näidatud nuppu (aken ja teljed). Klõpsates juhtpaneelil sellel elemendil ja liigutades hiirt joonistuspaneelile, tuleb sinna asetada rist, mis jääb hiire otsa

kus peaks olema esimese alamakna vasak ülemine nurk. Vajutades ja hoides all hiire vasakut nuppu, peate venitama saadud ristküliku kuni õiged suurused. Pärast seda korratakse sarnaselt ülejäänud kahe akna ehitamise protseduuri.

Paremal näidatud redigeerimisnuppu kasutatakse muudetavate sisestuskastide loomiseks. Seda kasutatakse samamoodi nagu telgedega alamakende loomisel. Esmalt ilmub välja ristiga laetud hiir, mille abil ehitatakse sisendristkülik.

Jooniste paneeli pealdised luuakse tekstinupu abil, mis murrab ja joodab samamoodi nagu ülalpool kirjeldatud. Et mis tahes tekst ilmuks staatilisele tekstialale,

pealdisega, on vaja töötada atribuudiredaktoriga, mida kutsutakse kas nupu Atribuudiredaktor või kasutades topeltkoputus hiire vasak nupp vastaval objektil joonistuspaneelil.

Nuppude loomiseks ja paigutamiseks kasutage paneeli nimega Push . Nupu paigutamise ja suuruse valimise meetod on täpselt sama, mis ülal redigeerimisakna ja staatilise tekstiakna puhul kirjeldatud.

Sel viisil ehitatud väljund- ja redigeerimisaknaid, staatilisi tekstiaknaid ja -nuppe ning muid objekte saab joondada ja seada nende vahele teatud vahesid, kasutades paneeli Alignment Tools.

Selleks klõpsake juhtpaneelil vastavat nuppu ja kuvatakse joonduspaneel. Objektide arvu määramiseks, millega mis tahes toiminguid tehakse, tuleb need valida, klõpsates igal neist, hoides all tõstuklahvi. Valitud objektid märgitakse

mustad täpid vastavate objektide ümber. Kui teil on vaja mõne objekti (nupu, akna jne) suurust muuta, peate sellel objektil hiire vasaku nupuga klõpsama ja hiirega soovitud suurust muutma samamoodi nagu mis tahes Windowsi akna suurust .

Pildipaneelil graafiliste objektidega töötades on soovitav avada (kasutades Windowsi akna vastavat nuppu) pildipaneel täisekraanile ja valida kõigi pildipaneelil olevate objektide suurus.

Kuna kõigi objektide suurus on vaikimisi pikslites, võib see põhjustada nuppude ja/või akende kattumist väljundakna suuruse muutmisel. Et selliseid vältida ebasoodne sündmus kõigi objektide suurusühikud on vaja määrata mõõtmeteta muutujateks - akna suuruse murdosadeks. Seda suurust nimetatakse normaliseeritud. Selleks peate helistama atribuutide redaktorisse, klõpsates juhtpaneelil nuppu, millel on üle-

kirjutamine Omanditoimetaja . Olles valinud atribuutide redaktori ülemisse aknasse kõik sisestatud objektid (hoides all klahvi Ctrl ja valides objektid hiire vasaku nupuga), leiame atribuutide redaktori alumisest aknast atribuudi Units (mõõtühikud) ja valige see hiire vasaku nupuga klõpsates. Pärast seda ilmub redaktori keskosas spetsiaalses aknas vasakule atribuut Ühikud ja paremale väärtuste valikukast, milles on rippmenüü koos kehtivad väärtused omadused. Atribuut Units peab olema normaliseeritud . Samamoodi tuleb määrata atribuudi FontUnits väärtus – fontide suuruse mõõtühikud. See tagab, et akna suuruse muutmisel muutub fondi suurus.

Nuppudele ja staatilise teksti alale kirjete paigutamiseks valige vastav objekt (kas topeltklõpsuga otse pildialal või atribuutide redaktori ülemises aknas) ja atribuutide redaktori alumises aknas , leidke atribuut String ja pärast selle valimist sisestage jutumärkide vahele vajalik tekst (nt vastaval nupul 'Start'). Subtiitrite seadmiseks iga väljundakna kohale tuleb valida vastav aken ja helistada atribuudiredaktorisse8, mille alumisest aknast tuleb leida omadus Title .

8 Atribuutide redaktorit saab avada mitte ainult juhtpaneeli nupu abil, vaid

ja topeltklõpsake vastaval objektil.