Piirtopinnalle piirtäminen

Koko: px
Aloita esitys sivulta:

Download "Piirtopinnalle piirtäminen"

Transkriptio

1 OSA IV 333 LUKU LUKU Erilaiset piirtopinnat ja niiden käyttö Piirtotilan ja piirtopinnan asetukset ja käyttö Koordinaatistojen kohdistustapojen käyttö piirrettäessä tuumina tai sentteinä

2 334 Piirtopintatietorakenteet Pohjimmiltaan piirtopinta on Windowsin tietorakenne, jossa on piirtotoimintojen, kuten viivan piirtämisen, käyttämät oletusasetukset. Useimmista muista Windowsin tietorakenteista poiketen piirtopintatietorakennetta ei pääse käsittelemään koskaan suoraan sovelluksesta; ainoastaan sen asetuksia voidaan muuttaa vakiosaantifunktioilla. Windowsin piirtokirjastot Kaikki käyttöjärjestelmän piirtokoodi on toteutettu kahden DLL-kirjaston välisenä vuorovaikutuksena. Ensimmäinen näistä on aina GDI.DLL, joka tarjoaa sovellukselle laiteriippumattomat piirtofunktiot. Toinen DLL on laiteriippuva ja se on eri kirjasto eri näytöille, tulostimille tai piirtureille. Esimerkiksi tavalliselle VGAnäytölle piirrettäessä VGA.DLL tarjoaa piirtofunktioiden toteutuskoodin kyseiselle laitteelle. Grafiikan piirtäminen Piirtopinta Piirtopinta-termiä (device context) ei kannata säikähtää. Tämä hankala termi viittaa kuitenkin johonkin hyvin yksinkertaiseen, Windowsin perustana olevaan asiaan. Millaiselta Windows näyttäisi ilman piirtopintaa? Ei miltään. Piirtopinta on kirjaimellisesti pinta, jolle kaikki graafiset elementit - pisteet, viivat, fontit, värit ja kaikki muu piirretään. Tämä pinta voi olla näyttö, mutta se voi olla myös tulostin, piirturi, VR-kypärä tai joku muu kaksiulotteinen laite, eikä ohjelmoijan tarvitse tuntea tällaista laitetta yksityiskohtaisesti sitä käyttääkseen. Eräs Microsoftin innovaatioista oli piilottaa kaikki erilaiset piirtotavat ja laitteet Windows-käyttöjärjestelmän sisään. Tästä on ollut seurauksena graafisten sovellusten huima yleistyminen. Siinä oli ehkä Windowsin kaikkein tärkein ja aliarvostetuin vaikutus. Tänään voin ostaa paikallisesta tietokoneliikkeestäni uusinta mallia olevan tulostimen, asentaa yhden, valmistajan toimittaman, Windowsohjaimen ja jokainen Windows-ohjelma osaa käyttää uutta tulostinta välittömästi. Nämä yhdistää keskenään piirtotuen tarjoava piirtopinta. KATSO MYÖS Piirtopinnalle piirtämisestä luvusta 16. Tulostinpiirtopinnan käyttö luvussa 22. Erilaiset piirtopinnat Piirtopintoja on tavallisia ja on erikoisia, tiettyyn tarkoitukseen käytettäviä. Itse piirtopinnat ovat GDI-olioita (graphics device interface, piirtolaiteliittymä). GDI tarkoittaa oliojoukkoa, joka elää Windowsin ytimessä olevassa DLL-kirjastossa. Nämä funktiot ovat linkki piirtofunktiokutsun ja kaiken toteuttavan kovon kanssa keskustelevan laiteohjaimen välillä. Microsoft Foundation Classes (MFC) kirjaston luokat piilottavat piirtopinnat ja yksinkertaistavat ohjelman toimintaa GDI-olioiden kanssa. Tavalliset piirtopinnat kuuluvat CDC-luokkaan, joka sisältää lukuisia näyttämiseen tarkoitettuja piirto-, koordinaatistomuunnossekä rajausfunktioita. Myös erikoistuneemmat piirtopinnat on luotu tätä luokkaa laajentamalla. Seuraavissa kappaleissa on kerrottu näistä luokista tarkemmin.

3 OSA IV LUKU CDC-luokan käyttö Käyttämäsi piirtopintaluokka periytyy aina CDC-kantaluokasta. Tässä luokassa on kaksi alla olevaan GDI-olioon liittyvää kahvaa: m_hdckahva ja m_hattribdc-kahva. Näistä m_hdc on varsinainen piirtopinnan kahva, joka liittää luokan GDI-olioon käsittelemään kaiken piirtofunktioiden tulostuksen. m_hattribdc on puolestaan se piirtopinnan kahva, jonka kautta voidaan käsitellä piirtopinnan ominaisuuksia, kuten värien määrää ja piirtotiloja. Näistä jäsenattribuuteista et joudu juuri huolehtimaan, mutta muista, että käyttäessäsi GetDC():n ja ReleaseDC():n kaltaisia funktioita (jotka varaavat ja vapauttavat piirtopinnan ikkunasta) nämä GDI-kahvat liitetään CDC-luokkaasi ja irrotetaan siitä. CDC-piirtofunktiot CDC-luokka toteuttaa kaikki Windowsissa saatavilla olevat piirtofunktiot. Kukin näistä kutsuu yksinkertaisesti vastaavaa Win32- piirtofunktiota (GDI.DLL:stä) välittäen sille CDC-olioon upotetun piirtopintakahvan (m_hdc ja m_hattribdc). CDC-luokan kykyä kiinnittyä piirtopintaan ja piirtää siihen voidaan havainnollistaa hyvin yksinkertaisella esimerkkiohjelmalla. Jokaisessa ikkunassa on koko ikkunan kattava piirtopinta, näin myös koko näytön peittävällä työpöydän ikkunalla. Toistaiseksi olet nähnyt varsin vastuuntuntoisia sovelluksia: piirtopinnan helppoutta ja tehokkuutta esittääkseni aion tarttua kiinni suoraan työpöydän piirtopintaan (DC) ja piirtää siihen. Tämä tosin sekoittaa tilapäisesti Windowsin näytön, mutta ohjelmasta poistuttaessa se saadaan päivitettyä ennalleen. Seuraavien vaiheiden avulla saat tehtyä valintaikkunasovelluksen, joka käyttää piirtopintaa suoraan. Piirtopintaan tarttuvan valintaikkunasovelluksen luominen 1. Valitse File-valikosta New. 2. Valitse New-ikkunassa Projects-välilehti ja saat esiin luettelon erilaisista projekteista. 3. Valitse luettelosta MFC AppWizard (exe) ja anna projektin nimeksi Project Name ruutuun DCDraw. AppWizardin tekemä ReadMe.txt-tiedosto AppWizard tekee projektiesi tiedostojen hakemistoon readme.txt-tiedoston, jossa on selitetty luotujen tiedostojen merkitys sovellukselle. 4. Napauta OK ja saat esiin AppWizardin vaiheen Valitse sovelluksen tyypiksi Dialog Based Application. 6. Napauta Finish-painiketta ja saat erittelyn projektin rungosta. 7. Napauta OK, niin AppWizard tekee projektin tiedostot. Nyt sinulla on valintaikkunasovelluksen runko. Lisätään aluksi yksinkertainen painike sekä käsittelijä sen napautukselle, jotta voisimme toteuttaa piirtopintakoodimme.

4 336 Grafiikan piirtäminen Painikkeen luominen 1. Napauta projektin työtilaikkunassa ResourceView-välilehteä. 2. Napauta plusmerkkiä, jotta näkisit DCDraw-projektin resurssit. 3. Napauta Dialog-kansion viereistä plusmerkkiä ja saat esiin projektin valintaikkunaresurssit. 4. Kaksoisnapauta IDD_DCDRAW_DIALOG-alkiota ja pääset muokkaamaan sovelluksen pääikkunaa. 5. Napauta kerran TODO: Place Dialog Controls Here tekstiä ja paina Delete-näppäintä tekstin poistamiseksi. 6. Valitse painike Controls-työkalupalkista, raahaa se valintaikkunaan ja pudota. Suurenna painiketta huomattavasti. 7. Näppäile Alt+Enter ja pääset muokkaamaan painikkeen ominaisuuksia Push Button Properties ikkunassa. Anna painikkeen tekstiksi Caption-ruutuun Draw!. 8. Muuta painikkeen ID-tunnukseksi IDC_DRAWIT. 9. Näppäile Enter sulkeaksesi Push Button Properties ikkunan. Valintaikkunassa on nyt painike, joten voit lisätä sille käsittelijän napautusta varten. BN_CLICKED-käsittelijän lisääminen pikavalinnalla Helpoin tapa lisätä painikkeelle käsittelijä on kaksoisnapauttaa kyseistä kontrolia resurssieditorissa. Tämä lisää samalla tavoin rivin sanomakarttaan ja luo käsittelijäfunktion koodirungon, mutta ohittaa ClassWizardin vaiheet, jolloin pääset suoraan vaiheeseen 5 eli käsiksi koodiin. BN_CLICKED-käsittelijän lisääminen ClassWizardilla 1. Valitse uusi valintaikkunan painike (tässä Draw!) sitä napauttamalla. 2. Käynnistä MFC ClassWizard näppäilemällä Crtl+W. 3. MFC ClassWizard Message Maps sivun pitäisi tulla esiin. Uuden IDC_DRAWIT-painikkeen tulisi olla valmiiksi valittuna ellei, valitse se Object IDs luettelosta. 4. Kaksoisnapauta Messages-luettelossa BN_CLICKED-sanomaa lisätäksesi uuden käsittelijäfunktion. 5. Napauta Add Member Function ikkunassa OK ja käsittelijäfunktion nimeksi annetaan oletusnimi OnDrawit. 6. Napauta Edit Code painiketta aloittaaksesi käsittelijäfunktion muokkaamisen. Nyt voit toteuttaa piirtopintaan tarttumisen ja siihen piirtämisen painikkeen napautuksen käsittelijäfunktiossa listauksen 15.1 mukaisesti.

5 LISTAUS 15.1 LST15_1.CPP Työpöydän piirtopinnalle piirtäminen OSA IV LUKU void CDCDrawDlg::OnDrawit() 2 { 3 // TODO: Add your control notification handler code here 4 5 // ** Get a pointer to the desktop window 6 CWnd* pdesktop = GetDesktopWindow(); 1 7 // ** Get a pointer to it's device context 8 CDC* pdc = pdesktop->getwindowdc(); 2 9 // ** loop through 300 pixels horizontally 10 for(int x=0;x<300;x++) 11 { 12 // ** loop through 300 pixels vertically 13 for(int y=0;y<300;y++) 14 { 15 // ** set each pixel to a different color 16 pdc->setpixel(x,y,x*y); 3 17 } 18 } 19 pdesktop->releasedc(pdc); 20 } 1 Tämä rivi hakee työpöytäikkunan (koko näytön). 2 Tässä haetaan työpöytäikkunan pääpiirtopinta. 3 Kukin suorakulmion kuvapiste asetetaan sen koordinaateista lasketuksi väriksi. Tässä listauksessa olen hankkinut osoittimen Windowsin työpöydälle rivin 6 GetDesktopWindow()-funktiolla. Tästä CWnd-osoittimella voin tarttua suoraan Windowsin pääikkunan piirtopintaan rivin 8 GetWindowDC()-funktiolla. Riveillä piirretään kuvan 15.1 esittämä hauska kuvio. Rivit käyvät läpi 300 x 300 kuvapisteen alueen kahdessa sisäkkäisessä for-silmukassa. Kunkin kuvapisteen kohdalla kutsutaan SetPixel()-funktiota, jonka ensimmäiset parametrit määrittävät kuvapisteen vaaka- ja pystykoordinaatit (0,0 on vasemmalla ylhäällä). Kolmas parametri on värin numero (tästä tarkemmin luvussa 16). Tässä väri lasketaan x- ja y-koordinaattien tulona, joka saa aikaan upean ja värikkään moiré-kuvien. Lopuksi joudut vapauttamaan piirtopinnan rivin 19 ReleaseDC()-funktiolla. Moirén renkaat Moirén renkaat ovat kahden samanlaisen osittain läpinäkyvän mallin muodostama interferenssikuvio, joka ensimmäisen kerran havaittiin läikesilkkikankaassa (ransk. moiré). Sama ilmiö saadaan aikaan ohuissa verkkoverhoissa, kun kangaskerrosta kierretään hitaasti toisen yllä. Tämä sama interferenssikuvio on myös hologrammitekniikan perusteena.

6 338 Grafiikan piirtäminen KUVA 15.1 Työpöytään tarttuminen ja siihen piirtäminen Koska DCDraw-sovellus käyttäytyy vastuuttomasti ja sotkee työpöydän, joudut siivoamaan jälkesi. Voit käsitellä WM_DESTROY-sanoman OnDestroy()-käsittelijässä. Tätä kutsutaan valintaikkunaa tuhottaessa, joten siivouskoodi sopii sinne oikein hyvin. WM_DESTROY-sanoman käsittelijän lisääminen 1. Valitse projektin työtilaikkunassa ClassView-sivu. 2. Avaa DCDraw-luokkien luettelo plusmerkistä. 3. Avaa CDCDrawDlg-luokan pikavalikko napauttamalla sitä hiiren oikealla painikkeella. 4. Valitse pikavalikosta Add Windows Message Handler komento. 5. Valitse New Windows Messages/Events luettelosta WM_DESTROY-sanoma. 6. Napauta Add and Edit painiketta ja saat lisättyä sanomalle käsittelijän CDCDrawDlg-luokkaan ja voit aloittaa funktion koodaamisen.

7 Nyt voit lisätä siivouskoodin OnDestroy()-käsittelijään. Saat siivottua työpöydän pyytämällä työpöytäikkunaa piirtämään itsensä uudelleen ja pyytämään vielä lapsi-ikkunoitaankin tekemään samoin (sovelluksesi siis). Tämä tehdään listauksessa 15.2 esitetyssä koodissa. Rivillä 8 työpöytäikkunan (löytyy GetDesktopWindow()-funktiolla) jäsenfunktio RedrawWindow() pakottaa työpöytäikkunan päivityksen. RedrawWindow()-funktiolle syötetään kolme parametriä; kaksi ensimmäistä ovat piirtosuorakulmio ja piirtoalue. Syöttämällä molempien parametrina NULL RedrawWindow() olettaa täysin oikein, että koko ikkuna halutaan päivittää. Kolmas parametri sisältää joukon lippuja: DRW_ERASE pyyhkii kaiken, RDW_INVALIDATE pyytää uudelleenpiirron jälkeenpäin, RDW_ALLCHILDREN pyytää lapsiikkunoitakin piirtämään itsensä uudelleen ja DRW_ERASENOW pakottaa toimenpiteen heti suoritettavaksi. LISTAUS 15.2 LST15_2.CPP Työpöydän ja sovellusikkunoiden piirtäminen uudelleen RedrawWindow()-funktiolla OSA IV LUKU void CDCDrawDlg::OnDestroy() 2 { 3 CDialog::OnDestroy(); 4 5 // TODO: Add your message handler code here 6 7 // ** Redraw the desktop and all child windows 8 GetDesktopWindow()->RedrawWindow(NULL,NULL, 1 9 RDW_ERASE+RDW_INVALIDATE+ 10 RDW_ALLCHILDREN+RDW_ERASENOW); B } 1 Pakottaa koko Windowsin työpöydän ja kaikkien sovellusikkunoiden uudelleenpiirtämisen. Käännettyäsi ja ajettuasi ohjelman muutokset tehtyäsi pitäisi ohjelman piirtää kuvan 15.1 mukainen värikäs suorakulmio. Toki piirtopintaluokassa (DC) on paljon SetPixel()-funktiota monipuolisempiakin piirtofunktioita, mutta emme käsittele niitä vielä, vaan luvuissa 16 ja 17. KATSO MYÖS Kynillä ja siveltimillä piirtäminen luvussa 16. Tekstin kirjoittaminen piirtopinnalle luvussa 17.

8 340 Työaluepiirtopintaan liittyvän ikkunankahvan käsitteleminen Saatat tarvita pääsyä työaluepiirtopintaan liittyvään ikkunaan. CClientDC-luokka tallentaa siihen liittyvän ikkunan kahvan m_hwnd-jäsenmuuttujaan. Voit välittää m_hwnd-ikkunakahvan (HWND) CWnd-olion Attach()- funktiolle käsitelläksesi ikkunafunktioita. 1 Muodosta piirtopinta valintaikkunan työalueen oikein käyttämiseksi. Grafiikan piirtäminen Ikkunan työalue piirtopintana CClientDC-luokka huolehtii automaattisesti GetDC()- ja ReleaseDC()-toiminnoista puolestasi. Muodostaessasi CClientDColion annat parametrinä sille ikkunaosoittimen ja luokka hoitaa puolestasi kiinnittymisen annetun ikkunan piirtopintaan. Luokkaa tuhottaessa kutsutaan automaattisesti ReleaseDC()-funktiota, joten et joudu huolehtimaan siitäkään. Client-termi tarkoittaa tavallista ikkunan työaluetta, mutta ikkunalle löytyy myös harvinaisempi CWindowDC-luokka, jonka kautta piirtopintana voidaan käyttää ikkunan otsikkopalkkia ja reunoja. Tähän ei kuitenkaan usein ole tarvetta, koska hyvin käyttäytyvä sovellus piirtää normaalisti vain ikkunan työalueelle. Saat oletusprojektisi käyttämään CClientDC-oliota CDC-osoittimen sijaan. Jos kaksoisnapautat ClassView-ikkunassa OnDrawit()-funktiota, pääset suoraan muokkaamaan painikkeen käsittelijäkoodia. Tee muutokset OnDrawit()-funktioon listauksen 15.3 mukaan. Työpöytäikkunan sijaan piirrät nyt valintaikkunan piirtopinnan päälle. Tätä varten CClientDC-oliolle dlgdc välitetään itse valintaikkunaan osoittava this-osoitin (osoitin omaan luokkaan). Koska valintaikkuna on CWnd-luokan tyyppinen olio, tämä ei aiheuta ongelmia ja dlgdc-olio saa kahvan itse valintaikkunan piirtopintaan. Voit piirtää entiseen tapaan riveillä 8-16, mutta muista, että rivillä 14 dlgdc käyttää SetPixel()-funktiota olion, ei osoittimen kautta. Lopuksi huomaa, että ReleaseDC()-funktiota ei kutsuta OnDrawit()-funktion lopussa, sen sijaan piirtopintakahva vapautetaan automaattisesti CClientDC:n tuhoajafunktiossa, kun dlgdc-olio tuhotaan funktion lopussa. LISTAUS 15.3 LST15_3.CPP CClientDC-luokan käyttö valintaikkunan piirtopinnan kaappaamiseen 1 void CDCDrawDlg::OnDrawit() 2 { 3 // TODO: Add your control notification handler code here 4 5 // ** Construct a client DC from the dialog window 6 CClientDC dlgdc(this); 1 7 // loop through 300 pixels horizontally 8 for(int x=0;x<300;x++) 9 { 10 // loop through 300 pixels vertically 11 for(int y=0;y<300;y++)

9 OSA IV LUKU { 13 // ** set each pixel to a different color 14 dlgdc.setpixel(x,y,x*y); 15 } 16 } 17 } Käännettyäsi ja ajettuasi sovelluksen uudelleen näiden muutosten tekemisen jälkeen pitäisi piirron kohdistua ainoastaan valintaikkunaan DrawIt-painiketta painettaessa (kuva 15.2). Paint-piirtopinnan käyttö CPaintDC on piirtopinnan erikoistapaus, joka paketoi Windowsin WM_PAINT-sanoman käsittelyn. Ikkunalle lähetetään WM_PAINT-sanoma, kun koko ikkuna tai osa siitä paljastuu esiin toisen ikkunan takaa tällöin sovelluksesi pitää piirtää ikkunan sisältö uudelleen. Ikkunan uudelleenpiirtämisen pakottaminen Tavallisesti WM_PAINT-sanomia lähetetään, kun tietty ikkunan osa tulee piirtää uudelleen. Voit myös pakottaa WM_PAINT-sanoman lähettämisen ikkunalle CWndluokan RedrawWindow()- funktiolla. Tämän funktion parametreillä voit määrittää ikkunan uudelleenpiirrettävän alueen ja sen, pyyhitäänkö sen yhteydessä myös ikkunan tausta. KUVA 15.2 Valintaikkunan piirtopinnan käyttö CClientDC:n avulla Koko ikkunan uudelleenpiirtämisen sijaan pienen osan siitä paljastuessa voit hyödyntää Windowsin välittämää tietoa paljastuneen ikkunan osan koordinaateista. Näin voit piirtää uudelleen ainoastaan paljastuneen osan ja välttää vielä piilossa olevan ikkunan osan piirtämisen. Tähän Windowsilta saatuun alueeseen ei kuitenkaan tarvitse kiinnittää liiemmin huomiota: jos yrität piirtää muuttuneen alueen ulkopuolelle, mitään ei tapahdu. Tämä johtuu siitä, että piirtopinta on asetettu myös rajaamaan piirtoalue muuttuneeseen alueeseen. Tämän rajaamiseen ei välttämättä kannata luottaa, koska kaikki piirtokoodi suoritettaisiin kuitenkin ja nopeutusetu menetettäisiin. Joskus tämä on kuitenkin välttämätöntä, koska mutkikkaiden kuvioiden ja tekstin kohdalla on usein vaikeaa rajata piirrettävä alue. Voit siis antaa Windowsin huolehtia rajaamisesta (clipping). Tekemäni pisteen piirtäminen on tehty hyödyntämään piirtotietoa. Voit muuttaa esimerkkiohjelman piirtämään OnPaint()-käsittelijästä WM_PAINT-sanoma saataessa ja piirtämään ainoastaan paljastuneeseen ikkunan osaan. Kaksoisnapauta ClassView-ikkunassa OnPaint()-

10 342 Grafiikan piirtäminen käsittelijäfunktiota ja pääset muokkaamaan sitä suoraan. Et tällä kertaa tarvitse ClassWizardia, koska AppWizard luo OnPaint()-funktion automaattisesti sovellusrunkoon. Koko OnPaint()-funktio on esitetty listauksessa Rivillä 21 on rivi, joka on jouduttu lisäämään OnDrawit()-funktiosi kutsumiseksi. Toinen kiinnostava AppWizardin tuotos näkyy myös tässä listauksessa. Rivillä 3 kutsutaan IsIconic()-funktiota ja sen palauttaessa TRUE ikkuna pienennetään (pois työpöydältä tehtäväpalkkiin). Näin tapahtuessa sovelluksen kuvake (icon) piirretään pienennetyn ikkunan keskelle rivillä 16. IsIconic()-funktion FALSE-paluuarvoon voit sitten toteuttaa oman OnPaint()-koodisi ja rivillä 21 kutsua omaa OnDrawit()-funktiotasi. LISTAUS 15.4 LST15_4.CPP OnPaint()-käsittelijän muuttaminen valintaikkunasovellukselle 1 Pyyhkii pienennetyn ikkunan taustan. 2 Piirtää kuvakkeen pienennetyn ikkunan keskelle. 3 Tällä lisärivillä kutsutaan hauskaa väritysfunktiota. 1 void CDCDrawDlg::OnPaint() 2 { 3 if (IsIconic()) 4 { 5 CPaintDC dc(this); // device context for painting 6 SendMessage(WM_ICONERASEBKGND, 7 (WPARAM) dc.getsafehdc(), 0); 1 8 // Center icon in client rectangle 9 int cxicon = GetSystemMetrics(SM_CXICON); 10 int cyicon = GetSystemMetrics(SM_CYICON); 11 CRect rect; 12 GetClientRect(&rect); 13 int x = (rect.width() - cxicon + 1) / 2; 14 int y = (rect.height() - cyicon + 1) / 2; 15 // Draw the icon 16 dc.drawicon(x, y, m_hicon); 2 17 } 18 else 19 { 20 // ** kutsu omaa piirtofunktiota 21 OnDrawit(); 3 22 } 23 } Muuta nyt OnDrawit()-funktio käyttämään CPaintDC:tä. Nämä muutokset on esitetty listauksessa Huomaa, että rivillä 6 muodostetaan CPaintDC-luokasta paintdc-olio valintaikkunasta. Tämä toimii kunnolla ainoastaan, kun ikkuna käsittelee WM_PAINT-sanoman.

11 Tässä kutsut funktiota OnPaint()-käsittelijästä ja piirto toimii. Tämä on yhä myös painikkeen käsittelijäkoodi, joten voit kutsua sitä painiketta napauttamalla. Mitään ei tosin tapahdu, koska ikkunassa ei ole päivittämättömiä alueita, joten piirto rajataan kokonaan pois. Seuraava muutos on rivillä 8, jossa määritellään RECT-osoitin ja se asetetaan paintdc-olion m_ps-jäsenessä olevan rcpaint-suorakulmion osoitteeksi. Tässä suorakulmiossa on uudelleenpiirrettävä alue, jota hyödynnetään riveillä 10 ja 13, jotta silmukassa käytettäisiin ainoastaan alueen sisällä olevia koordinaatteja. Tämä nopeuttaa piirtämistä huomattavasti, koska vain pieni osa ikkunasta joutuu uudelleenpiirrettäväksi. SetPixel() osoittautuu varsin hitaaksi suuremmilla alueilla; alkuperäisessä versiossa sitä kutsuttiin 300 x 300 kuvapisteen piirtämiseen eli kertaa. Jos paljastunut alue on ikkunasta ainoastaan 50 x 30 kuvapistettä, ei piirrettäviä pisteitä ole kuin 1500, joka nopeuttaa piirtämisen 60-kertaiseksi. Kannattaa! Huomaa vielä yksi muutos: SetPixel()-funktiota kutsutaan nyt paintdc-oliosta rivillä 16. SetPixel() on toteutettu CDC-luokkaan, joten kaikki sen piirtofunktiot ovat edelleen käytettävissä siitä periytyvissä erikoistuneemmissa piirtopintaluokissa. LISTAUS 15.5 LST15_5.CPP CPaintDC-luokan hyödyntäminen WM_PAINT-pyyntöjen käsittelyssä OSA IV LUKU void CDCDrawDlg::OnDrawit() 2 { 3 // TODO: Add your control notification handler code here 4 5 // ** Construct a paint DC from the dialog window 6 CPaintDC paintdc(this); 1 Huomaa, että ainoastaan tällä kertaa paint-suorakulmiota käytetään piirtokohteena. 7 // ** Make a short cut poiner to the paint rectangle 8 RECT* prect = &paintdc.m_ps.rcpaint; 1 9 // ** loop through the horizontal paint rectangle 10 for(int x=prect->left; x < prect->right ;x++) 11 { 12 // ** loop through the vertical paint rectangle 13 for(int y=prect->top; y < prect->bottom ;y++) 14 { 15 // ** set each pixel to a different color 16 paintdc.setpixel(x,y,x*y); 17 } 18 } 19 }

12 344 Grafiikan piirtäminen Käännä ja aja sovellus näiden muutosten tekemisen jälkeen ja pääsemme tutkimaan paint-piirtopinnan käyttäytymistä. Aluksi valintaikkunalla pitäisi olla värikäs tausta ja painikkeet näkyvissä: ikkunaa avattaessa annetaan ensimmäinen WM_PAINT-sanoma, jolla koko ikkuna piirretään ja painikkeet piirretään sen päälle. Näet WM_PAINT-sanoman toiminnassa peittäessäsi ikkunan puoliksi toisella (esimerkiksi Laskinohjelmalla). Sen saat käynnistettyä napauttamalla tehtäväpalkin Käynnistä-painiketta, valitsemalla Ohjelmat ja Apuohjelmatvalikosta Laskin (Start/Programs/Accessories/Calculator). Järjestely näkyy kuvassa KUVA 15.3 WM_PAINT-sanoman kokeileminen paljastamalla ikkuna toisen alta. Kun asetat Laskimen puoliksi DCDraw-ikkunan päälle, napauta DCDraw-ikkunaa, jotta se tulisi etualalle. Uusi paljastuva ikkunan osa piirretään uudelleen. Piirtäminen kestää hetken (vanhalla P166:llani noin puoli sekuntia). Valitse nyt Laskin-ikkuna ja siirrä sitä hieman vasemmalle ja ylös. Lopeta raahaaminen ja sovellusikkunasi paljastunut alue tulee uudelleenpiirretyksi hieman nopeammin. Kun siirrät päällimmäistä ikkunaa lisää, piirto nopeutuu joka kerralla. Kun jäljellä on ainoastaan pieni paljastumaton osa vasenta yläkulmaa, valitse sovellusikkunasi ja tutki piirtoaikaa se käy paljon ensimmäistä kertaa nopeammin. Syy tähän on, että paljastumaton alue oli pieni ja ainoastaan se piti päivittää. Näin ollen tarvitaan vähemmän SetPixel()- kutsuja ja piirtäminen käy nopeammin. Näitä kahta ikkunaa siirtelemällä saat tuntuman WM_PAINT-sanoman vaikutukseen. Kaikki Windows-sovellukset joutuvat vastaamaan tähän sanomaan, vaikka sen käsittely usein piilotetaankin kontrolliin tai näkymäluokkaan, jolloin siitä ei tarvitse itse huolehtia. Muistanet vielä CPaintDC-luokan m_ps-jäsenen. Kyseessä on PAINTSTRUCT-tietorakenne, jossa on määritelty muun muassa piirrettä-

13 vän alueen määrittävä rcpaint-suorakulmio. Tietorakenteeseen kuuluu myös muita hyödyllisiä jäseniä. PAINTSTRUCT-tietorakenne määritellään seuraavasti: OSA IV LUKU typedef struct tagpaintstruct { HDC hdc; BOOL ferase; RECT rcpaint; BOOL frestore; BOOL fincupdate; BYTE rgbreserved[32]; } PAINTSTRUCT; Jäsen hdc on kahva luokkaan piiloutuvaan GDI-piirtopintaan. Mukana on ferase-lippu, jonka Windows asettaa arvoon TRUE, mikäli tausta halutaan pyyhkiä ennen piirtämistä. Näit jo rcpaint-jäseneen talletettavan piirrettävän suorakulmion koordinaatit listauksessa Kolme viimeistä jäsentä on varattu Microsoftin dokumentoinnin mukaan Windowsille, joten niihin on parempi olla koskematta. Saattaa ihmetyttää, mistä kaikki nämä tiedot saadaan CPaintDColiollesi. Vastaus on CWnd-luokan BeginPaint()-funktiossa. Muistathan, että CDialog-luokka on muiden kontrollien tavoin peritetty CWnd-luokasta, joka myös hoitaa valintaikkunankin näyttämisen. Näin kaikilla tästä luokasta periytyvillä luokilla on kaikki ikkunan perustoiminnat ja ne kaikki alustavat CPaintDC-oliota määriteltäessä PAINTSTRUCT-tietorakenteen BeginPaint()-funktiolla. Kun CPaintDC-olio tuhotaan, kutsutaan vastaavaa CWnd:n EndPaint()- funktiota ilmoittamaan Windowsille, että WM_PAINT-sanoman käsittely on päättynyt ja olet saanut uudelleenpiirrettyä sovellusikkunassasi piirrettäväksi tarkoitetut osat. WM_ERASEBKGNDsanoman käsitteleminen Toinen tapa selvittää, tarvitseeko tausta pyyhkiä, on lisätä käsittelijäfunktio Windowsin WM_ERASEBKGND-sanomalle. Tällöin uutta käsittelijäfunktiotasi OnEraseBkGnd() kutsutaan aina taustan pyyhkimistä tarvittaessa. OnEraseBkGnd()-funktio saa ensimmäisenä parametrinään osoittimen kyseiseen piirtopintaolioon (CDC-olio). Muistipiirtopintojen käyttö Muistipiirtopinta (memory device context) on piirtopinta ilman siihen liittyvää laitetta. Tämä saattaa aluksi tuntua oudolta, mutta kyseessä on itse asiassa varsin käyttökelpoinen järjestely. Tavallisesti näitä käytetään tavallisen piirtopinnan kanssa kuva-alueiden kopiointiin ja liittämiseen eri osiin näyttöä. Voit luoda näyttöpiirtopinnan kanssa yhteensopivan muistipiirtopinnan. Tämän jälkeen voit kopioida kuvia muistiin ilman niiden näyttämistä ja takaisin varsinaiselle piirtopinnalle kuvien näyttämistä varten. Muistipiirtopinta ei piiloudu omaan MFC:n luokkaan, koska CDC

14 346 Bittikarttojen koot muistipiirtopinnoilla Bittikartta voi muistipiirtopinnalla olla selvästi vastaavaa näyttöpiirtopintaa suurempi tai pienempi. Luomalla suuren bittikartan voit luoda paljon tavallista näyttöä erottelukyisemmän piirtopinnan. Muista kuitenkin, että suuri bittikartta vaatii enemmän muistia. Jos muistia tarvitaan enemmän kuin koneeseen on asennettu RAMia, otetaan käyttöön virtuaalimuisti, mikä hidastaa selvästi koneen toimintaa. Hitauden syy on jatkuva muistilohkojen vaihtaminen kovalevyltä RAMiin ja päinvastoin. Yhteensopivien muistipiirtopintojen ja kuvalohkokopioinnin (bit blitting) käyttö Jos haluat kopioida näytön väritettyjä lohkoja muistipiirtopinnalle tai muistipiirtopinnalta näytölle, joudut aina luomaan ja valitsemaan käyttöön näyttöpiirtopinnan kanssa yhteensopivan bittikartan. Grafiikan piirtäminen kelpaa tarkoitukseen varsin hyvin. Koska kyseessä on tavallinen CDCpiirtopintaluokka, voit käyttää sitä piirtämiseen tavalliseen tapaan tosin piirto menee muistiin, eikä käyttäjä näe sitä, ellet kopioi sitä edelleen näyttöpiirtopinnalle. Voit siis luoda muistiyhteensopivan piirtopinnan ja muuttaa piirtokoodisi piirtämään muistiin näytön sijaan. Kuvan muistiin piirtämisen jälkeen se saadaan kopioitua näytölle BitBlt()-funktiolla. Listaukseen 15.6 on tehty varsin paljon aiemmista versioista, koska muistipiirtopinnan luomisen lisäksi joudut luomaan myös bittikartan muistipiirtopinnalle. Ikkunaan liitetyistä näyttöpiirtopinnoista poiketen muistipiirtopinnalla ei ole automaattisesti näyttöyhteensopivaa bittikarttaa. Paint-piirtopinta on muutettu takaisin tavalliseksi työalueen piirtopinnaksi ja muistipiirtopinta on määritelty listauksen 15.6 rivillä 9 memdc-olioksi. Piirtopinnan CreateCompatibleDC()-jäsenfunktiota kutsutaan rivillä 10. Tälle funktiolle syötetään clientdc-olio, jonka avulla lasketaan piirtopinnan koko ja muut tiedot, jotta muistipiirtopinta saataisiin yhteensopivaksi näyttöikkunan kanssa. Rivillä 17 määritellään bittikartta, jota muistipiirtopinta käyttää piirtämiseen. Tämä bittikartta luodaan rivin 18 CreateCompatibleBitmap()-funktiolla. Funktio saa clientdcviittauksen bittikartalle käytettävän piirtopinnan selvittämistä varten tästä saadaan tiedot bittikartan värimäärästä. Työalueen leveys ja korkeus selvitetään rivillä 14 ja nämä syötetään parametrinä bittikartan kooksi. Rivillä 22 bittikartta lisätään piirtopintaan SelectObject()- funktiolla. Kaikki muistipiirtopintaa käyttävät piirtofunktiot käyttävät nyt annettua bittikarttaa. Tämän jälkeen voit piirtää aiemman värikkään bittikartan tavalliseen tapaan, tällä kertaa kuvio vain päätyy muistiin eikä suoraan näytölle. Rivillä 36 BitBlt()-funktiolla kopioidaan bittikartta takaisin näyttöpiirtopinnalle. BitBlt() on kuvankopiointifunktio (nimi tulee termistä bit blitting tai bit block transfer, joka tarkoittaa nopeaa kovon tukemaa muistilohkon siirtoa paikasta toiseen). Yhä useammin näytönohjain tekee tämän, tosin kovotuen puuttuessa prosessori hoitaa kopioinnin. BitBlt() kopioi tiedot memdc:stä clientdc:lle, kunhan syötät parametreinä kuva-alueen leveyden (width), korkeuden (height) sekä aloituskoordinaatit. Tämän funktion kiinnostavin parametri on SRCINVERT-lippu, joka määrää BitBlt():n kopioimaan kuvan käänteisvärein. Tällä saadaan aikaan kohdeikkunassa erilaiset värit kuin alkuperäisessä, mikä todista-

15 nee muistipiirtopinnan käytön ja sieltä kopioinnin valintaikkunan piirtopinnalle. Jos haluat kopioida kuvan sellaisenaan, SRCCOPY-lippu takaa sen. Tee listauksessa 15.6 esitetyt muutokset ja poista OnPaint()- käsittelijästä OnDrawit()-kutsu (muuten seuraukset ovat odottamattomat). Käännä ja aja sovelluksesi. DrawIt-painiketta napautettaessa huomaat pienen viiveen kuvaa muistiin piirrettäessä. Tämän jälkeen vastavärikuva kopioidaan koko valintaikkunan piirtopinnalle. LISTAUS 15.6 LST15_6.CPP Muistipiirtopintaan piirtäminen OSA IV LUKU void CDCDrawDlg::OnDrawit() 2 { 3 // TODO: Add your control notification handler code here 4 5 // ** Construct a paint DC from the dialog window 6 CClientDC clientdc(this); 7 8 // ** Create a compatible memory device context 9 CDC memdc; 10 memdc.createcompatibledc(&clientdc); // ** Find the Client Rect 13 CRect rcclient; 14 GetClientRect(&rcClient); // ** Create a compatible bitmaps 17 CBitmap membitmap; 18 membitmap.createcompatiblebitmap(&clientdc, 19 rcclient.width(),rcclient.height()); // ** Select it into our memory device context 22 memdc.selectobject(&membitmap); // ** loop through the horizontal client rectangle 25 for(int x=0; x < rcclient.width() ;x++) 26 { 27 // ** loop through the vertical client rectangle 28 for(int y=0; y < rcclient.height() ;y++) 29 { 30 // ** set each pixel to a different color 31 memdc.setpixel(x,y,x*y); 3 32 } 33 } // ** Copy the memory image back to the client device context 36 clientdc.bitblt(0,0, rcclient.width(), 37 rcclient.height(), &memdc,0,0,srcinvert); 4 38 } 1 Näyttöpiirtopinnan kanssa yhteensopiva mustipiirtopinta luodaan.tietokoneen nimi haetaan ja tallennetaan tekstimuuttujaan. 2 Myös bittikartan tulee olla yhteensopiva näyttöpiirtopinnan ominaisuuksien kanssa. 3 Kaikki piirtäminen tehdään muistiin, näytöllä ei näy siitä vielä mitään. 4 Lopuksi koko kuva kopioidaan näytölle käyttäjän nähtäväksi.

16 348 Koordinaattiavaruus ja pystyakseli Kaikki piirtopinnan piirtofunktiot tarvitsevat parametrit, jotka määrittävät paikan koko koordinaattiavaruudessa. Koordinaattiavaruus on kaksiulotteinen pinta, jonka akselit ovat suorassa kulmassa keskenään. Kunkin pisteen pystyja vaakakomponentti syötetään omana parametrinään piirtofunktioille. Kun käytetään MM_TEXTkohdistustapaa, pystyakselilla pienemmät arvot sijoittuvat ikkunassa ylemmäksi ja pienemmät vaakasuuntaiset arvot vasemmalle. Muissa koordinaatiston kohdistustavoissa pystyakselin arvot kasvavat ylöspäin, mutta vaaka-akselin pienimmät arvot ovat yhä vasemmalla. Grafiikan piirtäminen Koordinaatiston kohdistustapojen käyttö Piirtopinnat tarjoavat hyvin hyödyllisen työkalun koordinaatistojen kohdistustapojen muodossa. Koordinaatiston kohdistustapa (mapping mode) tarkoittaa periaatteessa mahdollisuutta piirtää näytölle tai tulostimelle kuvapisteiden sijaan tuuma- tai senttiyksiköin ja vieläpä saada mittakaavakin miltei oikein. Koordinaatiston kohdistustavoista puhuttaessa törmäät loogisiin yksiköihin ja fyysisiin yksiköihin (device units). Yksinkertaistaen: fyysinen yksikkö on kuvapiste, pikseli, joka on pienin laitteen erottama kuvan mitta. Looginen yksikkö voi olla esitetty amerikkalaisin/ englantilaisin mitoin, metrijärjestelmässä tai suhteessa fonttiin. Oletuskohdistustapa piirtopinnoilla on MM_TEXT. Outo nimi viittaa yhtenevyyteen loogisten ja fyysisten yksiköiden välillä: yksi looginen on yksi fyysinen yksikkö, joten mitään ei muunneta ja ohjelma antaa piirtokomennot suoraan kuvapisteinä. Muitakin kohdistustapoja on, kuten taulukko 15.1 esittää. TAULUKKO 15.1 Tuetut koordinaatistojen kohdistustavat Lippu MM_TEXT MM_LOMETRIC MM_HIMETRIC MM_LOENGLISH MM_HIENGLISH MM_TWIPS MM_ISOTROPIC MM_ANISOTROPIC Yksi looginen yksikkö on Yksi kuvapiste 0,1 mm 0,01 mm 0,01 tuumaa 0,001 tuumaa 1/1440 tuumaa tai 1/20 (tulostus)pistettä (fonteissa) Käyttäjän määräämä arvo, kunhan X ja Y ovat yhtä suuret Käyttäjän määräämä arvo Koordinaatiston kohdistustavan asettaa piirtopinnan SetMapMode()- funktio, jonka ainoa parametri on joku taulukon lipuista. Asettamisen jälkeen piirtofunktion saama GDI muuntaa koordinaatit fyysisiksi yksiköiksi (kuvapisteiksi). Joten jos asetat kohdistustavaksi MM_LOMETRIC ja annat piirtofunktiolle arvon 100, kohdistustapa tietää tarkoitettavan 100 x 0,1 mm eli yhtä senttimetriä. Tämän jälkeen lasketaan vielä, kuinka monta kuvapistettä näytöllä tai tulostimella

17 voidaan esittää ja muunnos tehdään tällä perusteella. MM_ISOTROPIC ja MM_ANISOTROPIC tapoja käytettäessä käyttäjä voi itse määrittää kuvapisteen ja mittayksikön suhteen SetWindowExt()- ja SetViewPortExt()-funktioilla. Lisäksi koordinaatiston nollapisteen paikkaa voidaan muuttaa SetWindowOrg()- ja SetViewPortOrg()- funktioilla. Kannattaa myös muistaa, että kaikki koordinaatiston kohdistustavat MM_TEXT:iä lukuun ottamatta kasvattavat y- koordinaattia ylöspäin. Tämän huomiotta jättämisestä saattaa seurata ylösalaisin olevia kuvia tai kuva saattaa joutua jopa pois näyttöalueelta. Negatiiviset koordinaatitkin ovat varsin tavallisia, etenkin, jos koordinaatiston nollapistettä on siirretty. Kokeilemme tässä mainittuja tietoja pienessä SDI-sovelluksen näkymää käyttävässä ohjelmassa. Luo aluksi SDI-sovellus luvun 12 ohjeiden mukaan. Ensimmäisessä AppWizardin ikkunassa (Step 1) joudut muuttamaan sovelluksen SDI-tyyppiseksi, mutta muut asetukset voit säilyttää oletettuina. Nimeä projekti MapMode:ksi. MapModen näkymäluokassa on OnDraw()-jäsenfunktio, johon piirtämiskoodi tavallisesti sijoitetaan. Pääset käsiksi OnDraw()- funktioon seuraavien ohjeiden mukaan. OSA IV LUKU Näkymän OnDraw()-funktion hakeminen ja muokkaaminen 1. Valitse projektin työtilaikkunassa ClassView-sivu. 2. Napauta plusmerkkiä avataksesi projektin luokkien luettelon. 3. Napauta MapModeView-luokan viereistä plusmerkkiä. 4. Kaksoisnapauta näkymäluokan (view) OnDraw()-funktiota ja pääset muokkaamaan sitä. Voit lisätä listauksessa 15.7 esitetyt uudet rivit OnDraw()-funktioon. Aluksi koordinaatiston kohdistustavaksi asetetaan MM_LOMETRIC (rivillä 9), eli käytettävä yksikkö on 0,1 mm. Rivillä 10 luetaan työalueen koordinaatit funktiolla GetClientRect(). Kohdistustavasta riippumatta saat tältä funktiolta koordinaatit aina kuvapisteinä, joten joudut muuttamaan ne fyysisistä koordinaateista loogisiksi rivin 16 funktiolla DPtoLP(). DPtoLP() tulee sanoista Device Points to Logical Points (fyysinen piste loogiseksi). Funktio käsittelee osoittimena annetun pisteen (CPoint) tai suorakulmion (CRect) koodinaatteja. Saman kääntäen tekee LPtoDP()-

18 350 Grafiikan piirtäminen funktio, eli muuttaa loogisen pisteen koordinaatit fyysisiksi. Rivien silmukassa x-muuttuja käy työalueen vasemmasta reunasta oikeaan loogisiksi koordinaateiksi muuttamisen jälkeen. Silmukassa siirretään x- koordinaattia 100 loogista yksikköä kerrallaan eli MM_LOMETRIC-tavalla yksi senttimetri. Kolme SetPixel()-funktiota merkkaavat ikkunan keskiosan sentin välein. LISTAUS 15.7 LST15_7.CPP MM_LOMETRIC-kohdistustavan käyttö 1 Tässä asetetaan koordinaatiston kohdistustavaksi MM_LOMETRIC-tila, jolloin yksi yksikkö vastaa 0,1 millimetriä. 2 DPtoLP muuttaa laitteen pisteet loogisiksi pisteiksi (kukin 0,1 mm). 3 Kolmella SetPixel()-kutsulla piirretään pieni pystysuuntainen merkki. 1 void CMapModeView::OnDraw(CDC* pdc) 2 { 3 CMapModeDoc* pdoc = GetDocument(); 4 ASSERT_VALID(pDoc); 5 6 // TODO: add draw code for native data here 7 8 // ** Set the mapping mode to 0.1 mm 9 pdc->setmapmode(mm_lometric); // ** Find the client rectangle (always in device coords) 12 CRect rcclient; 13 GetClientRect(&rcClient); // ** Convert Device Coordinates to logical coordinates 16 pdc->dptolp(&rcclient); // ** Loop from left to right for every 100 logical units 19 for(int x=rcclient.topleft().x; 20 x<rcclient.bottomright().x;x+=100) 21 { 22 // ** Set threes pixels at the y coordinate 23 pdc->setpixel(x,rcclient.centerpoint().y-1,0);3 24 pdc->setpixel(x,rcclient.centerpoint().y,0); 25 pdc->setpixel(x,rcclient.centerpoint().y+1,0); 26 } 27 } Huomaa, että OnDraw() saa osoittimen piirtämisessä käytettyyn piirtopintaan (DC). Sovellusrunko on tehnyt tämän osan koodia automaattisesti. Luvussa 22 opit, kuinka tämä piirtopinta saadaan osoittamaan näytön sijasta tulostimelle. Kääntäessäsi ja ajaessasi tämän sovelluksen pitäisi ikkunaan piirtyä samalle vaakaviivalle merkkejä tasaisin välimatkoin. Viivoittimella mitaten huomaat, että merkit ovat näytöllä sentin välein.

19 OSA IV LUKU Muuta koordinaatiston kohdistustapa MM_LOMETRIC muotoon MM_LOENGLISH. Ohjelmaa ajettaessa merkkien tulisi olla harvemmassa, tuuman välein. Vapaasti skaalattavat kohdistustavat Voit asettaa koordinaatistolle myös itse valitsemasi mittakaavat, mikä helpottaa huomattavasti zoomaustoimintojen toteutusta. Käytettävä kohdistustapa on tällöin MM_ANISOTROPIC terminä hieman huono, koska se tarkoittaa eri kokoista eri suunnasta. Tämä on osin totta, tässä kohdistustavassa mittakaava on erilainen x- ja y-suunnissa, mutta voisin sanoa koiraanikin anisotrooppiseksi, koska se on pitkä, mutta matala. No, nimestä huolimatta tämä kohdistustapa on varsin tehokas, koska voit itse säätää, kuinka muunnos loogisesta yksiköstä tehdään fyysiseksi. Listauksessa 15.8 on esitetty tämä muunnos asettamalla laiteyksiköt SetViewPortExt()-funktiolla työalueen levyiseksi ja 500 kuvapistettä korkeaksi. Rivillä 19 asetetaan looginen leveys sitten yksiköksi SetWindowExt()-funktiolla pitäen yhä korkeuden 500 loogisessa pisteessä. Näin ollen ikkunan leveys on täsmälleen yksikköä. Rivien silmukassa piirretään tasan 100 vaakasuuntaista 100 pistettä leveää merkkiä sivun reunasta reunaan. Kunkin loogisen yksikön pystyakseli on kuitenkin täsmälleen yksi kuvapiste (kuten MM_TEXT). Jos käännät ja ajat sovelluksen tehtyäsi nämä listauksen 15.8 mukaiset muutoksen OnDraw()-funktioon, pitäisi ikkunassa näkyä 100 tasavälein piirrettyä merkintää ikkunan reunasta reunaan. Jos muutat ikkunan kokoa, merkintöjen koko muuttuu myös ja niitä on yhä 100 yhtä tasaisin välein. LISTAUS 15.8 LST15_8.CPP MM_ANISOTROPIC-- kohdistustavan käyttö 1 void CMapModeView::OnDraw(CDC* pdc) 2 { 3 CChap16P2Doc* pdoc = GetDocument(); 4 ASSERT_VALID(pDoc); 5 6 // TODO: add draw code for native data here 7 8 pdc->setmapmode(mm_anisotropic); CRect rcclient; 11 GetClientRect(&rcClient); Kohdistustarkkuus näytöllä Älä usko näytöllä esitettyjen mittojen tarkkuuteen - monitorit ovat eri kokoisia ja monitorien kuvapisteetkin. Tarkkuus tulostimella on selvästi parempi. 1 MM_ANISOTROPIC mahdollistaa eri yksiköt eri akseleilla.

20 352 Grafiikan piirtäminen 2 SetViewportExt() funktio asettaa laitteen leveyden ja korkeuden kuvapistekoordinaatein. 3 SetWindowExt()-funktio asettaa ikkunan loogisen leveyden ja korkeuden loogisin koordinaatein // ** Set the device extent to the client extent across 14 // ** and 500 pixels down 15 pdc->setviewportext(csize(rcclient.bottomright().x,500)); // ** Set the logical extent to the 10,000 units across 18 // ** and 500 pixels down 19 pdc->setwindowext(csize(10000,500)); pdc->dptolp(&rcclient); for(int x=rcclient.topleft().x; 24 x<rcclient.bottomright().x; 25 x+=100) 26 { 27 pdc->setpixel(x,rcclient.centerpoint().y-1,0); 28 pdc->setpixel(x,rcclient.centerpoint().y,0); 29 pdc->setpixel(x,rcclient.centerpoint().y+1,0); 30 } 31 } SetWindowExt()- ja SetViewportExt()- funktioiden käyttö SetWindowExt()- ja SetViewportExt()-funktioita käytetään ainoastaan MM_ISOTROPIC ja MM_ANISOTROPICkohdistustavoissa; muissa niistä ei välitetä. MM_ISOTROPIC-kohdistustapa on nimetty varmaankin samalla logiikalla kuin MM_ANISOTROPIC:kin, termi isotrooppinenhan tarkoittaa samojen ominaisuuksien omaamista eri suunnissa. Voit käyttää tätä kohdistustapaa aivan edellisen tavoin SetWindowExt() ja SetViewPortExt()-funktioilla, mutta muista, että GDI skaalaa eri suuruiset mittakaavat siten, että vaaka-akselin yksi looginen yksikkö on aina myös yksi pystyakselin looginen yksikkö. Tämä kohdistustapa on hyödyllinen, jos haluat säilyttää kuvan sivusuhteen ennallaan. KATSO MYÖS Koordinaatiston kohdistustapojen käyttö tulostuksessa luvusta 22. Piirtopinnan ominaisuuksien lukeminen Piirtopinnan avulla saadaan suoraan tutkittua, mitä ominaisuuksia kyseinen laite tukee. Yleisimmässä tapauksessa tuki löytyy suunnilleen kaikenlaiseen piirtämiseen ja kaikille fonteille. Osa laitteista kuten piirturit kykenevät kuitenkin vain viivanpiirtoon. Tulostimet saattavat olla mustavalkoisia tai vähävärisiä. Saat tämän kaiken selville yhdellä funktiolla, joka on GetDeviceCaps(). Kuten arvata saattaa, jotta funktio saataisiin kertomaan nämä kaikki tiedot, sille voidaan syöttää useita erilaisia lippuja. Piirtopinnan GetDeviceCaps()- jäsenfunktio tarvitsee ainoastaan yhden parametrin, joka kertoo

21 lipputietona halutun tiedon tyypin. Nämä liput on ryhmitelty tarvittavan tiedon mukaan. TECHNOLOGY-lippu kertoo tutkittavan laitteen tyypin, mahdolliset paluuarvot on esitetty taulukossa TAULUKKO 15.2 GetDeviceCaps()-funktion paluuarvot TECHNOLOGY-syötteellä OSA IV LUKU Paluuarvo DT_RASDISPLAY DT_RASPRINTER DT_PLOTTER DT_RASCAMERA DT_CHARSTREAM DT_METAFILE DT_DISPFILE Kuvaus Tavallinen näyttökortti ja näyttö Tavallinen bittikarttatulostin Viivapiirturi Bittikartan syöttölaite Merkkisyöttölaite, kuten näppäimistö Tiedosto, jossa on piirto-ohjeet Näyttötiedosto Laiteohjaimen versio saadaan DRIVERVERSION-lipulla. Laitteen mitat saadaan useaa, taulukossa 15.3 esitettyä lippua käyttäen. TAULUKKO 15.3 GetDeviceCaps()-funktion liput fyysisten mittojen lukemista varten Syötetty lippu HORZRES VERTRES HORZSIZE VERTSIZE ASPECTX ASPECTY ASPECTXY Kuvaus Laitteen leveys kuvapisteinä Laitteen korkeus kuvapisteinä Laitteen leveys millimetreinä Laitteen korkeus millimetreinä Laitteen korkeuden ja leveyden suhde kuvapisteinä Laitteen leveyden ja korkeuden suhde kuvapisteinä Laitteen kulmasta kulman halkaisijan pituus kuvapisteinä Myös värin ja piirto-ominaisuuksien hakemiseen on useita lippuja, jotka on esitetty taulukossa 15.4.

22 354 Laitekohtaiset ominaisuudet Funktiolle on olemassa useita kaarenpiirto- (CURVECAPS), viivanpiirto- (LINECAPS), monikulmion piirto (POLYGONCAPS) ja tekstinpiirtoominaisuuslippuja (TEXTCAPS). Näillä on merkitystä erityisesti piirturilaitteilla, jotka eivät välttämättä tue kaikkia piirtotoimintoja. Grafiikan piirtäminen TAULUKKO 15.4 GetDeviceCaps()-funktion liput värien ja piirto-ominaisuuksien lukemista varten Syötetty lippu NUMCOLORS PLANES BITSPIXEL NUMPENS NUMBRUSHES NUMFONTS COLORRES SIZEPALETTE Kuvaus Laitteen tukemien yksittäisten värien määrä Laitteen tukemien väritasojen määrä Yhden kuvapisteen esittämiseen käytettyjen bittien määrä Laitteen tukemien kynien määrä Laitteen tukemien siveltimien määrä Laitteen tukemien fonttien määrä Laitteen väriresoluutio bitteinä kuvapistettä kohden, mikäli aiheellinen Järjestelmäpaletissa olevien alkioiden määrä, mikäli aiheellinen GetDeviceCaps()-funktion parametrit Funktiolle voidan syöttää myös monia tässä esittelemättömiä lippuja. Näiden avulla saadaan selville, tukeeko laite tietttyä piirtotoimintoa. Kaikki piirtotoiminnot ovat käytettävissä ja toimivat hyvin useimmilla tavallisimmilla näytöilla ja tulostimilla. Yritämme nyt selvittää GetDeviceCaps()-funktion avulla näyttösi ominaisuudet. Nämä tiedot voitaisiin esittää luetteloruudussa MapMode-sovelluksen About-ikkunassa. Luetteloruutukontrollin lisääminen About-ikkunaan 1. Valitse projektin työtilaikkunassa ResourceView-sivu. 2. Avaa kansiot ja löydät IDD_ABOUTBOX-valintaikkunan. 3. Kaksoisnapauta IDD_ABOUTBOX:ia päästäksesi muokkaamaan sitä. 4. Muuta valintaikkunan koko sopivaksi ja lisää siihen luetteloruutu (Listbox). 5. Näppäile Alt+Enter ja pääset muokkaamaan luetteloruudun asetuksia. 6. Aseta List Box Properties ikkunassa General-välilehdellä kontrollin ID-tunnukseksi IDC_DEVCAPS. 7. Napauta Styles-välilehteä ja poista Sort-valinta. 8. Sulje Properties-ikkuna Enterillä. 9. Lisää luetteloruudun yläpuolelle Static-tekstikontrolli ja syötä sen otsikoksi (caption) Device Capabilities. 10. About-ikkunan pitäisi nyt olla kuvassa 15.4 esitetyn kaltainen.

23 OSA IV LUKU KUVA 15.4 MapMode-projektin Aboutikkunan muokkaaminen. Nyt joudut vielä liittämään kontrollimuuttujan luetteloruutuusi, jotta voisit lisätä siihen helposti tekstiä. Muuttujan liittäminen luetteloruutukontrolliin ClassWizardilla 1. Valitse luetteloruutu napauttamalla sitä resurssieditorissa. 2. Käynnistä ClassWizard näppäilemällä Ctrl+W. ClassWizardikkunan Member Variables välilehdellä tulisi nyt olla Control IDs luettelossa IDC_DEVCAPS valittuna. 3. Avaa Add Member Variable ikkuna napauttamalla Add Variable painiketta. 4. Avaa Category-yhdistelmäruutu ja vaihda Value-valinta Control:iksi. 5. Syötä jäsenmuuttujan nimeksi Member Variable ruutuun m_listdevcaps. 6. Sulje valintaikkuna OK-painikkeella.

24 356 Grafiikan piirtäminen 7. Sulje ClassWizard OK-painikkeella. Nyt olet liittänyt CListBox-muuttujan luetteloruutukontrolliin CAboutDlg-luokkaan. Nyt joudut syöttämään vielä sopivan koodin GetDeviceCaps()-funktiolle piirtopinnan ominaisuuksien lukemista varten ja näyttämään tulokset luetteloruudussa. Tätä varten tarvitset CAboutDlg-luokkaan OnInitDialog()-käsittelijän luetteloruudun alustamiseksi ikkunaa avattaessa. OnInitDialog()-käsittelijäfunktion lisääminen 1. Valitse projektin työtilaikkunassa ClassView-sivu. 2. Avaa pikavalikko napauttamalla CAboutDlg-alkiota hiiren oikealla painikkeella. 3. Valitse Add Windows Message Handler komento. 4. Valitse New Windows Messages/Events luettelosta WM_INITDIALOG-sanoma. 5. Lisää käsittelijäfunktio Add and Edit painikkeella ja pääset samalla myös muokkaamaan sitä. Nyt voit lisätä listauksessa 15.9 esitetyn koodin lisätäksesi GetDeviceCaps()-funktion palauttamat arvot About-ikkunan luetteloruutuun. Tässä listauksessa CClientDC:tä käytetään rivillä 7 About-ikkunan piirtopinnan osoittamiseen. Tässä piirtopinnassa on kaikki näytön tiedot. Riveillä 12 ja 13 HORZRES-vaakaresoluutiolippuun liittyvä arvo muotoillaan luettavaksi tekstiksi. Rivillä 16 tämä merkkijono lisätään luetteloruutuun näyttämistä varten. Samat toimenpiteet tehdään myös muille luettaville ominaisuuksille. LISTAUS 15.9 LST15_9.CPP GetDeviceCaps()-funktion palauttamien arvojen näyttäminen About-ikkunassa 1 BOOL CAboutDlg::OnInitDialog() 2 { 3 CDialog::OnInitDialog(); 4 5 // TODO: Add extra initialization here 6 // ** Capture the about dialog's device context 7 CClientDC dcdev(this); 8 // ** Declare a string 9 CString strcap;

25 10 11 // ** Capture and format the device cap results 12 strcap.format("horizontal Resolution = %d pixels", 13 dcdev.getdevicecaps(horzres)); 14 m_listdevcaps.addstring(strcap); 15 strcap.format("vertical Resolution = %d pixels", 16 dcdev.getdevicecaps(vertres)); 17 m_listdevcaps.addstring(strcap); 18 strcap.format("horizontal Size = %d cm", 19 dcdev.getdevicecaps(horzsize) / 10); 20 m_listdevcaps.addstring(strcap); 21 strcap.format("vertical Size = %d cm", 22 dcdev.getdevicecaps(vertsize) / 10); 23 m_listdevcaps.addstring(strcap); 24 strcap.format("supported Colors = %d colors", 25 dcdev.getdevicecaps(numcolors)); 26 m_listdevcaps.addstring(strcap); 27 return TRUE; // return TRUE unless you set the // focus to a control 28 // EXCEPTION: OCX Property Pages should // return FALSE 29 } OSA IV LUKU Käännettyäsi sovelluksen ja käynnistettyäsi sen näiden muutosten tekemisen jälkeen valitse Help-valikosta About Map Mode ja näet näyttösi tekniset tiedot kuvan 15.5 mukaisesti. Oma näyttösi saattaa ehkä tukea useampia värejä kuin mitä luetteloruudussa esitetään, koska piirtopinnan kautta esitetään ainoastaan järjestelmäpaletin värien määrä, joita oletuksena on 20. Määrää saadaan kasvatettua liittämällä piirtopintaan suurempi väripaletti näytön sallimissa puitteissa.

26 358 Grafiikan piirtäminen KUVA 15.5 GetDeviceCaps()-funktion palauttamien laitteen ominaisuuksien näyttäminen. KATSO MYÖS Tulostinlaitteen ominaisuuksien selvittäminen luvussa 22.

Hiirisanomiin vastaaminen

Hiirisanomiin vastaaminen OSA II LUKU 8 163 8 LUKU Reagointi käyttäjän painaessa tai vapauttaessa hiiren painikkeen Omien funktioiden käyttö, kun hiiri liikkuu Hiirikoordinaattien käsittely ja valitun alueen tutkiminen 164 Näppäinpainallusten

Lisätiedot

Visual C++ -ohjelman tekeminen ja suunnittelu

Visual C++ -ohjelman tekeminen ja suunnittelu Visual C++ -ohjelman tekeminen ja suunnittelu OSA I LUKU 1 5 1 LUKU Visual C++ -ohjelman tekeminen ja suunnittelu Windows sovellusten tekeminen AppWizardilla Sovelluksen muokkaaminen resurssieditorilla

Lisätiedot

Tulostaminen ja esikatselu

Tulostaminen ja esikatselu OSA V 521 LUKU 22 22 LUKU Tulostamisen ja esikatselu toteuttaminen vakiosovellusrunkoa räätälöimällä Monisivuisten raporttien toteuttaminen Eri sivusuhteiden ja laitteiden mittojen käsitteleminen Tulostaminen

Lisätiedot

Fonttien käyttö LUKU. Tekstin esittäminen värein ja tyylein. Fonttien käyttö sovelluksen viimeistelyyn OSA IV LUKU 17.

Fonttien käyttö LUKU. Tekstin esittäminen värein ja tyylein. Fonttien käyttö sovelluksen viimeistelyyn OSA IV LUKU 17. OSA IV 389 LUKU 17 17 LUKU Tekstin esittäminen värein ja tyylein sovelluksen viimeistelyyn 390 Grafiikan piirtäminen William Caxtonin keksittyä painetun sanomalehden olemme olleet pääsemättömissä painotuotteista.

Lisätiedot

Tekstikontrollit LUKU. Tekstin ja sanomien esittäminen valintaikkunoissa. Tekstin muokkaaminen suorituksen aikana. Tiedon tarkistaminen syötön aikana

Tekstikontrollit LUKU. Tekstin ja sanomien esittäminen valintaikkunoissa. Tekstin muokkaaminen suorituksen aikana. Tiedon tarkistaminen syötön aikana OSA II LUKU 5 85 5 LUKU Tekstin ja sanomien esittäminen valintaikkunoissa Tekstin muokkaaminen suorituksen aikana Tiedon tarkistaminen syötön aikana Kontrollien toiminnan laajentaminen aliluokkien avulla

Lisätiedot

Muita kuvankäsittelyohjelmia on mm. Paint Shop Pro, Photoshop Elements, Microsoft Office Picture Manager

Muita kuvankäsittelyohjelmia on mm. Paint Shop Pro, Photoshop Elements, Microsoft Office Picture Manager Missio: 1. Asentaminen 2. Valokuvien tarkastelu, tallennus/formaatit, koko, tarkkuus, korjaukset/suotimet, rajaus 3. Kuvan luonti/työkalut (grafiikka kuvat) 4. Tekstin/grafiikan lisääminen kuviin, kuvien/grafiikan

Lisätiedot

Kynien ja siveltimien käyttö

Kynien ja siveltimien käyttö OSA IV 359 LUKU 16 16 LUKU Eri tyylisten viivojen ja muotojen piirtäminen kynillä Kuvioiden täyttäminen eri värein ja pintakuvioin siveltimellä Piirtofunktioiden hyödyntäminen mutkikkaiden muotojen piirtämiseen

Lisätiedot

MDI-sovellusten kehittäminen

MDI-sovellusten kehittäminen OSA V 491 LUKU 21 21 LUKU MDI-sovelluksen luominen Siirtyminen dokumentti, näkymä- ja kehysluokan välillä Sovelluksen kehittäminen MFC;n monidokumentti/näkymä-arkkitehtuurilla 492 Kehittyneet dokumentti/näkymä-tekniikat

Lisätiedot

Luettelo-, puu-, parannetun tekstiruutu- sekä HTML-näkymän käyttö

Luettelo-, puu-, parannetun tekstiruutu- sekä HTML-näkymän käyttö Luettelo-, puu-, parannetun tekstiruutu- sekä HTML-näkymän käyttö OSA V 439 LUKU 19 19 LUKU Luettelo-, puu-, parannetun tekstiruutu- sekä HTML-näkymän käyttö Luettelon tietojen ylläpito List View näkymässä

Lisätiedot

ActiveX-kontrollien käyttö

ActiveX-kontrollien käyttö OSA II LUKU 9 181 9 LUKU Kehittyneiden ActiveX-kontrollien lisääminen projektiisi Kontrollin ominaisuuksien ja tyylien muokkaaminen Kontrollista saadun tiedon hyödyntäminen ohjelmassa 182 ActiveX-kontrollit

Lisätiedot

Sovelluksen toimintojen toteuttaminen

Sovelluksen toimintojen toteuttaminen 161 L U K U 5 Sovelluksen toimintojen toteuttaminen Oppitunti 1: Dialogien käyttäminen 162 Oppitunti 2: Sovelluksen tietojen näyttäminen ja tulostaminen 183 Oppitunti 3: Useiden säikeiden käyttäminen 197

Lisätiedot

Jypelin käyttöohjeet» Ruutukentän luominen

Jypelin käyttöohjeet» Ruutukentän luominen Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen

Lisätiedot

Usean näkymän luominen

Usean näkymän luominen OSA V 471 LUKU 20 20 LUKU Dynaamisten ja staattisten jakajaikkunoiden käyttö Resurssienhallinnan kaltaisen käyttöliittymän tekeminen sovelluksiin ja hallinta ilman ikkunan jakamista 472 Kehittyneet dokumentti/näkymä

Lisätiedot

Kuvan pienentäminen Paint.NET-kuvankäsittelyohjelmalla

Kuvan pienentäminen Paint.NET-kuvankäsittelyohjelmalla Kuvan pienentäminen Paint.NET-kuvankäsittelyohjelmalla Avaa Paint.NET tuplaklikkaamalla sen pikakuvaketta. Paint.NET avautuu tämän näköisenä. Edessä on tyhjä paperi. Saadaksesi auki kuvan, jota aiot pienentää

Lisätiedot

XNA grafiikka laajennus opas. Paavo Räisänen. www.ohjelmoimaan.net. Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa.

XNA grafiikka laajennus opas. Paavo Räisänen. www.ohjelmoimaan.net. Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa. XNA grafiikka laajennus opas Paavo Räisänen www.ohjelmoimaan.net Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa. Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei

Lisätiedot

1. HARJOITUS harjoitus3_korjaus.doc

1. HARJOITUS harjoitus3_korjaus.doc Word - harjoitus 1 1. HARJOITUS harjoitus3_korjaus.doc Kopioi itsellesi harjoitus3_korjaus.doc niminen tiedosto Avaa näyttöön kopioimasi harjoitus. Harjoitus on kirjoitettu WordPerfet 5.1 (DOS) versiolla

Lisätiedot

Sivu 1 / 11 08.01.2013 Viikin kirjasto / Roni Rauramo

Sivu 1 / 11 08.01.2013 Viikin kirjasto / Roni Rauramo Sivu 1 / 11 Kuvien siirto kamerasta Lyhyesti Tämän oppaan avulla voit: - käyttää tietokoneen omaa automaattista kopiointiin tai siirtoon tarkoitettua toimintaa kuvien siirtoon kamerasta tai muistikortista

Lisätiedot

UpdateIT 2010: Editorin käyttöohje

UpdateIT 2010: Editorin käyttöohje UpdateIT 2010: Editorin käyttöohje Käyttäjätuki: Suomen Golfpiste Oy Esterinportti 1 00240 HELSINKI Puhelin: (09) 1566 8800 Fax: (09) 1566 8801 E-mail: gp@golfpiste.com Sisällys Editorin käyttöohje...

Lisätiedot

HARJOITUKSIA ios-ohjelmointiin LIITTYEN

HARJOITUKSIA ios-ohjelmointiin LIITTYEN HARJOITUKSIA ios-ohjelmointiin LIITTYEN Kari Laitinen http://www.naturalprogramming.com 2014-08-25 Tiedosto luotu. 2015-08-31 Harjoitukset muutettu Swift-kielelle. 2016-01-31 Viimeisin muutos. 1 Kari Laitinen

Lisätiedot

TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE

TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE HERVANNAN KIRJASTON TIETOTORI Insinöörinkatu 38 33720 Tampere 040 800 7805 tietotori.hervanta@tampere.fi TALLENNETAAN MUISTIKULLE JA MUISTIKORTILLE 1 Muistitikun

Lisätiedot

Kehitysympäristö LUKU. Developer Studio kehitysympäristön alkeet. Liikkuminen projektin työtilassa ja sen eri näkymissä

Kehitysympäristö LUKU. Developer Studio kehitysympäristön alkeet. Liikkuminen projektin työtilassa ja sen eri näkymissä OSA I LUKU 2 23 2 LUKU Developer Studio kehitysympäristön alkeet Liikkuminen projektin työtilassa ja sen eri näkymissä Projektien hallinnan vaatimat asetukset 24 Developer Studio - ympäristön räätälöinti

Lisätiedot

Dokumentit, näkymät ja kehykset

Dokumentit, näkymät ja kehykset OSA III 249 LUKU 12 12 LUKU Single document interface sovelluksen luominen MFC:n dokumentti-näkymä rakennetta hyödyntävän sovelluksen kehittäminen Dokumentti-, näkymä-, kehys- ja dokumenttimalliluokat

Lisätiedot

Muistitikun liittäminen tietokoneeseen

Muistitikun liittäminen tietokoneeseen Muistitikun käyttäminen 1 Muistitikun liittäminen tietokoneeseen Muistitikku liitetään tietokoneen USB-porttiin. Koneessa voi olla useita USB-portteja ja tikun voi liittää mihin tahansa niistä. USB-portti

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

6. Harjoitusjakso II. Vinkkejä ja ohjeita

6. Harjoitusjakso II. Vinkkejä ja ohjeita 6. Harjoitusjakso II Seuraavaksi harjoitellaan algebrallisten syötteiden, komentojen ja funktioiden käyttöä GeoGebrassa. Tarjolla on ensimmäisen harjoittelujakson tapaan kahden tasoisia harjoituksia: perustaso

Lisätiedot

Kylänetti projektin sivustojen käyttöohjeita Dokumentin versio 2.10 Historia : 1.0, 1.2, 1.6 Tero Liljamo / Deserthouse, päivitetty 25.8.

Kylänetti projektin sivustojen käyttöohjeita Dokumentin versio 2.10 Historia : 1.0, 1.2, 1.6 Tero Liljamo / Deserthouse, päivitetty 25.8. Kylänetti projektin sivustojen käyttöohjeita Dokumentin versio 2.10 Historia : 1.0, 1.2, 1.6 Tero Liljamo / Deserthouse, päivitetty 25.8.2012 Hakemisto 1. Sivustot internetissä... 2 2. Yleistä... 2 3.

Lisätiedot

GeoGebra-harjoituksia malu-opettajille

GeoGebra-harjoituksia malu-opettajille GeoGebra-harjoituksia malu-opettajille 1. Ohjelman kielen vaihtaminen Mikäli ohjelma ei syystä tai toisesta avaudu toivomallasi kielellä, voit vaihtaa ohjelman käyttöliittymän kielen seuraavasti: 2. Fonttikoon

Lisätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 12.4.2010 T-106.1208 Ohjelmoinnin perusteet Y 12.4.2010 1 / 34 Graafiset käyttöliittymät Tähän asti kirjoitetuissa ohjelmissa on ollut tekstipohjainen käyttöliittymä.

Lisätiedot

ASENNUS- JA KÄYTTÖOHJE

ASENNUS- JA KÄYTTÖOHJE ASENNUS- JA KÄYTTÖOHJE YKSIKKÖHINTA SOPIMUKSEN TOTEUTUNEET MÄÄRÄT-SOVELLUS CMPRO5 VERSIO 2.8 PÄIVITETTY HEINÄKUU 2010 COPYRIGHT 2010 ARTEMIS FINLAND OY. ALL RIGHTS RESERVED. KÄYTTÖOHJE SIVU 2 (12) SISÄLLYSLUETTELO

Lisätiedot

SSH Secure Shell & SSH File Transfer

SSH Secure Shell & SSH File Transfer SSH Secure Shell & SSH File Transfer TIETOHALLINTO Janne Suvanto 1.9 2002 Sisällysluettelo Sisällysluettelo... 1 Yleistä... 2 SSH Secure Shell ohjelman asetukset... 3 POP3 tunnelin asetukset... 6 Yhteyden

Lisätiedot

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Graafisen käyttöliittymän ohjelmointi Syksy 2013 TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Syksy 2013 Luento 5 Qt: Grafiikan piirto Juha-Matti Vanhatupa Sisältö GDI Qt paint system Koordinaatisto-operaatioita

Lisätiedot

Kirjaudu sisään palveluun klikkaamalla Omat kartat -painiketta.

Kirjaudu sisään palveluun klikkaamalla Omat kartat -painiketta. Kirjaudu sisään palveluun klikkaamalla Omat kartat -painiketta. Sisäänkirjauduttuasi näet palvelun etusivulla helppokäyttöisen hallintapaneelin. Vasemmassa reunassa on esillä viimeisimmät tehdyt muutokset

Lisätiedot

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA Ohjeistuksessa käydään läpi kuvan koon ja kuvan kankaan koon muuntaminen esimerkin avulla. Ohjeistus on laadittu auttamaan kuvien muokkaamista kuvakommunikaatiota

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

TAULUKKO, KAAVIO, SMARTART-KUVIOT

TAULUKKO, KAAVIO, SMARTART-KUVIOT PowerPoint 2013 Taulukko, kaaviot, SmartArt-kuviot Sisällysluettelo TAULUKKO, KAAVIO, SMARTART-KUVIOT TAULUKOT... 1 Taulukon muotoileminen... 1 Taulukon koon muuttaminen... 2 Rivien valitseminen... 2 Sarakkeiden

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

Lisätiedot

Tapahtumapohjainen ohjelmointi. Juha Järvensivu juha.jarvensivu@tut.fi 2007

Tapahtumapohjainen ohjelmointi. Juha Järvensivu juha.jarvensivu@tut.fi 2007 Tapahtumapohjainen ohjelmointi Juha Järvensivu juha.jarvensivu@tut.fi 2007 Sisältö Tapahtumapohjainen ohjelmointi Käyttöliittymän rakenne Pääikkuna (top-level window) Lapsi-ikkuna (child window) Dialogit

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

ActiveX-kontrollien luominen

ActiveX-kontrollien luominen 433 L U K U 1 1 ActiveX-kontrollien luominen Oppitunti 1: ActiveX-komponenttien tekeminen MFC:llä 434 Oppitunti 2: ActiveX-kontrollien tekeminen ATL:llä 448 Laboratorio 11: ActiveX-kontrollin käyttäminen

Lisätiedot

Valintaikkunoiden luonti ja suunnittelu

Valintaikkunoiden luonti ja suunnittelu OSA II LUKU 3 43 3 LUKU Valintaikkunoiden luonti ja suunnittelu Valmiin valintaikkunan muokkaaminen ja uuden valintaikkunapohjan luominen Valintaikkunoiden ja kontrollien ominaisuuksien asettaminen Kontrollien

Lisätiedot

Winapi. Juha Järvensivu 2007

Winapi. Juha Järvensivu 2007 Winapi Juha Järvensivu juha.jarvensivu@tut.fi 2007 Sisällys Osa 1 Ikkunan päivittäminen Resurssikuvaustiedosto Valikot Dialogien luonti Osa 2 Winapi ja olio-ohjelmointi (esimerkki) Yksinkertainen winapi-sovellus

Lisätiedot

Sovellusten ohjelmointi Microsoft Foundation Classes -luokkien avulla

Sovellusten ohjelmointi Microsoft Foundation Classes -luokkien avulla 73 L U K U 3 Sovellusten ohjelmointi Microsoft Foundation Classes -luokkien avulla Oppitunti 1: Yleiskatsaus MFC:hen 74 Oppitunti 2: Win32-sovellusarkkitehtuuri 84 Oppitunti 3: MFC-sovelluskehys 89 Oppitunti

Lisätiedot

Ohjeita. Datan lukeminen

Ohjeita. Datan lukeminen ATK Tähtitieteessä Harjoitustyö Tehtävä Harjoitystyössä tehdään tähtikartta jostain taivaanpallon alueesta annettujen rektaskensio- ja deklinaatiovälien avulla. Karttaan merkitään tähdet aina kuudenteen

Lisätiedot

Lyhyt kertaus osoittimista

Lyhyt kertaus osoittimista , syksy 2007 Kertausta Luento 10 12.10.2007 Syksy 2007 1 Lyhyt kertaus osoittimista char *p; /* char, int, jne ilmoittavat, minkä tyyppisiä */ Keskusmuisti int *q; /* olioita sisältäviin muistilohkoihin

Lisätiedot

6.1 Tekstialueiden valinta eli maalaaminen (tulee tehdä ennen jokaista muokkausta ym.)

6.1 Tekstialueiden valinta eli maalaaminen (tulee tehdä ennen jokaista muokkausta ym.) 6. Tekstin muokkaaminen 6.1 Tekstialueiden valinta eli maalaaminen (tulee tehdä ennen jokaista muokkausta ym.) Tekstin maalaaminen onnistuu vetämällä hiirellä haluamansa tekstialueen yli (eli osoita hiiren

Lisätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

Aloita uusi kartoitus -painikkeesta käynnistyy uuden kartoituksen tekeminen

Aloita uusi kartoitus -painikkeesta käynnistyy uuden kartoituksen tekeminen it-arvi Ohjeet sovelluksen käyttöön KÄYNNISTYS: - Sovellus käynnistetään tuplanapauttamalla kuvaketta Esteettomyysarviointi.exe. ETUSIVU: Aloita uusi kartoitus -painikkeesta käynnistyy uuden kartoituksen

Lisätiedot

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

OpenOffice.org Impress 3.1.0

OpenOffice.org Impress 3.1.0 OpenOffice.org Impress 3.1.0 Sisällysluettelo 1 Esityksen luominen...1 2 Dian rakenne...2 3 Dian lisääminen, poistaminen, siirtäminen ja kopioiminen...3 4 Diojen koon muuttaminen...3 5 Pohjatyylisivut...4

Lisätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

Lisätiedot

JWT 2016 luento 11. to 21.4.2016 klo 14-15. Aulikki Hyrskykari. PinniB 1097. Aulikki Hyrskykari

JWT 2016 luento 11. to 21.4.2016 klo 14-15. Aulikki Hyrskykari. PinniB 1097. Aulikki Hyrskykari JWT 2016 luento 11 to 21.4.2016 klo 14-15 Aulikki Hyrskykari PinniB 1097 1 Viime luennolla o AJAX ja JSON, harjoitustyön tehtävänanto, vierailuluento avoimesta datasta Tänään o APIt rajapinnoista yleisesti

Lisätiedot

2.1 Yksinkertaisen geometrian luonti

2.1 Yksinkertaisen geometrian luonti 2.1 Yksinkertaisen geometrian luonti Kuva 2.1 Tiedon portaat Kuva 2.2 Ohjelman käyttöliittymä suoran luonnissa 1. Valitse Luo, Suora, Luo suora päätepistein. 2. Valitse Pystysuora 3. Valitse Origo Origon

Lisätiedot

Outlook Web App ver 1.2

Outlook Web App ver 1.2 Outlook Web App ver 1.2 Kirjautuminen Kirjoita selaimen osoiteriville: o365.edu.hel.fi Kirjoita opetuksen verkon tunnuksesi ja salasanasi avautuvalla kirjautumissivulla. Hetken odottelun jälkeen esiin

Lisätiedot

KÄYTTÖOHJE. Servia. S solutions

KÄYTTÖOHJE. Servia. S solutions KÄYTTÖOHJE Servia S solutions Versio 1.0 Servia S solutions Servia Finland Oy PL 1188 (Microkatu 1) 70211 KUOPIO puh. (017) 441 2780 info@servia.fi www.servia.fi 2001 2004 Servia Finland Oy. Kaikki oikeudet

Lisätiedot

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana Muilla kielillä: English Suomi Pong-peli, vaihe 2 Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana Laitetaan pallo liikkeelle Tehdään kentälle reunat Vaihdetaan kentän taustaväri Zoomataan

Lisätiedot

Kameran käyttö Excel 2003 ja 2007

Kameran käyttö Excel 2003 ja 2007 Kameran käyttö Excel 2003 ja 2007 SISÄLTÖ: 1. Kameran käyttö: Microsoft Excel 2003 ja Microsoft Windows XP. 2. Kameran käyttö: Microsoft Excel 2007 ja Microsoft Windows Vista Usein mitoituksesta tehdään

Lisätiedot

Kyläsivujen InfoWeb-ohje

Kyläsivujen InfoWeb-ohje Kyläsivujen InfoWeb-ohje Kirjoita internet-selaimesi osoitekenttään kyläsivujen hallintaosoite; www.yla -savo.fi/admin Saavut seuraavalle sivulle, johon kirjoitat käyttäjätunnuksesi ja salasanasi: Paina

Lisätiedot

Verkkosivut perinteisesti. Tanja Välisalo 11.2.2009

Verkkosivut perinteisesti. Tanja Välisalo 11.2.2009 Verkkosivut perinteisesti Tanja Välisalo 11.2.2009 WWW-sivujen vieminen omaan kotisivutilaan yliopiston mikroverkossa https://salasana.jyu.fi Klikkaa painiketta Activate WWW Klikkaa painiketta Activate

Lisätiedot

KÄYTTÖÖN. Koulukirjat tietokoneelle PIKAOHJEET PAPERPORT -OHJELMAN. Sisällysluettelo

KÄYTTÖÖN. Koulukirjat tietokoneelle PIKAOHJEET PAPERPORT -OHJELMAN. Sisällysluettelo Koulukirjat tietokoneelle PIKAOHJEET PAPERPORT -OHJELMAN KÄYTTÖÖN Sisällysluettelo ImageViewer ja PDF Viewer Plus -ohjelmien esittelyt 1 Käytön aloittaminen 1 Työpöydän hyödylliset työkalut 2 Image View

Lisätiedot

Harjoitus 2: Oppijan aktivointi (15.3.2016)

Harjoitus 2: Oppijan aktivointi (15.3.2016) Harjoitus 2: Oppijan aktivointi (15.3.2016) Tietokoneavusteinen opetus -kurssilla opetetaan Adobe Flash CS6:n käyttämistä neljänä kertana: 11.3.2016, 15.3.2016, 18.3.2016 ja 1.4.2016. Harjoituskerroilla

Lisätiedot

Racket ohjelmointia osa 2. Tiina Partanen Lielahden koulu 2014

Racket ohjelmointia osa 2. Tiina Partanen Lielahden koulu 2014 Racket ohjelmointia osa 2 Tiina Partanen Lielahden koulu 2014 Sisältö 1) Funktiot ja muuttujat (kertaus) 2) Animaatiot & pelit (big-bang) 3) Vertailuoperaattorit sekä boolean arvot 4) Tietorakenteet (struct)

Lisätiedot

1 ClipArt -kuvan käyttö Paint-ohjelmassa

1 ClipArt -kuvan käyttö Paint-ohjelmassa 1 ClipArt -kuvan käyttö Paint-ohjelmassa 1. Avaa Paint: 2. Käynnistä/Kaikki Ohjelmat/Apuohjelmat/Paint. 3. Pienennä Paint -ohjelma kuvakkeeksi tehtäväpalkkiin, ohjelman pienennyspainikkeesta. 4. Avaa Internet

Lisätiedot

Web Services tietokantaohjelmoinnin perusteet

Web Services tietokantaohjelmoinnin perusteet ASP.NET Web Services Web Services tietokantaohjelmoinnin 2 (22) Sisällys Harjoitus 1: Tietokannat ja Web Services... 3 Harjoitus 2: Windows Client... 10 Harjoitus 3: Datan päivitys TableAdapterin avulla...

Lisätiedot

Kopioi cd-levyt kiintolevylle, niin fyysiset levyt joutavat eläkkeelle.

Kopioi cd-levyt kiintolevylle, niin fyysiset levyt joutavat eläkkeelle. TEE KONEESTA CD-VARASTO: Kopioi cd-levyt kiintolevylle, niin fyysiset levyt joutavat eläkkeelle. Siirrä cd-levysi TIETOJA Kopioi cd-levyt kiintolevylle levykuviksi, niin pääset sisältöön nopeasti käsiksi

Lisätiedot

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä Pekka Ryhänen & Erkki Pesonen 2002 BlueJ:n käyttö Nämä ohjeet on tarkoitettu tkt-laitoksen mikroluokan koneilla tapahtuvaa käyttöä varten. Samat asiat pätevät myös muissa luokissa ja kotikäytössä, joskin

Lisätiedot

Tilastokeskuksen rajapintapalveluiden käyttöönotto ArcGISohjelmistossa

Tilastokeskuksen rajapintapalveluiden käyttöönotto ArcGISohjelmistossa 1(6) Tilastokeskuksen rajapintapalveluiden käyttöönotto ArcGISohjelmistossa Ohjeita laatiessa on käytetty ArcGIS:n versiota 10.1. Koordinaattijärjestelmä ArcGIS käyttää oletuskoordinaattijärjestelmänä

Lisätiedot

Näkymien vierittäminen ja koon muuttaminen

Näkymien vierittäminen ja koon muuttaminen Näkymien vierittäminen ja koon muuttaminen OSA V 415 LUKU 18 18 LUKU Näkymien vierittäminen ja koon muuttaminen Ikkunan muuttuneen koon selvittäminen ja ohjelman vaste siihen Ikkunan enimmäis- ja vähimmäiskoon

Lisätiedot

OPINNÄYTETYÖ MALLIPOHJAN KÄYTTÖOHJE

OPINNÄYTETYÖ MALLIPOHJAN KÄYTTÖOHJE OPINNÄYTETYÖ MALLIPOHJAN KÄYTTÖOHJE Opinnäytetyö mallipohja Kajaanin ammattikorkeakoulu 2.12.2005 SISÄLLYS 1 MALLIPOHJAN KÄYTTÖÖNOTTO 1 2 TEKSTIN KIRJOITTAMINEN 2 2.1 Valmiin tekstin siirtäminen 2 2.2

Lisätiedot

KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA

KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA SISÄLLYS 1. KUVAN TUOMINEN PAINTIIN...1 1.1. TALLENNETUN KUVAN HAKEMINEN...1 1.2. KUVAN KOPIOIMINEN JA LIITTÄMINEN...1 1.1. PRINT

Lisätiedot

Versio 1.1 P/N 137-40340-20. Copyright 2002, ATI Technologies Inc. Kaikki oikeudet pidätetään.

Versio 1.1 P/N 137-40340-20. Copyright 2002, ATI Technologies Inc. Kaikki oikeudet pidätetään. HydraVision Käyttöopas Versio 1.1 P/N 137-40340-20 Copyright 2002, ATI Technologies Inc. Kaikki oikeudet pidätetään. ATI, kaikki ATI-tuotteiden ja tuotteen ominaisuuksien nimet ovat Ati Technologies Inc:in

Lisätiedot

LIITE 1 1. Tehtävänä on mallintaa kitara ohjeiden mukaan käyttäen Edit Poly-tekniikkaa.

LIITE 1 1. Tehtävänä on mallintaa kitara ohjeiden mukaan käyttäen Edit Poly-tekniikkaa. LIITE 1 1 HARJOITUS 1 Kitara Tehtävänä on mallintaa kitara ohjeiden mukaan käyttäen Edit Poly-tekniikkaa. Käsiteltävät asiat Edit Poly Muokkaus kuvan mukaan TurboSmooth Extrude 1. Tarkistetaan että mittayksiköt

Lisätiedot

PageMaker 6.5 -moniste

PageMaker 6.5 -moniste PageMaker 6.5 -moniste by Sami Mäkinen Sisällysluettelo Yleiset asetukset...1 Uuden julkaisun aloittaminen...1 PageMakerin julkaisuikkunan osat...2 Värien määrittely...3 Piirtäminen...4 Apulinjat...5 Objektin

Lisätiedot

ASCII-taidetta. Intro: Python

ASCII-taidetta. Intro: Python Python 1 ASCII-taidetta All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/18cplpy to find out what to do.

Lisätiedot

PowerPoint -esitysgrafiikka

PowerPoint -esitysgrafiikka TAMPEREEN KAUPUNKI Kasvatus- ja opetustoimiala @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ PowerPoint -esitysgrafiikka jatkokurssi SisällysError! Not a valid link. 1 Automaattiset muodot 1 2 Piirrosobjektin

Lisätiedot

Kuukauden kuvat kerhon galleriaan 1.4.2016 lähtien kuukaudenkuvaajan kuvagalleria on siirretty uudelle palvelimelle osoitteeseen:

Kuukauden kuvat kerhon galleriaan 1.4.2016 lähtien kuukaudenkuvaajan kuvagalleria on siirretty uudelle palvelimelle osoitteeseen: Kuukauden kuvat kerhon galleriaan 1.4.2016 lähtien kuukaudenkuvaajan kuvagalleria on siirretty uudelle palvelimelle osoitteeseen: http://www.kamera73.fi/kuukaudenkuvaaja Kukin seuran jäsen voi laittaa

Lisätiedot

Kansion asetusten muuttaminen Windows 2000 käyttöjärjestelmässä Resurssienhallinnan kautta

Kansion asetusten muuttaminen Windows 2000 käyttöjärjestelmässä Resurssienhallinnan kautta Kansion asetusten muuttaminen Windows 2000 käyttöjärjestelmässä Resurssienhallinnan kautta..1 Tiedoston kytkeminen haluttuun ohjelmaan...2 Pikakuvakkeen luominen...3 Resurssien jakaminen verkossa olevien

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille: Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin

Lisätiedot

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

Lisätiedot

3.3 Kurssin palauttaminen

3.3 Kurssin palauttaminen 3.3 Kurssin palauttaminen Yleistä kurssin palauttamisesta Kurssipohjan tulee olla luotuna Moodleen ennen kuin sen päälle voi palauttaa varmuuskopion. Yleensä palauttaminen kannattaa tehdä siten, että entisen

Lisätiedot

Väitöskirja -mallipohja

Väitöskirja -mallipohja JYVÄSKYLÄN YLIOPISTO Väitöskirja -mallipohja Word 2007/2010 IT-palvelut hannele.rajaniemi@jyu.fi https://koppa.jyu.fi/avoimet/thk/vaitoskirja sovellustuki@jyu.fi Sisältö Miten toimii väitöskirja/asiakirjamallipohja?

Lisätiedot

KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN

KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN -Mene osoitteeseen keskustanuoret.fi/user - Kirjoita saamasi käyttäjätunnus ja salasana - Klikkaa yllä olevaa piirisi logoa niin

Lisätiedot

Asteri Laskutus (Dos)

Asteri Laskutus (Dos) Asteri Laskutus (Dos) Vuosipäivitys 3.11.2007 Päivityksen asentaminen... 4 Uudelle koneelle siirtäminen... 6 - pikakuvake Vistan työpöydälle... 7 Tulostaminen kun tulostaminen ei onnistu... 11 - tulostaminen

Lisätiedot

MAANMITTAUSLAITOKSEN ILMAISTEN KARTTOJEN TULOSTAMINEN QUANTUM GIS -OHJELMALLA

MAANMITTAUSLAITOKSEN ILMAISTEN KARTTOJEN TULOSTAMINEN QUANTUM GIS -OHJELMALLA 1 (6) MAANMITTAUSLAITOKSEN ILMAISTEN KARTTOJEN TULOSTAMINEN QUANTUM GIS -OHJELMALLA TEEMU SALORIUTTA 17.6.2012 Päivitetty 28.6.2013 1. Avaa Maanmittauslaitoksen latauspalvelu osoitteesta https://tiedostopalvelu.maanmittauslaitos.fi/tp/kartta.

Lisätiedot

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.

Lisätiedot

Fiery Driver Configurator

Fiery Driver Configurator 2015 Electronics For Imaging, Inc. Tämän julkaisun tiedot kuuluvat tämän tuotteen Lakisääteisien ilmoitusten piiriin. 16. marraskuuta 2015 Sisällys 3 Sisällys Fiery Driver Configurator...5 Järjestelmävaatimukset...5

Lisätiedot

Taulukot. 2002 Päivi Vartiainen 1

Taulukot. 2002 Päivi Vartiainen 1 Taulukot Taulukon lisääminen FrontPagessa tapahtuu samalla tavoin kuin Word tekstinkäsittelyohjelmassakin. Valitse vakiotyökaluriviltä Lisää taulukko painike. Kun olet napsauttanut painikkeen alas voit

Lisätiedot

Uutiskirjesovelluksen käyttöohje

Uutiskirjesovelluksen käyttöohje Uutiskirjesovelluksen käyttöohje Käyttäjätuki: Suomen Golfpiste Oy Esterinportti 1 00240 HELSINKI Puhelin: (09) 1566 8800 Fax: (09) 1566 8801 E-mail: gp@golfpiste.com 2 Sisällys Johdanto... 1 Päänavigointi...

Lisätiedot

3. Vasemman reunan resurssiselaimen Omiin resursseihin luodaan uusi Handmade -niminen kansio.

3. Vasemman reunan resurssiselaimen Omiin resursseihin luodaan uusi Handmade -niminen kansio. ActivInspire JATKO AINEISTON TUOTTAMINEN Uuden aineiston tekemisen alkua helpottaa etukäteen tehty suunnitelma (tekstit, kuvat, videot, linkit) miellekarttaa hyödyntäen. Valmista aineistoa voi muokata

Lisätiedot

Muuttujien määrittely

Muuttujien määrittely Tarja Heikkilä Muuttujien määrittely Määrittele muuttujat SPSS-ohjelmaan lomakkeen kysymyksistä. Harjoitusta varten lomakkeeseen on muokattu kysymyksiä kahdesta opiskelijoiden tekemästä Joupiskan rinneravintolaa

Lisätiedot

Siirtyminen Outlook 2010 -versioon

Siirtyminen Outlook 2010 -versioon Tämän oppaan sisältö Microsoft Microsoft Outlook 2010 näyttää hyvin erilaiselta kuin Outlook 2003. Tämän oppaan tarkoituksena on helpottaa uuden ohjelman opiskelua. Seuraavassa on tietoja uuden käyttöliittymän

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla ALKUHARJOITUS Kynän ja paperin avulla peilaaminen koordinaatistossa a) Peilaa pisteen (0,0) suhteen koordinaatistossa sijaitseva - neliö, jonka

Lisätiedot

JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++

JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++ JAVA alkeet JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++ ja Javascriptin kanssa. Huom! JAVA ja JavaScript eivät silti ole sama asia, eivätkä edes sukulaiskieliä.

Lisätiedot

Park systems XE-100 atomivoimamikroskoopin käyttöohje

Park systems XE-100 atomivoimamikroskoopin käyttöohje Tämä käyttöohje on kirjoitettu ESR-projektissa Mikroanturitekniikan osaamisen kehittäminen Itä-Suomen lääninhallitus, 2007, 86268 Park systems XE-100 atomivoimamikroskoopin käyttöohje Mihin laitetta käytetään?

Lisätiedot

Ohjelmistopohjaisen lisenssin käyttö

Ohjelmistopohjaisen lisenssin käyttö 24.11.15 rev. 2 Ohjelmistopohjaisen lisenssin käyttö Yleistä Mastercam on käyttänyt aina suojauspalikkaan sidottuja lisenssejä. Ne ovat suhteellisen helppokäyttöisiä ja lisenssin siirtämiseen ei tarvita

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja

Lisätiedot