csharp nummeren.

  • Onderwerp starter Onderwerp starter baws
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

baws

Terugkerende gebruiker
Lid geworden
9 apr 2010
Berichten
1.258
Hallo.

voor een form applicatie met een afbeelding, wil ik er nummers op plaatsen.
als ik ergens klik moet er dus een nummer komen.
deze nummers moeten op volgorde zijn dus 0 1 2 3 4 5 enz.
het is al gelukt om een rondje te zetten op de plaats waar geklikt heb, hoe kan ik zorgen dat de cijfers er komen, de code die ik gebruikt heb voor de rondjes is.
Code:
            Graphics gf = pbPicture.CreateGraphics();
            //een circle tekenen.
            gf.DrawEllipse(new Pen(Color.GreenYellow, 7), new Rectangle(e.X, e.Y, 10, 10));

mvg
 
Daarvoor kan je ''DrawString'' gebruiken van Graphics.

Dus zoiets als:

Ergens globaal een integer aanmaken die op 0 staat en ''Getal'' heet, dan het volgende:
PHP:
gf.DrawString(Convert.ToString(Getal), Overige_Opties_Zoals_Positionering_Komen_Hier___Float_Enzo);
Getal++;

En dan krijg je iets zoals dit:

rwVrM.png


Of dit :D

tHjmz.png


En dan gebruik ik deze code:

PHP:
        int Getal = 0;

        private void Klikken(object sender, MouseEventArgs e)
        {
            Graphics g = this.CreateGraphics();
            g.DrawEllipse(new Pen(Color.GreenYellow, 7), new Rectangle(e.X, e.Y, 20, 20));
            g.DrawString(Convert.ToString(Getal), new Font("Comic Sans MS", 9), Brushes.Red, e.X + 5, e.Y +3);
            Getal++;
        }

En als je die bolletjes wilt vullen, zoals dit:

ZWV6X.png


Dan kan je deze code gebruiken:

PHP:
        int Getal = 0;

        private void Klikken(object sender, MouseEventArgs e)
        {
            Graphics g = this.CreateGraphics();
            Rectangle r = new Rectangle(e.X, e.Y, 20, 20);
            g.DrawEllipse(new Pen(Color.GreenYellow, 7), r);
            g.FillEllipse(Brushes.GreenYellow, r);
            g.DrawString(Convert.ToString(Getal), new Font("Comic Sans MS", 9), Brushes.Red, e.X + 5, e.Y +3);
            Getal++;
        }
 
Laatst bewerkt:
kan ik Klikken ook aanroepen in de functie private void pbPicture_MouseDoubleClick(object sender, MouseEventArgs e)
als ik in deze functie Klikken(); zet vraagt hij om parameters, welke parameters moet ik hier opgeven.
bedankt in iedergeval voor je hulp dit was precies wat ik bedoelde :)
 
Je moet de code die ik heb gegeven precies onder de plek zetten waar je deze code hebt gezet:

PHP:
Graphics gf = pbPicture.CreateGraphics();
            //een circle tekenen.
            gf.DrawEllipse(new Pen(Color.GreenYellow, 7), new Rectangle(e.X, e.Y, 10, 10));

Dus dan zet je deze code eronder:

PHP:
g.DrawString(Convert.ToString(Getal), new Font("Comic Sans MS", 9), Brushes.Red, e.X + 5, e.Y +3);
            Getal++;

En dan zet je dit buiten de void:

PHP:
int Getal = 0;


En wat je ook kan doen, is de code die ik in "Klikken" heb staan, kopiëren naar je eigen aangemaakte void, lijkt me handiger.

That should do the trick :)
 
Laatst bewerkt:
ik gebruik nu

Code:
Point p = e.Location;
          Graphics gf = pbPicture.CreateGraphics(); 
          //maak een cirkel op de plaats die je aanklikt kleur rood,
          gf.DrawEllipse(new Pen(Color.Red, 4), new Rectangle(e.X, e.Y, 8, 8));

dit werkt goed, het rondje heeft in het midden een stukje open nou, daar wil ik graag de exacte plek waar voorheen is geklikt, nu is het naar rechts omdat het beginpunt linksboven is.
is het mogelijk om het rondje wat open is precies op de positie komt waar is geklikt?
als ik nu op de plaats in het rondje druk is dit niet gelijk aan de plek op de coordinaten
 
Probeer dit eens, bij deze zal de muis altijd in het midden van het getekende plaatje staan:

PHP:
            int HoogteEnBreedte = 8;
            Graphics gf = this.CreateGraphics();
            //maak een cirkel op de plaats die je aanklikt kleur rood,
            gf.DrawEllipse(new Pen(Color.Red, 4), new Rectangle(e.X - (HoogteEnBreedte / 2), e.Y - (HoogteEnBreedte / 2), HoogteEnBreedte, HoogteEnBreedte));
 
Thanx het lijkt perfect te werken !
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan