Interaktiivinen käyttöliittymä juha.jarvensivu@tut.fi 2008
Sisällys Hiirisanomat ja Näppäinsanomat 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 ja Näppäinsanomat 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
Hiirellä raahaaminen Raahaus-operaatio koostuu kolmesta vaiheesta Raahauksen aloittaminen Raahaaminen Raahauksen lopettaminen Yleensä raahaus voidaan keskeyttää / peruuttaa esim painamalla hiiren oikeata näppäintä Erikoistapauksia Raahaus x- tai y-akselin suuntaisesti
Offset offsetx offsety
Kursorin vaihtaminen System.Windows.Forms.Form if (this.cursor!= Cursors.Arrow) { this.cursor = Cursors.Arrow; }
Standard kursorit Cursors.Arrow Cursors.Hand Cursors.Help Cursors.IBeam Cursors.No Cursors.WaitCursor
.cur tiedosto CUR = Microsoft Windows cursor Cursor c = new Cursor( mycursors.cur );
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