Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / Technologie / Software & Hardware
Reageren
 
Topictools Zoek in deze topic
Oud 21-05-2009, 12:36
Stuiterbal20
Stuiterbal20 is offline
Hallow mensen!

Ik heb een form gemaakt met daarom een button en een stuk lege ruimte. Er staan twee textboxen op, waar mensen een hoogte en breedte kunnen invullen (txtHoogte en txtBreedte). De knop heet btnTeken.

Ik ben bezig met een klasse, maar kom er helemaal niet uit. Bij de button heb ik het volgende;


private void btnTeken_Click(object sender, EventArgs e)
{
double H = double.Parse(txtHoogte.Text);
double B = double.Parse(txtBreedte.Text);
blokje r = new blokje(H, B, 30, 200, Color.Purple, this);
r.TekenBlokje();
}



In de klass staat het volgende;


namespace WindowsApplication1
{
class blokje
{
double H, B;
float X, Y;
System.Drawing.Color KL;
System.Windows.Forms.Form Frm;

public blokje(double Hoogte, double Breedte)
{
H = Hoogte;
B = Breedte;
}

public blokje(
double Hoogte,
double Breedte,
float XAs,
float YAs,
System.Drawing.Color Kleur,
System.Windows.Forms.Form Formulier)
{
H = Hoogte;
B = Breedte;
X = XAs;
Y = YAs;
KL = Kleur;
Frm = Formulier;
}

public double Omtrek()
{
return (H + B) * 2;
}
public double Oppervlakte()
{
return H * B;
}
public void TekenBlokje()
{
System.Drawing.Pen myPen;
myPen = new System.Drawing.Pen(KL);
System.Drawing.Graphics formGraphics = Frm.CreateGraphics();
formGraphics.DrawRectangle(myPen, X, Y, (float)B,(float)H);
myPen.Dispose();
formGraphics.Dispose();
}
}
}


Oke, zodra er op de button geklikt word, word er netjes een blokje getekend met de hoogte en de breedte die in de tekstboxen zijn opgegeven.

Maar de bedoeling is eigenlijk dat een veld van zo'n 120 bij 60 pixels gevuld word met blokjes. De txtHoogte en txtBreedte moet dus per blokje zijn. Hoe doe ik dit?

__________________
Wil je daar mayo bij?
Met citaat reageren
Advertentie
Oud 26-05-2009, 10:42
Rob
Avatar van Rob
Rob is offline
Loopen!

for(int i = 0; i < hoogte_form; i += H) {
for(int j = 0; i < breedte_form; j+= B) {
formGraphics.DrawRectangle(myPen, i, j, (float)B,(float)H);
}
}

Je begint dus op 0,0 (op je veld) met het eerste blokje. Daarna schuif je B pixels op en tekent dus op B,0 een nieuw blokje. Daarna op 2*B,0, etc.. Wanneer je buiten het veld dreigt te geraken (j*B > breedte_form), stopt de inner loopt en ga je H pixels naar beneden en begin je op 0,H. De tweede blokje op die rij komt weer op B,H, die daarna op 2*B,H, etc.. Wanneer i*H > hoogte_form, stopt de buitenste loop en is het veld vol, met geen enkel blokje buiten de grenzen van het veld.

Op die manier vul je makkelijk het hele veld met blokjes naast en onder elkaar. Tenminste... als je dat bedoelt.
__________________
Bad spelling and grammar make me [sic].
Met citaat reageren
Oud 21-06-2009, 13:50
Stuiterbal20
Stuiterbal20 is offline
Waar moet ik die code neerzetten dan? Ik heb hem in de klasse gezet, maar dna krijg ik allemaal foutmeldingen?!
__________________
Wil je daar mayo bij?
Met citaat reageren
Oud 03-07-2009, 14:23
Rob
Avatar van Rob
Rob is offline
In de methode waar je de call van je button afhandelt. Je wilt immers dat alle blokjes dán getekend worden. Je kunt het niet helemaal copy-pasten, maar het idee is dus dat je binnen de btnTeken_Click method de loop stopt en in het binnenste van de loop maak je voor ieder blokje dat je wilt tekenen een nieuwe instantie van de Blokje class. Je zou zoiets als dit kunnen krijgen:

Code:
private void btnTeken_Click(object sender, EventArgs e) {
double H = double.Parse(txtHoogte.Text);
double B = double.Parse(txtBreedte.Text);
for(int i = 0; i < hoogte_form; i += H) {
for(int j = 0; i < breedte_form; j+= B) {
// Maak nieuw blokje
blokje r = new blokje(H, B, i, j, Color.Purple, this);
r.TekenBlokje();
}
}
}
De i en de j zijn hier de X en de Y van het blokje welke aangeven vanuit welk punt het blokje getekend moet worden.
__________________
Bad spelling and grammar make me [sic].
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar


Alle tijden zijn GMT +1. Het is nu 03:09.