![]() |
Visual Basic C# blokjes tekenen
Hallow mensen! *O*
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? :confused: -O- |
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. :p |
Waar moet ik die code neerzetten dan? Ik heb hem in de klasse gezet, maar dna krijg ik allemaal foutmeldingen?!
|
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) { |
Alle tijden zijn GMT +1. Het is nu 21:56. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.