Berichten: 159
avatar
Offline Stuur privebericht
Hallo allemaal,

Ik heb voor school een opdracht gekregen om een programma in C# te schrijven waarmee je kan tekenen, de bedoeling is dat als je klikt er een cirkel getekend word en als je op het toetsenbord bijvoorbeeld op de letter A drukt, de letter A op het form getekend word.

Het tekenen van een cirkel en de tekst word wel geplaatst alleen de letter word niet op de goede plek geplaatst. Het is de bedoeling dat het word neergezet bij de cursor. Nu heb ik Cursor.Position gedaan alleen dan zet die hem er een eindje onder.

Mijn class:
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class cDraw
    
{
        public static 
void mCirkel(Color cForm fPoint o)
        {
            
Pen p = new Pen(c);
            
Graphics g f.CreateGraphics();
            
g.DrawEllipse(po.Xo.Y3030);
            
g.Dispose(); p.Dispose();
        }
        public static 
void mTekst(Color cForm fstring lPoint k)
        {
            
SolidBrush sb = new SolidBrush(c);
            
Graphics g f.CreateGraphics();
            
Font fl = new Font("Microsoft Sans Serif"30FontStyle.Bold);
            
g.DrawString(lflsbk);
            
g.Dispose(); sb.Dispose();
        }
    }

Mijn script:
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
12
private void Form1_MouseUp(object senderMouseEventArgs e)
        {
            
cDraw.mCirkel(cd1.Colorthise.Location);
            if (
e.Button == MouseButtons.Right)
            {
                
cd1.ShowDialog();
            }
        }
        protected 
override void OnKeyPress(KeyPressEventArgs e)
        {
            
cDraw.mTekst(cd2.Colorthise.KeyChar.ToString(), Cursor.Position);
        }


Ik hoop dat jullie mij kunnen helpen.


Met vriendelijke groeten,

Descoo
Laatst gewijzigd door Descoo op 2011-03-13 14:19:06
13-03-2011 14:18
Dit topic is 308 keer bekeken door 60 verschillende leden
Reacties op: "Keypress"
1
Berichten: 1148
avatar
Offline Stuur privébericht
Zijn de waarde o.X en o.Y wel goed?
13-03-2011 14:46
Berichten: 159
avatar
Offline Stuur privébericht
Deze is voor de cirkel en die word wel bij de muis weergegeven alleen de Tekst niet. Ik heb al verschillende dingen geprobeerd zoals MousePosition en Cursor.Position maar krijg het niet werkend.

Bij de eerst heb ik e.Location gebruikt maar deze werkt niet bij de onderste omdat daar MouseEventArgs daar niet toegevoegd kan worden op een of andere manier.
13-03-2011 14:57
Berichten: 2123
avatar
Offline Stuur privébericht
Quote

The MousePosition property returns a Point that represents the mouse cursor position at the time the property was referenced. The coordinates indicate the position on the screen, not relative to the control, and are returned regardless of whether the cursor is positioned over the control. The coordinates of the upper-left corner of the screen are 0,0.



http://msdn.microsoft.com/en-us/library/system.windows.forms.control.mouseposition.aspx

Nou heb ik geen ervaring met C#, maar als ik deze documentatie moet geloven is de waarde van Cursor.Position 0,0 wanneer je muis in de linkerbovenhoek van je scherm staat, en dus niet in de linkerbovenhoek van je venster.

Of er een dergelijke waarde bestaat die wel de waarde binnen je venster neemt weet ik niet, even doorzoeken zou ik zeggen.

Dat e.Location niet functioneert is logisch: Het is een Key event en geen Mouse event, de actie heeft dus niets met de muis te maken.
13-03-2011 15:30
Berichten: 159
avatar
Offline Stuur privébericht
Bedankt voor uw reactie, is het ook mogelijk om een extra MouseEventArgs toe te voegen aan OnKeyPress? Want dan kan ik gewoon Location gebruiken.
13-03-2011 15:54
Berichten: 2123
avatar
Offline Stuur privébericht
In principe kun je dit soort dingen gewoon in de documentatie (API) vinden. Niet dat ik je wil veroordelen dat je dat niet hebt gedaan, je moet tenslotte wel weten waar je moet zoeken.

De OnKeyPress method:
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.onkeypress.aspx

Het eerste en laatste argument wat deze method meekrijgt is een KeyPressEventArgs object. Dit object staat ook in de API:

http://msdn.microsoft.com/en-us/library/system.windows.forms.keypresseventargs.aspx

Dit object heeft helaas geen method om een MouseEventArgs object op te vragen en erft ook niet over van MouseEventArgs (en is dus geen MouseEventArgs). Er vanuitgaande dat zelf een MouseEventArgs maken geen optie is, kun je dus niet aan een MouseEventArgs object komen in je OnKeyPress event.

In wat voor type object staat het tweede stukje code (die twee methoden)?
13-03-2011 19:59
Berichten: 159
avatar
Offline Stuur privébericht
Bedankt voor jullie hulp, ik heb het op de volgende manier gedaan:
In mijn script heb ik een Point aangemaakt en elke keer als de muis beweegt dus bij MouseMove heb ik gezegd dat die Point geupdate moet worden met e.Location. Nu ik hem aanroep zet hij hem op de goede plek.

Nogmaals bedankt, topic kan gesloten worden.
15-03-2011 15:17
Berichten: 624
avatar
Offline Stuur privébericht
Klinkt allemaal erg interessant dit Mogen wij je opdracht ook zien?
15-03-2011 16:05
Reageer op: "Keypress"
1
Je kan niet reageren omdat je niet bent ingelogd. Inloggen of Aanmelden