Hiirisanomiin vastaaminen juha.jarvensivu@tut.fi 2007
Sisällys Hiirisanomat Näppäinsanomat Capture Objektin valinta Osumatestaus Objektin raahaaminen Esimerkki
Hiirisanomat MouseEnter Kutsutaan kun hiiren kursori siirtyy ikkunan päälle MouseMove Kutsutaan kun hiiren kursori liikkuu ikkunan päällä MouseHover Kutsutaan kun hiiren kursori pysähtyy ikkunan päällä MouseDown Kutsutaan kun hiiren painike painetaan pohjaan MouseUp Kutsutaan kun hiiren painike vapautetaan MouseLeave Kutsutaan kun hiiren kursori poistuu objektin päältä
MouseEventArg MouseEventArg.Button Kertoo mitä näppäintä painettiin MouseButtons { Left, Middle, None, Right } MouseEventArg.Clicks Kertoo kuinka monta kertaa painiketta on klikattu MouseEventArg.Location Kertoo hiiren kursorin koordinaatit
Control.Capture Mahdollistaa hiiri-sanomien vastaanottamisen vaikka kursori olisi ikkunan ulkopuolella Hyödyllinen drag-drop operaatioiden toteuttamisessa
Näppäinsanomat KeyDown Kutsutaan kun painike painetaan pohjaan KeyUp Kutsutaan kun painike vapautetaan KeyPressed Kutsutaan character -näppäintä painettaessa Huom! Näppäinsanomat vastaanottavalla komponentilla pitää olla focus (Control.Focused)
KeyEventArg bool KeyEventArg.Alt Kertoo onko Alt-painike pohjassa bool KeyEventArg.Control Kertoo onko Control-painike pohjassa bool KeyEventArg.Shift Kertoo onko Shift-painike pohjassa Keys KeyEventArg.KeyCode Näppäimen koodi
Sisällys Hiirisanomat Näppäinsanomat Capture Objektin valinta Osumatestaus Objektin raahaaminen (drag and drop) Esimerkki
Objektin valitseminen Miten objekti valitaan (select)? Voiko useita objekteja olla valittuna samanaikaisesti (multiselect)? Miten valinta peruutetaan (unselect)? Miten valinta näkyy käyttäjälle? Mistä käyttäjä tietää, että objekti on valittavissa? Missä tieto valituista objekteista säilytetään?
Osuiko hiiren klikkaus objektiin? Tieto, jota tarvitaan useiden toimintojen toteuttamiseen objektin valinta raahaus (drag-drop) asiayhteysvalikon aukaiseminen Entä jos useita objekteja piirretty päällekkäin?
Osumatestaus
Osumatestaus Kyllä Kyllä Ei Ei
Bittikartan hyödyntäminen osumatestauksessa empty white bitmap draw shape getpixelcolor(int x, int y) Contains? black = yes white = no
GraphicsPath (.NET) System.Drawing.Drawing2D Polkuun voidaan lisätä viivoja ja muita yksinkertaisia muotoja AddLine AddEllipse AddPie AddString bool IsVisible(int x, int y) Kertoo sisältääkö GraphicsPath parametrina annetun pisteen
Esimerkki private void IsVisibleExample() { // Create a path and add an ellipse. GraphicsPath mypath = new GraphicsPath(); mypath.addellipse(0, 0, 100, 100); // Test the visibility of point (50, 50). bool visible = mypath.isvisible(50, 50); // Show the result. MessageBox.Show(visible.ToString()); }
Usean objektin valitseminen Hiirellä maalaamalla Valitaan yksitellen ja pidetään CTRLnäppäin pohjassa CTRL+A valitsee kaikki alkiot
Hiirellä maalaaminen
Objektien liikuttaminen (raahaus) Raahaamista käytetään useissa ohjelmissa Pasianssissa kortteja (kuvia) raahataan paikasta toiseen Tekstikäsittelyohjelmassa maalatun tekstin voi raahata uuteen kohtaan Työpöydällä voidaan ikonien paikkaa muuttaa raahaamalla Yleensä raahaus voidaan keskeyttää / peruuttaa Raahauksen keskeytys esimerkiksi painamalla hiiren oikeata näppäintä Raahattava objekti palaa alkuperäiselle paikalleen Erikoistapauksia Raahaus x- tai y-akselin suuntaisesti
Hiirellä raahaaminen 1. Raahaamisen aloittaminen Valitaan raahattava objekti/objektit Pidetään hiiren vasen painike pohjassa ja liikutetaan hiirtä 2. Raahaaminen Objektit tai niitä esittävät kuvat liikkuvat usein hiiren mukana Raahaaminen voidaan yleensä keskeyttää 3. Raahaamisen lopettaminen Raahaaminen lopetetaan vapauttamalla hiiren vasen painike, jolloin objektit kiinnittyvät uuteen paikkaan Jos paikka on laiton, niin objektit palaavat alkuperäisille paikoilleen
Offset offsetx offsety
Esimerkki-sovellus Yhden objektin valitseminen Klikkaa hiirellä objektia Useamman objektin valinta Valitse objekteja Ctrl-painike pohjassa Hiirellä maalaamalla CTRL+A valitsee kaikki Objektien liikuttaminen Nuolinäppimillä Hiirellä raahaamalla Objektit liikkuvat akseleiden suuntaisesti Shift-painike pohjassa Hiiren oikean näppäimen painaminen keskeyttää raahauksen ja objektit palautuvat alkuperäisille paikoilleen
Lähteitä GraphicsPath (.NET) http://msdn.microsoft.com/library/default.asp?u rl=/library/enus/cpref/html/frlrfsystemdrawingdrawing2dgra phicspathclasstopic.asp