Tulostaminen ja esikatselu

Koko: px
Aloita esitys sivulta:

Download "Tulostaminen ja esikatselu"

Transkriptio

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

2 522 Laiteriippumattomuus Ennen Windowsia useista käyttöjärjestelmistä puuttuivat grafiikkatulostinohjaimet. Tästä syystä sovellusten kirjoittajien piti toteuttaa omaan sovellukseen tulostimien ohjaus. Näin jokaisella sovelluksella oli oma joukko suosittujen tulostimien ohjaimia, joka johti valtavaan määrään samanlaista työtä. Onneksi Windowsin piirtopintamalli mahdollistaa näyttöjen, tulostimien ja piirtureiden käsittelemisen suunnilleen samanlaisina piirtopintoina. Vielä parempaa on, että laiteohjain joudutaan kirjoittamaan vain kerran ja laitteen valmistaja tekee sen itse. Vakiosovellusrungon tulostustuki Tavallinen tulostus ja tulostuksen esikatselu saadaan ainoastaan SDI- ja MDI-sovelluksiin. Valintaikkunasovellukset joutuvat toteuttamaan sen itse. Kehittyneet dokumentti/näkymä-tekniikat Sovellusrungon toimintojen käyttö AddWizardin tekemät SDI- ja MDI-sovellusrungot ottavat käyttöön tulostuksen ja esikatselun toiminnot automaattisesti. Voit estää tämän poistamalla AppWizardin vaiheessa Step 4 valinnan Printing and Print Preview, mutta yleensä tulostukselle on sovelluksissa käyttöä, eikä se kasvata erityisesti koodia tai huononna sovelluksen suorituskykyä. Tulostuksesta huolehtivat suurelta osin piirtopinta sekä GDI (josta kerrottiin luvussa 15). Sovellusrunko esittelee sinulle piirtopinnan dokumentin sivun tulostamiseen; voit käsitellä sitä suunnilleen ikkunapiirtopinnan tavoin. KATSO MYÖS Lisätietoja SDI-sovellusrungosta luvusta 12. Yksityiskohtia piirtopinnoista luvusta 15. Oletustulostuksen käyttö SDI-sovellusrunko tukee kuvien tulostamista dokumentissa oleviin tietoihin perustuvista näkymistä. Koska nämä tiedot näkyvät jo sovelluksen näkymässä, voit todennäköisesti tulostaa tiedot muokkaamalla näkymään tuen tulostamiselle. Sovellusrunko kutsuu näkymässä OnDraw()-funktiotasi kuvan näyttämiseksi. Sille on olemassa vastaava OnPrint()-funktio, jota sovellusrunko kutsuu antaakseen näkymäsi käsitellä tietojen tulostamisen. Usein kyse on saman piirtokoodin käyttämisestä kuin OnDraw()- funktiossasi. Mikäli näin on, et joudu oikeastaan toteuttamaan OnPrint()-funktiota sovellusrunko tekee tämän automaattisesti CView-kantaluokassa ja kutsuu OnDraw()-funktiota. Tulostin käsittelee piirtokoodia aivan samoin kuin näytöllä tehtäisiin, koska se korvaa näyttöpiirtopinnan omalla tulostinpiirtopinnallaan. OnDraw()-funktiosi voi sitten tutkia, saiko se syötteenä tulostin- vai näyttöpiirtopinnan, vaikkei sillä ole juuri merkitystä toimivathan piirtofunktiot molemmissa tapauksissa aivan samoin. Pääset perehtymään vakiosovellusrungon tulostustoimintoihin luomalla tavallisen SDI-sovelluksen AppWizardilla. Jätä vaiheessa Step 4 Print and Print Preview asetus valituksi (voit siis napauttaa Finishpainiketta jo vaiheessa Step 1) ja anna projektin nimeksi PrintIt.

3 Ensiksi tarvitset jotain piirrettyä tulostettavaksi. Voit luoda testipiirroksen CPrintItView-luokan (tavallinen CView-luokka) OnDraw()-funktioon listauksen 22.1 mukaisesti. Ohjelma esittää ikkunassa viivapiirroksen keskellä suurikokoista tekstiä (kuva 22.1). Mitä piirretään, ei ole tärkeää pyrimme vain esittämään erot näytön ja tulosteen välillä. LISTAUS 22.1 LST22_1.CPP OnDraw-funktiossa piirretään testikuva 1 void CPrintItView::OnDraw(CDC* pdc) 2 { 3 CPrintItDoc* pdoc = GetDocument(); 4 ASSERT_VALID(pDoc); OSA V LUKU // TODO: add draw code for native data here 6 7 // ** Set metric mapping 8 pdc->setmapmode(mm_lometric); 1 9 // ** Declare and create a font 2.2cm high 10 CFont fnbig; 11 fnbig.createfont(220,0,0,0,fw_heavy,false,false,0, 12 ANSI_CHARSET,OUT_DEFAULT_PRECIS, 13 CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, 14 FF_SWISS+VARIABLE_PITCH,"Arial"); 1 Koordinaatiston kohdistustapa MM_LOMETRIC valitaan, joten loogiset koordinaatit vastaavat 0,1 millimetriä. 15 //** Select the new font and store the original 16 CFont* poldfont = pdc->selectobject(&fnbig); 17 //** Declare a client rectangle 18 CRect rcclient; 19 GetClientRect(&rcClient); 20 // ** Convert to logical units 21 pdc->dptolp(&rcclient); 22 // ** Set up some drawing variables 23 const int npoints = 50; 24 int xm = rcclient.width(); 25 int ym = rcclient.height(); 26 double daspw = xm/(double)npoints; 27 double dasph = ym/(double)npoints; 28 // ** Select a black pen 29 CPen* poldpen = (CPen*)pDC->SelectStockObject(BLACK_PEN); 30 // ** Draw the lines 31 for(int i=0;i<npoints;i++) 32 { 33 int xo = (int)(i * daspw);

4 524 Kehittyneet dokumentti/näkymä-tekniikat 34 int yo = (int)(i * dasph); 35 pdc->moveto(xo,0); 2 36 pdc->lineto(xm,yo); 37 pdc->lineto(xm-xo,ym); 38 pdc->lineto(0,ym-yo); 39 pdc->lineto(xo,0); 40 } 2 Nämä rivit piirtävät merkkijonon ja upean taustan. 3 Rivillä 48 piirretään ikkunan keskelle Sample Print -teksti. 41 // ** Reselect the old pen 42 pdc->selectobject(poldpen); 43 // ** Draw the text on top 44 pdc->settextalign(ta_center+ta_baseline); 45 pdc->setbkmode(transparent); 46 // ** Set grey text 47 pdc->settextcolor(rgb(64,64,64)); 48 pdc->textout(xm/2,ym/2,"sample Print"); 3 49 // ** Reselect the old font 50 pdc->selectobject(poldfont); 51 } KUVA 22.1 PrintIt-ohjelman testikuva ikkunassa.

5 OSA V LUKU Vaikka OnDraw()-funktiossa onkin paljon koodia, ei siinä tehdä erityisen ihmeellisiä asioita. Ikkunan työalueelle piirretään viivoja ja työalueen keskelle tekstiä. Huomaa rivillä 8 piirtotilan asettaminen MM_LOMETRIC:iin eli loogiset koordinaatit ovat millin kymmenesosia (tästä kerrottiin luvussa 15). Rivillä 11 luodaan 2,2 cm korkea fontti ja sillä piirretään esimerkkiteksti rivillä 48. Riveillä piirretään reuna-alueen kaunis viivakuvio työalueen koordinaattien perusteella. Voit itse tutkia yksityiskohdat, tässä luvussa tulemme keskittymään tulostamiseen. Käännettyäsi ja ajettuasi ohjelmaa koodin listauksen 22.1 muutosten tekemisen jälkeen pitäisi sovellusikkunassa näkyä kuvan 22.1 esittämä kuvio. Kuinka sitten saan tulostettua tämän kuvan? Yllättävän helposti, koska sovellusrunko yrittää tulostaa kuvan jo OnDraw()-funktiotasi kutsumalla syöttämällä sille tulostimen piirtopinnan näyttöikkunan sijaan. Kun valitset PrintIt-sovelluksen File-valikosta Print Preview komennon, näet kuvan pienenä vasemmassa yläkulmassa tekstin fontti on siinä hieman liian iso piirrokseen nähden. Tämä ei ole sovellusrungon syy se on tehnyt parhaansa, mutta piirtopinnan koordinaatit ovat väärät. Ongelman syy löytyy riviltä 19 GetClientRect()-funktiosta. Huomaa, että GetClientRect()-funktio on näkymäluokan ( View) jäsenfunktio, ei piirtopinnan. Ongelmaa ei synny ikkunapiirtopinnalla, koska se on ikkunan työalueen (client rectangle) kokoinen. Nyt sen sijaan syötät ikkunan työalueen koordinaatit tulostinpiirtopinnalle (joka vertailtaessa on pienempi), mutta luot 2,2 cm korkean fontin, joka on aina saman kokoinen (piirtotilasta johtuen). Koordinaatiston kohdistustapojen käyttö näytöllä Ohjelmaa ajettaessa saatat huomata, ettei fontti olekaan täsmälleen 2,2 cm korkea. Syy tähän on, että Windowsin on vaikea aina tietää kunkin monitorityypin tarkkoja mittoja (vaikka monitori olisikin määritelty oikein Ohjauspaneelin Näyttöasetuksissa). Tulostinohjaimilla on kuitenkin huomattavasti tarkempi tieto oikeasta koosta, joten tulostettuna fontin tulisikin olla täsmälleen 2,2 cm korkea. KATSO MYÖS Yksityiskohtia OnDraw()-funktion korvaamisesta luvusta 15. Lisätietoa viivan piirtämisestä luvusta 16. Lisätietoa tekstin piirtämisestä luvusta 17. OnPrint()-funktion korvaaminen Saat korjattua työalueen koordinaattiongelman syöttämällä oikeat koordinaatit tulostimelle ikkunan sijaan. Onneksi sovellusrunko kutsuu virtuaalifunktiota, jonka voit korvata näkymässäsi ja jolla voit hakea

6 526 Virtuaalifunktiot ja moniperintä (l. polymorfismi) Virtuaalifunktio on kantaluokassa määritelty funktio, joka usein toteuttaa oletustoiminnon. Kun kantaluokasta johdetaan luokka, se voi toteuttaa oman versionsa virtuaalifunktiosta ja tarjota erikoistuneemmat toiminnot. Aina funktiota kutsuttaessa, jopa kantaluokan osoittimella johdetun luokan olioon, kutsutaan johdetun luokan funktiota; tämä tekniikka on nimeltään virtuaalifunktion korvaaminen (virtual function overriding). Korvaava funktio voi sitten tarvittaessa kutsua korvattua kantaluokan versiota ja saada näin sen toiminnot käyttöönsä. Virtuaalifunktiot ovatkin eräs tärkeimpiä keinoja toteuttaa C++-olioihin olioihin moniperintä. Kehittyneet dokumentti/näkymä-tekniikat tarvitsemasi tiedot. Kuten aiemmin esitettiin, tämä funktio on nimeltään OnPrint() ja se on samankaltainen OnDraw()-funktion kanssa. Piirrettäessä ikkunaan kutsutaan OnDraw()-funktiota ja piirrettäessä tulostimelle kutsutaan OnPrint()-funktiota. Kuinka sitten tulostuksen esikatselussa käytettiin OnDraw()-funktion koodia? CView-luokan oletustoteutuksessa OnPrint() yksinkertaisesti kutsuu OnDraw()- funktiota tulostinpiirtopintaparametrillä. Oman OnPrint()-funktiosi ei ole pakko kutsua OnDraw()-funktiota voit koodata sen tekemään jotain täysin muuta. Useimmat sovellukset tosin joutuvat tulostamaan käyttäjän näkemän kuvan. Täissä sovelluksissa käytetään tulostettaessakin OnDraw()-funktion koodia tulostinpiirtopinnalle. OnPrint()-virtuaalifunktion korvaaminen 1. Napauta projektin työtilaikkunassa (Developer Studion vasemmanpuoleinen ruutu) ClassView-välilehteä. 2. Avaa projektin luokat napauttamalla ikkunan ylintä plusmerkkiä. 3. Napauta hiiren oikealla painikkeella luokkaa, johon haluat lisätä OnPrint()-korvaajafunktion (PrintIt- esimerkissä luokkaa CPrintItView) saadaksesi esiin pikavalikon. 4. Valitse Add Virtual Override komento ja saat esiin New Virtual Override ikkunan. CView-luokan OnPrintoletuskäsittelijän käyttäminen Huomaa, että Wizardin tekemässä OnPrint()-käsittelijässä kutsutaan CView-kantaluokan OnPrint()- funktiota. MFC-lähdekoodia tutkimalla selviää, kuinka sovellusrungon tulostustuki toimii automaattisesti. CView::OnPrint()-funktion koodi löytyy Visual C++-hakemiston alta.\mfc\src\viewcore.cpptiedostosta. CView::OnPrint() yksinkertaisesti kutsuu OnDraw()- käsittelijää välittäen sille pdcpiirtopintaosoittimen. 5. New Virtual Override luettelosta tulisi löytyä OnPrintvirtuaalifunktion. 6. Valitse se ja napauta Add and Edit painiketta OnPrint()- funktion muokkaamiseksi. OnPrint()-funktion vakiokorvaajafunktio näyttää tältä: void CPrintItView::OnPrint(CDC* pdc, CPrintInfo* pinfo) { // TODO: Add your specialized code here CView::OnPrint(pDC,pInfo); } Ensimmäinen huomattava OnDraw()-funktiosta poikkeava seikka on toinen parametri, osoitin CPrintInfo-olioon pinfo. Tästä oliosta löydät tiedot tulostusasetuksista, erityisesti etsimäsi tulostinpiirtopinnan koordinaatit. CPrintInfon jäsenmuuttujissa on runsaasti muutakin hyödyllistä tietoa. Osa näistä on esitetty taulukossa 22.1.

7 TAULUKKO 22.1 CPrintInfon tulostietomuuttujat OSA V LUKU Muuttuja m_ncurpage m_nnumpreviewpages m_rectdraw m_ppd m_bdirect m_bpreview m_strpagedesc m_lpuserdata Sisällön kuvaus Monisivuisessa tulostuksessa nykyinen sivu numero 1 tai 2, riippuen esikatselussa kerralla esitettä vien sivujen määrästä Tulostettavan sivun koordinaatit Osoittaa CPrintDialog-luokkaan, mikäli Printikkunaa (Tulosta) käytetään. TRUE, mikäli Print-ikkuna on ohitettu TRUE, mikäli kyseessä on tulostuksen esikatselu Sivunumeron näyttämisessä käytetty muotoilukoodi Osoitin, jota voidaan käyttää osoittamaan käyttäjän määräämiin tietoihin CPrintInfon muutamia muita jäseniä käsitellään vielä myöhemmin tässä luvussa, mutta aluksi joudut hakemaan tulostuksen työalueen koordinaatit, joita käytät ikkunan työalueen sijaan. Tällä hetkellä tulostettavan sivun koordinaatit ovat jäsenmuuttujassa m_rectdraw. Voit käyttää näitä koordinaatteja tulostinpiirtopinnan kanssa OnDraw()-funktiossa. Pieni ongelma on kuitenkin se, ettei OnDraw()- funktiossa päästä käsiksi koko olioon, vaan joudut kopioimaan koordinaatit CPrintItView-luokan jäsenmuuttujaan. Lisää seuraavat rivit funktioon työalueen koordinaattien tallentamista varten //TODO-kommenttien jälkeen, mutta ennen CView::OnPrint()-kutsua: // ** kopioi työalueen koordinaatit pinfosta if (pinfo) m_rcprintrect = pinfo->m_rectdraw; Tämä tallentaa tulostuksen työalueen CPrintItView-luokan m_rcprintrect-jäsenmuuttujaan. Joudut myös määrittelemän tämän muuttujan, mikä käy helposti napauttamalla CPrintItView-luokkaa hiiren oikealla painikkeella ja valitsemalla pikavalikosta Add Member Variable. Muuttujan tyyppi (Variable Type) on CRect ja määrittely (declaration) tietenkin m_rcprintrect. Saantioikeudeksi joudut asettamaan Private (yksityinen), koska muiden luokkien ei tarvitse tietää mitään näistä sisäisesti käytettävistä koordinaateista. Public-, private- ja protected-saantioikeudet Jokaiselle luokan jäsenmuuttujalle voidaan luokan määrittelyssä asettaa julkinen (public), yksityinen (private) tai suojattu (protected) saantioikeus. Tämä vaikuttaa siihen, kuinka muista luokista ja johdetuista luokista päästään käsiksi kyseisiin jäsenmuuttujiin ja - funktioihin. Private-tyyppinen käsittelyoikeus antaa pääsyn tiettyyn luokan jäseneen vain oman luokan jäsenille. Protected on sama kuin private lisäten käsittelyoikeuden johdettujen luokkien jäsenille. Näillä tekniikoilla C++ohjelmoijat voivat varmistaa tiedon turvallisuuden sallimalla olioiden käsittelyn ainoastaan julkisten (public) saantifunktioiden kautta. Tämä vaikeuttaa huomattavasti jäsenmuuttujan tai funktion käyttöä vahingossa ja estää näin ohjelman mahdollisen kaatumisen.

8 528 Kehittyneet dokumentti/näkymä-tekniikat KATSO MYÖS Lisätietoja näkymäluokista ja CView:istä luvusta 12. Tulostinpiirtopinnan käyttö OnPrint()-funktiolle välitetty piirtopinta poikkeaa näyttöpiirtopinnasta hieman: värejä saattaa olla vähemmän ja piirtopinta on luultavasti näyttöä suurempi. Näitä ominaisuuksia lukuun ottamatta voit piirtää sille aivan kuten näytöllekin. Seuraavaksi esitetään, kuinka voit piirtää samalla OnDraw()-funktiolla niin näytölle kuin tulostimellekin. Kantaluokan koodi CView::OnPrint()-funktiossa toimii juuri näin. Piirtopinnassa on lippu, josta saadaan IsPrinting()-funktiolla selville, ollaanko piirtämässä näyttö- vai tulostintyyppiselle piirtopinnalle. Tämän tiedon avulla voit muuttaa tulostuksen erilaiseksi kuin näytölle on piirretty tai tarkemmin sanoen muuttaa koordinaatit tulosteelle sopiviksi. Esimerkkiohjelmassa tämä tarkoittaa ainoastaan m_rcprintrectkoordinaattien käyttämistä OnDraw()-funktiossa. Listauksessa 22.2 on esitetty koodi, jossa päätetään IsPrinting()-funktion avulla, käytetäänkö ikkunan työalueen koordinaatteja vai tulostimen koordinaatteja. Tämän ohjelman tulostus esikatselussa näkyy kuvasta LISTAUS 22.2 LST22_2.CPP Tulostimen työalueen koordinaattien lisääminen OnDraw()-funktioon 1 Tämä rivi muuntaa laitekoordinaattienkuvapisteet loogisiksi 0,1 mm koordinaateiksi. 1 //** Declare a client rectangle 2 CRect rcclient; 3 4 // ** Check the device context for printing mode 5 if (pdc->isprinting()) 6 { 7 // ** Printing, so use the print rectangle 8 rcclient = m_rcprintrect; 9 } 10 else 11 { 12 // ** Not printing, so client rect will do 13 GetClientRect(&rcClient); 14 } // ** Convert to logical units 17 pdc->dptolp(&rcclient); 1

9 Huomaa listauksessa 22.2, että rivillä 5 kutsutaan IsPrinting()- funktiota if-lauseella. Funktio nimittäin palauttaa TRUE, jos kyseessä on tulostinpiirtopinta (tai esikatselu) ja FALSE muilta piirtopinnoilta. Mikäli kyseessä on tulostinpiirtopinta, rcclient-muuttujaan sijoitetaan aiemmin talletetut tulostimen työalueen koordinaatit (rivi 8) ja ikkunapiirtopinnan koordinaatit puolestaan saadaan tutulla GetClientRect()-funktiolla (rivi 13). Koska olet käyttänyt oletuksesta poikkeavaa koordinaatiston kohdistustapaa (mapping mode), joudut muuttamaan sekä tulostinettä näyttöpiirtopinnan koordinaatit laitekoordinaateista loogisiksi koordinaateiksi. Tämä tehdään rivillä 17 DPtoLP()-funktiolla. Kun lisäät ja muokkaat OnDraw()-funktioosi listauksen rivit 4 14 ja käännät ja ajat sovelluksesi, voit käyttää tulostuksen esikatselua (preview) kuten aiemminkin, mutta paremmin tuloksin (kuva 22.2). OSA V LUKU KUVA 22.2 Tulostuksen esikatselu oikeilla tulostettavan sivun työalueen koordinaateilla KATSO MYÖS Lisätietoja piirtotiloista luvusta 15.

10 530 Laitteiden sivusuhteet Useimpien tulostimien sivusuhde lienee 1:1, mutta esimerkiksi vanhempien faksien lämpökirjoittimissa saattaa sivusuhteessa olla näkyvä ero. 1 Lasketaan ikkunan ja tulostimen sivun leveyksien ja korkeuksien suhteet. 2 Tällä rivillä lasketaan tulostimen oma sivusuhde laiteominaisuuksien tietojen (device caps) mukaan. Kehittyneet dokumentti/näkymä-tekniikat Sivusuhteen säilyttäminen Kuten kuvasta 22.2 näet, tulee kuva paperille muodoltaan vääristyneenä, koska paperi on korkeampi ja kapeampi kuin näyttö. Leveyden ja korkeuden suhdetta kutsutaan sivusuhteeksi (aspect ratio). Jos haluat estää kuvan venymisen suuntaan tai toiseen, joudut säilyttämään saman sivusuhteen kuin näytöllä. Listauksen 22.2 koodi ei vielä huomioi sivusuhdetta, mikä toki sopii toisiin sovelluksiin, joten joudut lisäämään koodia tulostusta varten. Parasta tässä tapauksessa on täyttää paperin koko leveys tai korkeus kuvalla ja sitten lyhentää toista näistä sivusuhteen säilyttämiseksi. Tätä varten tarvitset tietoa paperin koosta ja sen sivusuhteesta. Saat nämä selville (ja paljon muutakin) GetDeviceCaps()-funktiolla. Kun syötät funktiolle ASPECTX- ja ASPECTY-liput, saat selville kuvapisteen leveyden ja korkeuden suhteen. Mikäli suhde on 1:1, kuvapiste on neliön muotoinen, muutoin ei ole ja sivusuhde saattaa poiketa näytön sivusuhteesta. Jos sivusuhde ei ole sama, voit selvittää, saatko näytön sivusuhdetta käyttäen suuremman kuvan vaaka- vai pystysuuntaista kokoa muuttamalla. Näin vältät kuvan vääristymisen. Tarkoitukseen sopiva OnDraw()-funktion koodi on esitetty listauksessa LISTAUS 22.3 LST22_3.CPP Suurimman tulosteen tekeminen sivusuhde säilyttäen 1 //** Declare a client rectangle and get the client rect 2 CRect rcclient; 3 GetClientRect(&rcClient); 4 5 // ** Check the device context for printing mode 6 if (pdc->isprinting()) 7 { 8 // ** Find the Print width : Window width ratio 9 double dwidthratio = (double)m_rcprintrect.width() 10 /(double)rcclient.width(); // ** Find the Print height : Window height ratio 13 double dheightratio = (double) 1 14 m_rcprintrect.height()/(double)rcclient.height(); // ** Calculate the device's aspect ratio 17 double daspect=(double)pdc-> GetDeviceCaps(ASPECTX) 18 /(double)pdc->getdevicecaps(aspecty); // ** Find the new relative height

11 OSA V LUKU int nheight = (int)(rcclient.height() * 22 dwidthratio * daspect ); // ** Find the new relative width 25 int nwidth = (int)(rcclient.width() * 26 dheightratio * (1.0 / daspect) ); // ** Set the whole rectangle 29 rcclient = m_rcprintrect; // ** Determine the best fit, across or down the page 32 if (nheight > nwidth) 3 33 { 34 // ** Down is best, so adjust the width 35 rcclient.bottomright().x = 36 m_rcprintrect.topleft().x + nwidth; 37 } 38 else 39 { 40 // ** Across is best, so adjust the height 41 rcclient.bottomright().y = 42 m_rcprintrect.topleft().y + nheight; 43 } 44 } // Convert to logical units 47 pdc->dptolp(&rcclient); 3 Kun tiedetään, onko tulostusalue leveä vai korkea, saadaan paperi hyödynnettyä parhaiten ja kuva saadaan suurimpaan mahdolliseen kokoon. Huomaa, että sekä näytölle että tulosteeseen piirrettäessä käytetään GetClientRect()-funktiolla haettuja koordinaatteja (rivi 3). Näyttöä käsiteltäessä tämä riittääkin ja koodi jatkuu aivan normaalisti. Jos rivin 6 IsPrinting()-testi palauttaakin TRUE, tapahtuu paljonkin. Aluksi joudutaan selvittämään ikkunan leveyden suhde paperin leveyteen ja ikkunan korkeuden paperin korkeuteen. Nämä löytyvät riveiltä 9 ja 13, joilla paperin mitat jaetaan ikkunan mitoilla. Seuraavaksi päästään laitteen oman sivusuhteen laskemiseen. Funktiolta GetDeviceCaps() saadaan rivillä 17 laskettua itse laitteen leveyden ja korkeuden suhde; tämä tallennetaan muuttujaan daspect. Saaduilla luvuilla voidaan nyt laskea laitteen suhteellinen leveys ja korkeus vastaavaan ikkunan suhteen (rivit 21 ja 25). Tässä laskennassa, jossa on käytetty apuna laitteen sivusuhdetta, saadaan koko sivun leveyteen mitoitettu korkeus tai päinvastoin. Nyt joudutaan päättämään, saadaanko kuva sopimaan sivulle täysilevyisenä ja korkuisena ja sen jälkeen muuttamaan toisen suunnan mittaa. Rivin 32 ehto tekee tämän päätöksen sen mukaan, onko leveys vai korkeus suurempi. Jos Yleisiä sovellusten tulostusasetuksia Monet graafiset sovellukset tarjoavat useita sivusuhteeseen liittyviä valintoja. Esimerkkiohjelmassa on toteutettu valinta Best Fit eli haetaan parhaiten sivulle sopiva asettelu. Toinen yleinen valinta on Sovita Sivulle (Fit To Page), jolloin kuva venytetää koko arkin kokoiseksi (ja sivusuhde vääristyy). Voit törmätä myös valintaan Original Image Size, jolloin kuva esitetään (usein sivun keskellä) näytöllä käytetyssä koossa oikealla sivusuhteella, mutta varsinkin korkearesoluutioisilla tulostimilla tulos saattaa olla liian pienikokoinen.

12 532 Kehittyneet dokumentti/näkymä-tekniikat siis ikkuna on korkea ja kapea, kannattaa käyttää paperin koko korkeutta ja muuttaa leveyttä ja vastaavasti matalan ja leveän ikkunan kanssa on käytettävä koko leveyttä ja muutettava korkeutta. Riippuen valinnasta oikean alakulman x- tai y-koordinaattia muutetaan leveyden tai korkeuden asettamiseksi (rivit 35 ja 42). Huomaa, että muut koordinaatit asetetaan paperin mukaan muuttujaan rcclient (rivi 29), jonka jälkeen muutettava koordinaatti on ainoa tarvittava muutos. Tämän osan jälkeen funktiossa piirretään juuri asetetut työalueen mittojen mukaan. Kun käännät ja ajat sovelluksen listauksen 22.3 rivien OnDraw()- funktioon lisäämisen jälkeen, tulisi tulostuksen esikatseluikkunassa näkyä nyt kuvan sivusuhde samana kuin näytöllä ikkunassakin. Jos muutat ikkunan korkeaksi ja kapeaksi, tulostuksessa käytetään hyväksi paperin koko korkeus eikä koko leveyttä, mutta sivusuhde pysyy silti oikeana. KATSO MYÖS Yksityiskohtia GetDeviceCaps()-funktiosta luvusta 15. Yhden kuvan tulostaminen usealle sivulle Joskus yksi kuva halutaan jakaa tulostettaessa useammalle sivulle. Tätä varten joudutaan piirtämään osa kuvasta kunkin sivun piirtopinnalle. CScrollView-luokasta on tässä apua, koska se tarjoaa funktion ScrollToPosition() ja sallii mittakaavan muuttamisen. Tulostinpiirtopinnan valmistelu ja kohdistaminen sivujen välillä vaatii lisäksi hieman työtä. Sivutus ja paperin suunta Yhden sivun tulostaminen ikkunanäkymän mukaan on yleinen vaatimus, mutta usein tulostuksessa käsitellään laajojen ja mutkikkaiden monisivuisten dokumenttien tulostamista. Sovellusrunko tulee tässäkin apuun tarjoamalla yleisen Print Setup -valintaikkunan (Tulosta) sekä sivunumerointijärjestelmän tiettyjen sivujen esikatselua ja tulostamista varten. Ensimmäisen ja viimeisen tulostettavan sivun asettaminen Monisivuista dokumenttia tulostettaessa tulee aluksi selvittää, mitkä sivut tulostetaan samalla selviää myös tulostettavien sivujen lukumäärä. Tulostamisen alkaessa sovellusrungossa kutsutaan ensin näkymäluokan virtuaalifunktiota OnPreparePrinting(). Funktio saa yhden parametrin, CPrintInfo-olion pinfo. Tämä on ensimmäinen tilaisuus päästä käsiksi CPrintInfo-olioon ja esimerkiksi muuttaa tulostusasetuksia. AppWizard tekee automaattisesti OnPreparePrinting()-käsittelijän SDI-sovellusta luodessaan, joten et joudu lisäämään sitä itse. Saat esiin oletustoteutuksen kaksoisnapauttamalla CPrintItView-näkymäluokkasi

13 OnPreparePrinting()-jäsentä ClassView-sivulla. Sen pitäisi näyttää tältä: BOOL CPrintItView::OnPreparePrinting(CPrintInfo* pinfo) { // default preparation return DoPreparePrinting(pInfo); } Oletuksena kutsutaan DoPreparePrinting()-funktiota, jolle syötetään CPrintInfo-olio pinfo. DoPreparePrinting()-funktio alustaa tulostinpiirtopinnan ja kutsuu tulostettaessa (ei siis esikatselussa) Printvalintaikkunaa. Tätä valintaikkunaa käsitellään tarkemmin seuraavassa kappaleessa, mutta aivan ensiksi voisit asettaa tulostettavat sivut muokkaamalla CPrintInfo-oliota ennen DoPreparePrinting()- funktion kutsumista. Lisää tätä varten seuraavat rivit ennen // default preparation kommenttia: OSA V LUKU pinfo->setminpage(2); pinfo->setmaxpage(8); Nämä kaksi CPrintInfo-luokan jäsenfunktiota muokkaavat pinfon osoittamaa CPrintInfo-oliota asettamaan aloitussivun (SetMinPage():n avulla) numeroksi 2 ja viimeisen tulostettavan sivun numeroksi 8 (SetMaxPage():lla). Nyt dokumenttia tulostettaessa kutsutaan OnPrint()-funktiota seitsemän kertaa. Ainoa ero kutsuissa on pinfo->m_ncurpagejäsenmuuttujan arvo, joka saa sen hetkisen tulostettavan sivun numeron (tässä arvot 2 8). Sivunumeroiden (ja sivumäärän) määrittäminen riippuu aina sovelluksesta. Jos sovelluksestasi halutaan tulostaa CD-levyjen myyntiluettelo, on luonnollista, jos kullakin sivulla on kuvaus yhdestä levystä sekä levyn kansikuva. Tällöin 120 levyn valikoimasta saataisiin 120 sivun tuloste. Jos sovelluksesta tulostetaan hyvin erilaisia osia - kuten lomakkeita, kuvia, erikokoista tekstiä sisältäviä dokumentteja, joudutaan osien korkeudet mittaamaan ja päättelemään sillä perusteella, minkä verran tietoa sivulle sopii ja kuinka paljon sivuja kertyy. Oli miten oli, kun sivujen lukumäärä on tiedossa, se voidaan asettaa CPrintInfo-olioon OnPreparePrinting()-funktiossa. Voit tutustua pelkän näyttöikkunan ja kokonaisen asiakirjan tulostamisen eroihin tekemällä täysin oman OnPrint()-funktion toteutuksen listauksen 22.4 mukaisesti. Tässä OnPrint()-funktiossa ei kutsuta Print-valintaikkunan ohittaminen tulostettaessa Aina ei käyttäjää haluta vaivata Print-valintaikkunalla; se voidaan ohittaa asettamalla OnPreparePrinting()-käsittelijässä pinfo->m_bdirect-muuttuja arvoon TRUE.

14 534 Kehittyneet dokumentti/näkymä-tekniikat kantaluokan CView::OnPrint()-funktiota eikä näin ollen OnDraw()- käsittelijää. Tässä toteutuksessa näytössä on aivan eri kuva kuin tulostuksessa. LISTAUS 22.4 LST22_4.CPP Sivun tulostuksen toteutus OnPrint()-funktiossa 1 Luodaan 72 pisteen fontti CreatePointFont()-funktiolla. 2 Haetaan nykyinen sivunumero CPrintInfo-oliosta. 3 Asetetaan taustakulmiota varten pisteet taulukkoon. 4 Piirretään teksti, jossa on nykyinen sivunumero. 1 void CPrintItView::OnPrint(CDC* pdc, CPrintInfo* pinfo) 2 { 3 // TODO: Add your specialized code here 4 5 // ** Create and select the font 6 CFont fntimes; 7 fntimes.createpointfont(720,"times New Roman",pDC); 1 8 CFont* poldfont = (CFont*)pDC->SelectObject(&fnTimes); 9 10 // ** Create and select the brushe 11 CBrush brhatch(hs_cross,rgb(64,64,64)); 12 CBrush* poldbrush = 13 (CBrush*)pDC->SelectObject(&brHatch); // ** Create the page text 16 CString strdoctext; 17 strdoctext.format("page Number %d", 18 pinfo->m_ncurpage); pdc->settextalign(ta_center+ta_baseline); // ** Set up some useful point objects 23 CPoint ptcenter = pinfo->m_rectdraw.centerpoint(); 24 CPoint pttopleft = pinfo->m_rectdraw.topleft(); 25 CPoint ptbotright = pinfo->m_rectdraw.bottomright(); // ** Create the points for the diamond 28 CPoint ptpolyarray[4]= 29 { 30 CPoint(ptTopLeft.x,ptCenter.y), 3 31 CPoint(ptCenter.x,ptTopLeft.y), 32 CPoint(ptBotRight.x,ptCenter.y), 33 CPoint(ptCenter.x,ptBotRight.y) 34 }; // ** Draw the diamond 37 pdc->polygon(ptpolyarray,4); // ** Draw the text 40 pdc->textout(ptcenter.x,ptcenter.y,strdoctext); // ** Unselect the fonts 43 pdc->selectobject(poldfont); 44 pdc->selectobject(poldbrush); 45 }

15 OSA V LUKU Listauksen 22.4 riveillä 6 12 asetetaan tulostuksen tarvitsemat resurssit (fontti ja sivellin). Huomaa, että tähän tarkoitukseen löytyy parempikin paikka, kuten tässä luvussa myöhemmin esitetään. Voit hyödyntää tulostettavan sivun numeroa eri tekstin tulostamiseksi sivun sijainnin mukaan (rivi 17). Oikeassa sovelluksessa sivunumeron perusteella ehkä paikannettaisiin dokumentissa olevaa tietoa. Aiemmin mainitussa CD-myyntiluettelo esimerkissä sivunumero saattaisi suoraan viitata tiettyyn CD-levyyn ja piirtofunktiot voisivat hyödyntää tuota tietoa. Näin monimutkaiseen esimerkkiin ei tässä ole tilaa, joten tyydymme omassa esimerkissämme ainoastaan tulostamaan sivunumeron pinfo->m_ncurpage muuttujasta. Riveillä asetetaan taustalle piirrettäväksi salmiakkikuvio ja rivillä 40 piirretään sivun keskelle tekstiä. Riveillä valitaan takaisin käyttöön entinen sivellin (brush) ja fontti. Kun käännät ja ajat sovelluksen OnPrint()-funktioon tekemiesi muutosten jälkeen ja valitset sovelluksen File-valikosta Print Preview, pääset esikatselemaan useita sivuja kuvassa 22.3 esitetyillä Next Page ja Prev Page painikkeilla. Jos koneeseesi on kytketty tulostin, voit myös tulostaa monisivuisen dokumentin. MFC:n tulostuksen esikatselun toteutus MFC-sovellusrunko toteuttaa tulostuksen eskatselun (print preview) käyttäen dokumentoimatonta luokkaa CPreviewDC. Tämä erikoispiirtopinta toimii sovellukselle tulostinpiirtopinnan tavoin, mutta piirtääkin kuvan näytölle tavallisen näyttöpiirtopinnan tapaan. Tämä on välttämätöntä tulostinkohtaisten seikkojen, kuten sivutuksen mallintamiseksi. Vaikka luokka on dokumentoimaton, voit tutkia CPreviewDC:n lähdekoodia Visual C++-hakemiston alta tiedostosta MFC\SRC\DCPREV.CPP. KUVA 22.3 Monisivuisen dokumentin esikatselutulostus (Print Preview).

16 536 Kehittyneet dokumentti/näkymä-tekniikat KATSO MYÖS Lisätietoja objektien valitsemisesta piirtopinnalle luvusta 15. Lisätietoja eri sivellintyypeillä piirtämisestä luvusta 16. Collate-valintaruutu Jos käyttäjä poistaa Collatevalinnan (Lajittele) Printvalintaikkunassa, tulostinohjain kerää automaattisesti samat sivut päällekkäin. Tätä toimintoa varten ei jouduta lisäämään koodia, mutta tulostinohjaimen on tuettava sitä - muuten valinta poistetaan käytöstä Printvalintaikkunassa. Print-valintaikkunan käyttö Huomaa, että monisivuista dokumenttia tulostaessasi saat ensin esiin valintaikkunan, josta voit muokata tulostusasetuksia (kuva 22.4). Tämä on tavallinen Print-valintaikkuna (Tulosta), jota kutsutaan OnPreparePrinting()-korvaajafunktion kutsumasta CView::DoPreparePrinting()-funktiosta. Tässä ikkunassa voit määrittää tulostettavan sivualueen, kopioiden määrän, lajitteluvalinnan (Collate), kohdetulostimen ja koko joukon tulostinkohtaisia asetuksia. KUVA 22.4 Tavallinen Print-valintaikkuna. Käyttäjä voi muuttaa tulostusasetuksia tästä valintaikkunasta, joka sitten päivittää muutokset CPrintInfo-olioon ennen sen välittämistä sovelluksellesi. Voit halutessasi muokata tätä valintaikkunaa enemmän tai vähemmän, riippuen tarvittavasta sovelluskohtaisesta räätälöinnistä ja työhön käytettävästä ajasta. Palautapa nyt mieleen taulukon 22.1 esittämä CPrintInfo-luokan m_ppd-osoitin. Tämä osoittaa Print-valintaikkunan MFC-kirjastossa paketoivaan CPrintDialog-luokkaan. Tässä luokassa puolestaan on

17 OSA V LUKU m_pd-jäsen, joka on PRINTDLG-tietorakenne, jossa olevat oletusasetukset näytetään Print-valintaikkunassa. Tässä tietorakenteessa on varsin monta jäsentä, kuten listaus 22.5 osoittaa. Tämän tietorakenteen avulla voit muokata Print-valintaikkunan oletusasetuksia täysin mielesi mukaisiksi ja voit jopa vaihtaa (haasteita halutessasi) koko valintaikkunapohjan. Tässä en aio kertoa kaikista tietorakenteen jäsenistä yksityiskohtaisesti, mutta ainakin eräs merkittävä jäsen on ncopiesjäsenmuuttuja. Jos muutat suoraan tietorakenteen ncopies-jäsenen arvoa ennen CView::DoPreparePrinting()-funktion kutsumista, saat muutettua tulostettavien kopioiden määrää. Lisää tätä varten seuraava rivi OnPreparePrinting()-funktioosi: DevMode-tietorakenteen käyttö DevMode-tietorakenteessa on useita hyödyllisiä attribuutteja, jotka kertovat laitteen teknisistä ominaisuuksista ja konfiguraatiosta. Osoitin tämän tietorakenteeseen saadaan CPrintDialog-luokan GetDevMode()-funktiolla. pinfo->m_ppd->m_pd.ncopies = 15; Kun avaat tämän rivin lisäämisen (ja tiedoston kääntämisen) jälkeen Print-valintaikkunan, on tulostettavien kopioiden oletusmäärä 15 (jos tulostimesi sallii usean kopion tulostamisen). Vastaavasti voit muuttaa muitakin PRINTDLG-tietorakenteen jäseniä. LISTAUS 22.5 LST22_5.CPP PRINTDLG-tietorakenne 1 typedef struct tagpd { 2 DWORD lstructsize; 3 HWND hwndowner; 4 HANDLE hdevmode; 5 HANDLE hdevnames; 6 HDC hdc; 7 DWORD Flags; 8 WORD nfrompage; 9 WORD ntopage; 10 WORD nminpage; 11 WORD nmaxpage; 12 WORD ncopies; 13 HINSTANCE hinstance; 14 DWORD lcustdata; 15 LPPRINTHOOKPROC lpfnprinthook; 1 16 LPSETUPHOOKPROC lpfnsetuphook; 17 LPCTSTR lpprinttemplatename; 18 LPCTSTR lpsetuptemplatename; 19 HANDLE hprinttemplate; 20 HANDLE hsetuptemplate; 21 } PRINTDLG; 1 Tietorakenteen kuuden viimeisen jäsenen avulla voidaan muokata Print-valintaikkuna oman mallin mukaiseksi. Tämä on hyvin kehittynyt ominaisuus, jolla saadaan sovelluksen käyttäjälle esittämä käyttöliittymä täysin haltuun. Käyttäjän kuitattua Print-valintaikkunan OK:lla saat luettua muutokset taulukossa 22.2 esitetyillä CPrintDialog-luokan saantifunktioilla. Jos esimerkiksi haluat lukea käyttäjän asettaman kopioiden määrän ennen varsinaista tulostamista, saat sen CView::DoPreparePrinting()-funktion palautettua sen (listaus 22.6).

18 538 Kehittyneet dokumentti/näkymä-tekniikat Luonnollisesti voit tutkia suoraan myös pinfo->m_ppd->m_pd:n osoittaman PRINTDLG-tietorakenteen jäseniä suoraan. TAULUKKO 22.2 CPrintDialogin saantifunktiot Funktion nimi GetCopies() GetFromPage() GetToPage() GetPortName() GetDriverName() GetPrinterDC() PrintAll() PrintCollate() PrintRange() PrintSelection() Kuvaus Palauttaa käyttäjän asettaman kopioiden määrän Palauttaa asetetun aloitussivun Palauttaa asetetun lopetussivun Palauttaa valitun tulostinportin, esimerkiksi LPT1: Palauttaa valitun tulostinajurin nimen (kohdetulostimen) Palauttaa tulostinpiirtopinnan Palauttaa TRUE, jos tulostettavaksi on valittu kaikki sivut Palauttaa TRUE, jos käyttäjä haluaa tulostuksen lajiteltuna (Collate) Palauttaa TRUE, jos tulostettava sivualue (range) on määritelty Palauttaa TRUE, jos halutaan tulostettavan sivuilta valittu alue LISTAUS 22.6 LST22_6.CPP Määrätyn kopiomäärän varmentaminen tavallisesta Print-valintaikkunasta 1 Käyttäjä joudutaan päästämään ulos silmukasta Cancelpainikkeen napautuksella, muuten ei anneta muita vaihtoehtoja kuin tulostaminen. 2 Tämä epänormaali ehto jättää käyttäjän silmukkaan, jos tulostettavia kopioita on 5 tai vähemmän. Tämän tarkoitus on havainnollistaa Print-valintaikkunassa syötettyjen tietojen varmennusta. 1 BOOL CPrintItView::OnPreparePrinting(CPrintInfo* pinfo) 2 { 3 pinfo->setminpage(1); 4 pinfo->setmaxpage(10); 5 6 pinfo->m_ppd->m_pd.ncopies = 3; 7 8 do 9 { 10 // ** Check if user has cancelled print 11 if (DoPreparePrinting(pInfo) == FALSE) 1 12 return FALSE; // ** Warn the user if too many copies are specified 15 if (pinfo->m_ppd->getcopies()>5) 16 AfxMessageBox("Please choose less than 5 copies"); // ** Keep looping until they specify a valid number 19 } while(pinfo->m_ppd->getcopies()>5); 2 20 return TRUE; 21 }

19 Listauksessa 22.6 funktio CView::DoPreparePrinting() palauttaa FALSE, jos käyttäjä on painanut Cancel-painiketta (rivit 11 ja 12). Muussa tapauksessa rivillä 15 tarkistetaan tulostettavien kopioiden määrä ja käyttäjälle annetaan varoitus, mikäli kopioita halutaan yli 5 (tämä luku on otettu hatusta ). Silmukkaa toistetaan (rivi 19), kunnes käyttäjä syöttää sopivan määrän tai painaa Cancel-painiketta. OSA V LUKU Pysty- ja vaakasuuntainen tulostus Jos valitset sovelluksen File-valikosta Print Setup, voit muuttaa tulostuksen suunnan oletusarvoa. Vaihtoehdot ovat Portrait (pysty) ja Landscape (vaaka). Vaakasuuntaista tulostamista varten et joudu tekemään muutoksia koodiin; jos valitset tämän suunnan (orientation) esikatseluikkunassa, näet välittömästi paperin vaakasuuntaan asetettuna. Kun sovelluksesi vain käyttää CPrintInfo-luokan rectdraw-jäsentä, hoituu vaakasuuntainen tulostuskin automaattisesti. GDI-objektien lisääminen OnBeginPrinting()- funktiolla Kuten aiemmin mainittiin, listauksen 22.4 koodi kyllä toimii, mutta sen resurssien varaamisen voisi tehdä paremminkin. Tämän hetkisessä koodissamme jokaista sivua tulostettaessa kutsutaan OnPrint()- funktiota ja kaikki varataan aina alusta pitäen. Tässä yksinkertaisessa tulostuksessa sovelluksen hidastumista tuskin huomaa, mutta suuremmissa raporteissa halunnet varata resurssit ja suorittaa tarvittavat laskutoimitukset ainoastaan kerran raportin tulostuksen alussa. Tämän jälkeen voit tulostaa sivut ja vapauttaa resurssit raportin lopussa. Ihanteellinen alustuspaikka näille on OnBeginPrinting()- virtuaalifunktio ja resurssien vapauttamiseen vastinpari OnEndPrinting()-funktio. OnBeginPrinting()-funktiota kutsutaan OnPreparePrinting()-funktion jälkeen ja se on ensimmäinen paikka, jossa tulostinpiirtopinta on käytettävissä. Kyseinen piirtopinta on sama kuin tulostettaessa käytettävä, joten voit alustaa kaikki GDI-objektit sekä tulostettavan sivun koordinaatit tässä vaiheessa. AppWizardin automaattisesti luomassa koodissa funktio on vielä tyhjä: Eri paperikoot Käyttäjä voi määrittää eri paperikokoja kirjekuorikoosta A3- kokoon asti. Näiden valintojen käsittelemiseksi ei tarvita toimenpiteitä, koska Windows muuttaa sovelluksellesi välitetyn piirtopinnan automaattisesti valitun paperin kokoiseksi. CPrintInfo-olion rectdrawjäsenmuuttujassa on piirtopinnan kokoa esittävät koordinaatit. void CPrintItView::OnBeginPrinting(CDC* /*pdc*/, CPrintInfo* /*pinfo*/) { // TODO: add extra initialization before printing }

20 540 Kehittyneet dokumentti/näkymä-tekniikat Katsopa funktion määrittelyä erityisen tarkasti: funktiolle välitetyt parametrit on kommentoitu, joten tulet saamaan niistä käännettäessä virheilmoituksia. Muista siis poistaa kommentit ennen parametrien käyttöä. Nyt voit lisätä tähän funktioon GDI-objektien luontikutsut, jolloin et joudu tekemään samaa enää jokaiselle tulostettavalle sivulle erikseen: m_fntimes.createpointfont(720, Times new Roman,pDC); m_brhatch.createhatchbrush(hs_cross,rgb(64,64,64)); Huomaa, että fntimes ja brhatch-objektien nimissä on etuliite m_, joka viittaa objektien kuuluvan luokkaan (toteutus on luokan sisällä) eikä olevan yleisesti saatavilla (toteutus funktiossa). Koska joudut käsittelemään näitä GDI-objekteja OnPrint()-funktiosta, voit lisätä ne luokan määrittelyyn. Lisää siis luokan määrittelyyn fontti- ja sivellinobjektit: Tulostaminen väreissä ja mustavalkoisena Huomaa, että RGB(64,64,64)- makron antama COLORREF-arvo asettaa siveltimen tummanharmaaksi. Useimmat mustavalkotulostimet pystyvät käsittelemään eri harmaan sävyt varsin hyvin ditherointitekniikalla (värejä sekoittamalla). Voit myös määrittää käytettäväksi oikean 24- bittisen TrueColor-värin COLORREF-arvon; piirtopinta muuntaa värin automaattisesti lähimmäksi tulostimella tarjolla olevaksi väriksi. Väritulostimet saatavat pystyä esittämään annetun värin, mutta mustavalkotulostimet muuttavat sen harmaan sävyksi. protected: CFont m_fntimes; CBrush m_brhatch; Saat lisättyä rivit joko kaksoisnapauttamalla ClassView-sivulla CPrintItView-luokkaa ja lisäämällä rivit suoraan tai käyttämällä Add Member Variable valintaikkunaa. Huomaa myös, että kuviosivellin (hatched brush) luodaan CreateHatchBrush()-funktiolla eikä muodostinfunktiolla. Syy tähän on, että sivellin on olemassa yhtä kauan kuin näkymäkin, vaikka joudutkin kutsumaan OnEndPrinting()-funktion lopussa DeleteObject()-funktiota alla olevan GDI-resurssin vapauttamiseksi tulostuksien välillä. Voit siis lisätä sekä GDI-fonttiobjektin että sivellinobjektin tuhoavan koodin OnEndPrinting()-funktioon näin: m_fntimes.deleteobject(); m_brhatch.deleteobject(); Jäljelle jää vielä paikallisten GDI-objektien poistaminen OnPrint()- funktiosta ja niiden viittausten korvaaminen viittauksilla jäsenmuuttujaversioihin. Tämä käy korvaamalla paikalliset CFonttyyppinen fntimes ja CBrush-tyyppinen brhatch-muuttujat ja niiden luontifunktiot aiemmin luodun fontin ja siveltimen valinnalla: CFont* poldfont = (CFont*)pDC->SelectObject(&m_fnTimes); CBrush* poldbrush = (CBrush*)pDC- >SelectObject(&m_brHatch); Jos käännät ja ajat sovelluksen näiden muutosten tekemisen jälkeen, et todennäköisesti huomaa sovelluksen toiminnassa mitään eroa. Periaat-

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

Tulostinajurin ja paperikoon konfigurointiohjeet AutoCad 2006-2007 ohjelmille

Tulostinajurin ja paperikoon konfigurointiohjeet AutoCad 2006-2007 ohjelmille Tulostinajurin ja paperikoon konfigurointiohjeet AutoCad 2006-2007 ohjelmille Erilaisista tulostusjärjestelmistä johtuen kopiolaitokset suosittelevat eri tulostinajureita tulostustiedostojen tekemiseen.

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

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

Piirtopinnalle piirtäminen

Piirtopinnalle piirtäminen OSA IV 333 LUKU 15 15 LUKU Erilaiset piirtopinnat ja niiden käyttö Piirtotilan ja piirtopinnan asetukset ja käyttö Koordinaatistojen kohdistustapojen käyttö piirrettäessä tuumina tai sentteinä 334 Piirtopintatietorakenteet

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

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

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto Condess ratamestariohjelman käyttö Aloitus ja alkumäärittelyt Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto Kun kysytään kilpailun nimeä, syötä kuvaava nimi. Samaa nimeä käytetään oletuksena

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

MySchenker tulostimen ohjeet

MySchenker tulostimen ohjeet MySchenker tulostimen ohjeet Paperirullan asettaminen tulostimeen 1. Avaa tulostin painamalla etulevyn OPEN painikkeesta ja nostamalla kansi kevyesti yläasentoonsa Paperirullan asettaminen tulostimeen

Lisätiedot

ESIKATSELU, TULOSTAMINEN, TUNNISTEET

ESIKATSELU, TULOSTAMINEN, TUNNISTEET Excel 2013 Tulostaminen Sisällysluettelo ESIKATSELU, TULOSTAMINEN, TUNNISTEET TULOSTAMINEN JA TULOSTUSASETUKSET... 1 Esikatselu ja tulostaminen... 1 Reunuksien määrittäminen, keskittäminen... 2 Ylä- ja

Lisätiedot

Valintanauhan komennot Valintanauhan kussakin välilehdessä on ryhmiä ja kussakin ryhmässä on toisiinsa liittyviä komentoja.

Valintanauhan komennot Valintanauhan kussakin välilehdessä on ryhmiä ja kussakin ryhmässä on toisiinsa liittyviä komentoja. Pikaopas Microsoft Excel 2013 näyttää erilaiselta kuin aiemmat versiot. Tämän oppaan avulla pääset alkuun nopeasti ja saat yleiskuvan uusista ominaisuuksista. Komentojen lisääminen pikatyökaluriville Pidä

Lisätiedot

CADS Planner -tulostusohje

CADS Planner -tulostusohje Sisältö Yleistä tulostuksesta... 3 Tulostinajurin asentaminen Windowsiin... 4 Paperiarkin lisääminen tulostinajurille... 5 Tulostimen lisääminen CADSiin... 7 PDF-tiedoston tulostaminen... 9 PLT-tiedoston

Lisätiedot

Tulostamisen Pikaopas Canon imagerunner ADVANCE -laitteille

Tulostamisen Pikaopas Canon imagerunner ADVANCE -laitteille Canon Tulostamisen Pikaopas Canon imagerunner ADVANCE -laitteille Tulostamisen pikaopas 2010 Canon Oy v.1.1 2 Sisällys Tulostimen valinta ja perustulostaminen 4 Kalvolle tai erikoismateriaalille tulostaminen

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

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

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

Sisällysluettelo T A R R A O P A S

Sisällysluettelo T A R R A O P A S isällysluettelo 1 Tarraeditori 3 1.1 Label-ikkunan osat.3 1.2 Label ikkunan toiminnot 4 1.3 Layout-ikkunan osat...5 1.4 Layout-ikkunan toiminnot..5 2 Tarrojen tekeminen 7 3 Tulostusasetukset...8 Esimerkki

Lisätiedot

Sen jälkeen Microsoft Office ja sen alta löytyy ohjelmat. Ensin käynnistä-valikosta kaikki ohjelmat

Sen jälkeen Microsoft Office ja sen alta löytyy ohjelmat. Ensin käynnistä-valikosta kaikki ohjelmat Microsoft Office 2010 löytyy tietokoneen käynnistävalikosta aivan kuin kaikki muutkin tietokoneelle asennetut ohjelmat. Microsoft kansion sisältä löytyy toimisto-ohjelmistopakettiin kuuluvat eri ohjelmat,

Lisätiedot

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include 15: 16: int main() 17: {

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: { Osa I 2. oppitunti C++-ohjelman osat Ennen kuin menemme yksityiskohtaisemmin sisälle C++-luokkiin, -muuttujiin jne, katsokaamme ensin, millaisista osista C++-ohjelma koostuu. Tämän tunnin aikana opit seuraavat

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

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

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

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

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

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

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

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

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

Osa III. Olioiden luominen vapaalle muistialueelle

Osa III. Olioiden luominen vapaalle muistialueelle Osa III 10. oppitunti Kehittyneet osoittimet Eräs tehokkaimpia C++ -työkaluja on mahdollisuus käsitellä tietokoneen muistia suoraan osoittimien avulla. Tässä luvussa käsitelläänkin seuraavia aiheita: Kuinka

Lisätiedot

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

Lisätiedot

C# Windows ohjelmointi perusopas

C# Windows ohjelmointi perusopas Paavo Räisänen C# Windows ohjelmointi perusopas www.ohjelmoimaan.net Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei kaupallisissa tarkoituksissa. Kuitenkaan omille nettisivuille opasta ei saa

Lisätiedot

CABAS. Release Notes 5.4. Uusi kuvien ja dokumenttien käsittely

CABAS. Release Notes 5.4. Uusi kuvien ja dokumenttien käsittely Release Notes 5.4 CABAS Uusi kuvien ja dokumenttien käsittely Olemme päivittäneet ja nykyaikaistaneet CABASin kuvien ja dokumenttien käsittelyn. Nyt kuvia voi vetää hiiren osoittimella ja pudottaa ne kuvaluetteloon.

Lisätiedot

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukot C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukon muuttujilla (muistipaikoilla) on yhteinen nimi. Jokaiseen yksittäiseen

Lisätiedot

Työvälineohjelmistot KSAO Liiketalous 1

Työvälineohjelmistot KSAO Liiketalous 1 KSAO Liiketalous 1 Osat Tiedosto voidaan jakaa osiin ja jokainen osa muotoilla erikseen. Osa voi olla miten pitkä tahansa, yhdestä kappaleesta kokonaiseen tiedostoon. Osanvaihto näkyy näytöllä vaakasuorana

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

Nopean asennuksen ohje

Nopean asennuksen ohje Tulostuspalvelin Nopean asennuksen ohje Nopean asennuksen ohje 1.1 Hardwaren asennusmenettely 1. Liitä tulostuspalvelin tulostimeen, jota haluat käyttää verkossa. 2. Liitä tulostuspalvelin verkkoon liittämällä

Lisätiedot

WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8)

WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8) WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8) 1 UUDEN KILPAILUTIEDOSTON AVAUS Avaa Wcondes ohjelma tuplaklikkaamalla wcondes.lnk ikonia. Ohjelma avaa automaattisesti viimeksi tallennetun kilpailutiedoston.

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

Virtuaalifunktiot ja polymorfismi

Virtuaalifunktiot ja polymorfismi Virtuaalifunktiot ja polymorfismi 16 Virtuaalifunktiot ja polymorfismi Polymorfismi on niin tehokas olio-ohjelmoinnin ominaisuus, että tulet varmastikin käyttämään sitä lähes kaikissa C++-ohjelmissasi.

Lisätiedot

Ohjeet Finna- julisteen PowerPoint- pohjan muokkaamiseen

Ohjeet Finna- julisteen PowerPoint- pohjan muokkaamiseen Ohjeet Finna- julisteen PowerPoint- pohjan muokkaamiseen Ennen kuin aloitat: 1. Asenna tietokoneeseesi ilmainen Miso Regular fontti, jonka saat täältä: https://www.fontspring.com/fonts/marten- nettelbladt/miso

Lisätiedot

Pysäytettyjen töiden tulostus ja poisto Kun tulostuksessa ilmenee asetteluvirheitä Verify print -työt Reserve print -työt

Pysäytettyjen töiden tulostus ja poisto Kun tulostuksessa ilmenee asetteluvirheitä Verify print -työt Reserve print -työt Kun työ lähetetään tulostimeen, tulostinajurissa voidaan määrittää, että työ säilytetään muistissa. Kun tämä pidätetty työ halutaan tulostaa, se määritetään tulostettavaksi tulostimen käyttöpaneelin valikoissa.

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

Käyttöopas RoofCon Viewer

Käyttöopas RoofCon Viewer Käyttöopas RoofCon Viewer Sisällysluettelo Käyttöopas RoofCon Viewer... 1 Sisällysluettelo... 2 Asennus... 3 Merkitse objekti... 3 Zoomaa... 3 Mittaa etäisyys... 3 Työkaluvalikko ja Piirustusvaihtoehdot...

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

MICROSOFT PUBLISHER 2010

MICROSOFT PUBLISHER 2010 1 MICROSOFT PUBLISHER 2010 Julkaisuohjelman peruskäyttö 2 Kurssin sisältö Julkaisun aloittaminen mallien avulla, erilaiset käyttötavat ja mahdollisuudet Tekstiruutujen käyttäminen, linkitys Tekstin käsittely,

Lisätiedot

Passikuva - Käyttöohje Pispalan Insinööritoimisto Oy

Passikuva - Käyttöohje Pispalan Insinööritoimisto Oy Passikuva - Käyttöohje Pispalan Insinööritoimisto Oy Pispalan Insinööritoimisto Oy Harry Karvonen harry.karvonen@pispalanit.fi 27. lokakuuta 2013 Passikuva - Käyttöohje Sisältö i Sisältö 1 Passikuva 1

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

Tyhjät sivut Sivujen asettelu Lajittelu Monisivutulostus Kopiomäärä Sivujen as. ark. Kaksipuolinen Erotinsivut Sidonta Erotinsiv. lähde Sivujen kehys

Tyhjät sivut Sivujen asettelu Lajittelu Monisivutulostus Kopiomäärä Sivujen as. ark. Kaksipuolinen Erotinsivut Sidonta Erotinsiv. lähde Sivujen kehys Viimeistelyvalikosta voidaan määrittää tulostimen käyttämä tulostustapa. Lisätietoja saat valitsemalla valikon vaihtoehdon: Tyhjät sivut Sivujen asettelu Lajittelu Monisivutulostus Kopiomäärä Sivujen as.

Lisätiedot

HP Photo Printing -pikaviiteopas

HP Photo Printing -pikaviiteopas Kuvien tuonti valokuvagalleriaan Seuraavassa kuvataan tapoja, joilla valokuvagalleriaan voidaan lisätä kuvia. Valokuvagalleria on HP Photo Printing -ohjelman vasemmanpuoleinen ruutu. Tulosteiden ja valokuva-albumin

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

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

Muuta pohjan väri [ ffffff ] valkoinen Näytä suuri risti

Muuta pohjan väri [ ffffff ] valkoinen Näytä suuri risti 1. Qcad. Aloitusohjeita. Asenna ohjelma pakettien hallinasta. Tämä vapaa ohjelma on 2D. 3D ohjelma on maksullinen. Qcad piirustusohjelma avautuu kuvakkeesta. Oletuksena, musta pohja. On kuitenkin luontevaa

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

Lisätiedot

FrontPage 2000 - Näkymät

FrontPage 2000 - Näkymät FrontPage 2000 - Näkymät FrontPagessa on kuusi erilaista näkymää sivustoon. Sivunäkymä Tässä näkymässä luodaan sivut eli näkymä vastaa paljolti Wordin tekstinkäsittelyohjelman näkymää. Tässä on myös muokattava

Lisätiedot

812336A C++ -kielen perusteet, 21.8.2010

812336A C++ -kielen perusteet, 21.8.2010 812336A C++ -kielen perusteet, 21.8.2010 1. Vastaa lyhyesti seuraaviin kysymyksiin (1p kaikista): a) Mitä tarkoittaa funktion ylikuormittaminen (overloading)? b) Mitä tarkoittaa jäsenfunktion ylimääritys

Lisätiedot

T740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

T740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010 12. Periytyminen Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi

Lisätiedot

Paperivalikko. Aseta laji/alust Määr. vast.ot.al Monisyöt asetus Mukautetut lajit Vastaanottoalust Ylivuotoalusta Paperin lisäys

Paperivalikko. Aseta laji/alust Määr. vast.ot.al Monisyöt asetus Mukautetut lajit Vastaanottoalust Ylivuotoalusta Paperin lisäys Paperivalikossa voidaan määrittää jokaiseen paperilokeroon lisättävä paperilaji, oletuksena oleva paperilähde ja vastaanottoalusta. Lisätietoja saat valitsemalla valikon vaihtoehdon: 1 Aseta laji/alust

Lisätiedot

Opas tulostamisen kustannuksien vähentämiseen

Opas tulostamisen kustannuksien vähentämiseen Opas tulostamisen kustannuksien vähentämiseen Sisällysluettelo 1. Tulosta mustavalkoisena 2. Kaksipuoleinen tulostus 3. Käytä verkkotulostimia, mielellään monitoimilaitteita 4. Asemoi useampi sivu tulostettavaa

Lisätiedot

Unifaun OnlinePrinter

Unifaun OnlinePrinter Unifaun OnlinePrinter Unifaun Online 2013-10-14 2 Sisältö 1 Unifaun OnlinePrinter tulostusasetukset... 3 2 Automaattinen asennus - Unifaun Online Printer... 4 3 Javan asentaminen... 6 4 Vianmääritys Internet

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

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

E s i t y s g r a f i i k k a a s e l k o k i e l e l l ä MICROSOFT. PowerPoint. P e t r i V a i n i o P e t r i I l m o n e n TIKAS-SARJA

E s i t y s g r a f i i k k a a s e l k o k i e l e l l ä MICROSOFT. PowerPoint. P e t r i V a i n i o P e t r i I l m o n e n TIKAS-SARJA MICROSOFT E s i t y s g r a f i i k k a a s e l k o k i e l e l l ä PowerPoint P e t r i V a i n i o P e t r i I l m o n e n TIKAS-SARJA 6 Sisällysluettelo JOHDANTO TIKAS-PROJEKTI KIRJAN RAKENNE JA TASOMERKINNÄT

Lisätiedot

Windowsia verkkoyhteyksiin käyttäville asiakkaille

Windowsia verkkoyhteyksiin käyttäville asiakkaille Windowsia verkkoyhteyksiin käyttäville asiakkaille Käytettäessä eri käyttöjärjestelmää tai järjestelmäarkkitehtuuria palvelimelle ja asiakkaalle yhteys ei ehkä toimi oikein, kun yhteyden muodostus suoritetaan

Lisätiedot

Tekstinkäsittelyn jatkokurssi

Tekstinkäsittelyn jatkokurssi TAMPEREEN KAUPUNKI Kasvatus- ja opetustoimiala @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Tekstinkäsittelyn jatkokurssi Word Error! Not a valid link. Sisällys 1 Tekstin asettelu 1 1.1 Sarkaimet 1 1.2 Sivun

Lisätiedot

Paperivalikko. Paperilähde. Aseta laji/alust. Paperilaji. Määr. vast.ot.al. Monisyöt. asetus. Paperin paino. Korvaavapapkoko.

Paperivalikko. Paperilähde. Aseta laji/alust. Paperilaji. Määr. vast.ot.al. Monisyöt. asetus. Paperin paino. Korvaavapapkoko. Paperivalikossa voidaan määrittää jokaiseen paperilokeroon lisättävä paperilaji, oletuksena oleva paperilähde ja vastaanottoalusta. Lisätietoja saat valitsemalla valikon vaihtoehdon: 1 Aseta laji/alust

Lisätiedot

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen Helsingin yliopisto WebOodi 1 OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen Opetustapahtuman opiskelijalistan tulostaminen Ilmoittautuneista opiskelijoista

Lisätiedot

JAKELUPISTE KÄYTTÖOHJE 2/6

JAKELUPISTE KÄYTTÖOHJE 2/6 käyttöohjeet JAKELUPISTE KÄYTTÖOHJE 2/6 1. Esittely JakeluPiste on helppo ja yksinkertainen ratkaisu tiedostojen lähettämiseen ja vastaanottamiseen. Olipa kyseessä tärkeä word dokumentti tai kokonainen

Lisätiedot

R4C443Setup Guide Rev. C. Proof Sign-off: K.Gazan CRE Tsukada N.Nomoto R.Thomson. 3/15/01 Pass 0. Suomi MSEUL0475

R4C443Setup Guide Rev. C. Proof Sign-off: K.Gazan CRE Tsukada N.Nomoto R.Thomson. 3/15/01 Pass 0. Suomi MSEUL0475 Proof Sign-off: K.Gazan CRE Tsukada R Suomi MSEUL0475 L Proof Sign-off: K.Gazan CRE Tsukada Pakkauksen sisällön tarkistaminen paperituki tulostimen ohjelmat ja käsikirjan sisältävä CD-ROM värikasettipakkaus

Lisätiedot

Pelaajan tietojen lisääminen

Pelaajan tietojen lisääminen Käytön aloitus Ohjelma käynnistetään tuplaklikkaamalla Jäseri-kuvaketta työpöydältä, tai käynnistä-valikosta. Ohjelmasta aukeaa seuraavanlainen valikko; Jäsenrekisterissä muutetaan jäsentietoja, maksukirjassa

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

Vesa Ollikainen, päivitys Juha Haataja 3.8.2010

Vesa Ollikainen, päivitys Juha Haataja 3.8.2010 METROPOLIA Tekstinkäsittely1 Peruskäyttö Vesa Ollikainen, päivitys Juha Haataja 3.8.2010 Tavoitteet ja sisältö Tavoite Lyhyen asiakirjan kirjoitustaito Word-tekstinkäsittelyohjelmalla Sisältö Tekstinkäsittelyohjelman

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

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

Pikaopas. Microsoft Word 2013 näyttää erilaiselta aiempiin versioihin verrattuna, joten laadimme tämän oppaan avuksi uusien ominaisuuksien opetteluun.

Pikaopas. Microsoft Word 2013 näyttää erilaiselta aiempiin versioihin verrattuna, joten laadimme tämän oppaan avuksi uusien ominaisuuksien opetteluun. Pikaopas Microsoft Word 2013 näyttää erilaiselta aiempiin versioihin verrattuna, joten laadimme tämän oppaan avuksi uusien ominaisuuksien opetteluun. Pikatyökalurivi Nämä komennot ovat aina näkyvissä.

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

Monisyöt asetus Paperin laatu Mukautetut lajit Paperilaji. Kirjek toiminto Paperin paino. Paperin lisäys Korvaava papkoko Paperikoko Yleisasetukset

Monisyöt asetus Paperin laatu Mukautetut lajit Paperilaji. Kirjek toiminto Paperin paino. Paperin lisäys Korvaava papkoko Paperikoko Yleisasetukset Paperivalikossa voidaan määrittää jokaiseen paperilokeroon lisättävä paperilaji ja oletuksena oleva paperilähde. Lisätietoja saat valitsemalla valikon vaihtoehdon: Monisyöt asetus Paperin laatu Mukautetut

Lisätiedot

H6: Tehtävänanto. Taulukkolaskennan perusharjoitus. Harjoituksen tavoitteet

H6: Tehtävänanto. Taulukkolaskennan perusharjoitus. Harjoituksen tavoitteet H6: Tehtävänanto Taulukkolaskennan perusharjoitus Ennen kuin aloitat harjoituksen teon, lue siihen liittyvä taustamateriaali. Se kannattaa käydä läpi kokeilemalla samalla siinä annetut esimerkit käyttämässäsi

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Planssit (layouts) ja printtaus

Planssit (layouts) ja printtaus 1 / 21 Digitaalisen arkkitehtuurin yksikkö Aalto-yliopisto 17.11.2015 Planssit (layouts) ja printtaus Yksittäisen kuvan printtaus 2 / 21 Ennen printtausta valitse näkymä, jonka haluat printata, klikkaamalla

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

Xerox WorkCentre 3655 Monitoimitulostin Ohjaustaulu

Xerox WorkCentre 3655 Monitoimitulostin Ohjaustaulu Ohjaustaulu Käytettävissä olevat palvelut voivat vaihdella tulostimen asetusten mukaan. Lisätietoja palveluista ja asetuksista on Käyttöoppaassa. 3 4 5 Kosketusnäyttö Valikot 6 6 Aakkosnumeerinen näppäimistö

Lisätiedot

Sähköposti ja uutisryhmät 4.5.2005

Sähköposti ja uutisryhmät 4.5.2005 Outlook Express Käyttöliittymä Outlook Express on windows käyttöön tarkoitettu sähköpostin ja uutisryhmien luku- ja kirjoitussovellus. Se käynnistyy joko omasta kuvakkeestaan työpöydältä tai Internet Explorer

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

Pikanäppäin Yhdistelmiä. Luku 6 Pikanäppäimet

Pikanäppäin Yhdistelmiä. Luku 6 Pikanäppäimet Luku 6 Pikanäppäimet Pikanäppäimet ovat näppäinyhdistelmiä, jotka mahdollistavt ZoomTextin komennot ilman ZoomTextin käyttäjäliittymän aktivointia. Pikanäppäin komentoja on melkein jokaisella ZoomTextin

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

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5. 1. Toteuta Pythonilla seuraava ohjelma:

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5. 1. Toteuta Pythonilla seuraava ohjelma: Kerta 2 Kerta 3 Kerta 4 Kerta 5 Kerta 2 1. Toteuta Pythonilla seuraava ohjelma: 2. Tulosta Pythonilla seuraavat luvut allekkain a. 0 10 (eli, näyttää tältä: 0 1 2 3 4 5 6 7 8 9 10 b. 0 100 c. 50 100 3.

Lisätiedot

12 Mallit (Templates)

12 Mallit (Templates) 12 Mallit (Templates) Malli on määrittely, jota käyttämällä voidaan luoda samankaltaisten aliohjelmien ja luokkien perheitä. Malli on ohje kääntäjälle luoda geneerisestä tyyppiriippumattomasta ohjelmakoodista

Lisätiedot

Word 2007 käyttöliittymä

Word 2007 käyttöliittymä Word 2007 käyttöliittymä Word 2007n ulkoasu ja suurin osa toiminnoista on muuttunut radikaalisti verrattuna edellisiin Wordin versioihin. Toimintoja ei enää suoriteta valikoiden kautta, vaan valikot on

Lisätiedot

Tekstinkäsittelyn jatko KSAO Liiketalous 1. Osanvaihto näkyy näytöllä vaakasuorana kaksoispisteviivarivinä ja keskellä riviä lukee osanvaihdon tyyppi

Tekstinkäsittelyn jatko KSAO Liiketalous 1. Osanvaihto näkyy näytöllä vaakasuorana kaksoispisteviivarivinä ja keskellä riviä lukee osanvaihdon tyyppi KSAO Liiketalous 1 Osat Tiedosto voidaan jakaa osiin ja jokainen osa muotoilla erikseen. Osa voi olla miten pitkä tahansa, yhdestä kappaleesta kokonaiseen tiedostoon. Osanvaihto näkyy näytöllä vaakasuorana

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

FAMILYTREEPAINTER. FamilyTreePainter Käyttöohje

FAMILYTREEPAINTER. FamilyTreePainter Käyttöohje FAMILYTREEPAINTER FamilyTreePainter Käyttöohje i F A M I L Y T R E E P A I N T E R FamilyTreePainter Käyttöohje Copyright 2006-2013 Timo Vaara Email: timo@vaara.org ii Table of contents 1 YLESIATÄ... 1

Lisätiedot

Fiery Driver Windows-käyttöjärjestelmälle

Fiery Driver Windows-käyttöjärjestelmälle 2015 Electronics For Imaging, Inc. Tämän julkaisun tiedot kuuluvat tämän tuotteen Lakisääteisien ilmoitusten piiriin. 5. lokakuuta 2015 Sisällys 3 Sisällys...5 Fiery Driver Updater...5 Mukautettujen Fiery

Lisätiedot

Määrittelydokumentti

Määrittelydokumentti Määrittelydokumentti Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (alkukesä) Sami Korhonen 014021868 sami.korhonen@helsinki. Tietojenkäsittelytieteen laitos Helsingin yliopisto 23. kesäkuuta

Lisätiedot

Asiakirjojen vertailu-kurssi

Asiakirjojen vertailu-kurssi Asiakirjojen vertailu-kurssi Revussa voi verrata keskenään kahta PDF:ää ja automaattisesti näyttää niiden väliset erot. Piirrosten ja kaaviokuvien vertailu sujuu siten helposti ja nopeasti. Kun haluat

Lisätiedot

Osa. Mitä ovat vakiot jäsenfunktiot Kuinka erotetaan luokan käyttöliittymä sen toteutuksesta

Osa. Mitä ovat vakiot jäsenfunktiot Kuinka erotetaan luokan käyttöliittymä sen toteutuksesta Osa II 7. oppitunti Lisää luokista Aiemmassa luvussa opit luomaan uusia tietotyyppejä esittelemällä luokkia. Tässä luvussa opit hallitsemaan luokkia ja käyttämään kääntäjää auttamaan virheiden löytämisessä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 26.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 1 / 34 Luentopalaute kännykällä käynnissä! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

Ohje tekstinkäsittelyharjoitus 10. Pöytäkirja, jossa käytetään ylätunnistetta. Tehtävän aloitus

Ohje tekstinkäsittelyharjoitus 10. Pöytäkirja, jossa käytetään ylätunnistetta. Tehtävän aloitus Ohje tekstinkäsittelyharjoitus 10 Pöytäkirja, jossa käytetään ylätunnistetta Standardiasiakirjan asettelut Microsoft Word 2007 ja 2010 versioissa Word ohjelman oletusasetukset ovat sellaiset, että suomalaisen

Lisätiedot