Futásidőben rajzolás.

Futásidőben rajzolás.
2010-10-29T16:49:02+02:00
2010-10-31T13:42:36+01:00
2022-11-19T16:30:34+01:00
scheggartz
Sziasztok!

A helyzet a következő:

Adott egy kis program, amiben kő-papír-ollót játszik a gép a felhasználóval. ahogy mennek a körök, ábrázolnám a nyerési arányokat. Ezt úgy képzeltem el, hogy a groupbox paint eseménye kirajzol egy fektetett téglalapot indulásnál, majd, ahogy játsszuk a köröket, két függőleges "vonal" jelenne meg és "csúszkálna" jobbra-balra attól függően, hogy ki mennyiszer nyert, ill. hány döntetlen volt.

Így rajzodik ki a tégla:

System.Drawing.Graphics graphicsObj; graphicsObj = this.CreateGraphics(); Pen p = new Pen(Color.Black, 1); Graphics ojjektum = e.Graphics; ojjektum.DrawRectangle(p, ettol, magassag, eddig, magassag);

A játék úgy néz ki, hogy a játékos beírja a tippet és egy gomb click eseményében értékelődnek ki a tippek, hogy ki győz, stb. és amint ezek megvannak, úgy kéne újrarajzolni a két vonalat, ami a téglában jelöli a változást...

Most ismerkedem a C#-pal, nem azért szívok ilyesmivel, mert nincs jobb dolgom, ezeket minden Teréz-anya vegye számításba!

A segítséget, érdemi hozzászólásokat nagyon szépen köszönöm!
Mutasd a teljes hozzászólást!
Hi!

Habár nem értem teljesen a kérdésedet,de ezzel a kóddal mozgathatod a vonalakat:


public partial class Form1 : Form { Rectangle vonal1; Rectangle vonal2; Rectangle hatter = new Rectangle() { Width = 100, Height = 100, X = 100, Y = 100 }; const int vonalH = 30; const int vonalW = 10; int x1, y1, x2, y2; public Form1() { InitializeComponent(); vonal1 = new Rectangle() { Width = 10, Height = 30, X = 110, Y = 110 }; vonal2 = new Rectangle() { Width = 10, Height = 30, X = 180, Y = 110 }; x1 = vonal1.X; y1 = vonal1.Y; x2 = vonal2.X; y2 = vonal2.Y; } private void button1_Click(object sender, EventArgs e) { //kiszámolod az eredményt - kitalálod merre mozogjanak a vonalak-> x és y vonal1.X = 150; vonal1.Y = 110; vonal2.X = 190; vonal2.Y = 110; this.Refresh();//meghívod a form1_paint-t } private void button1_Paint(object sender, PaintEventArgs e) { } private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; g.FillRectangle(Brushes.Black, hatter); g.FillRectangle(Brushes.Green, vonal1); g.FillRectangle(Brushes.Green, vonal2); } }
Mutasd a teljes hozzászólást!

  • Na jó de mi a kérdésed?
    Mutasd a teljes hozzászólást!
  • Hogy kell ezt megcsinálni, hogy a kiértékelés után, ha megvan, hogy a téglalapon hol van a két vonal új helye, hogy rajzoltatom ki? Ezt most nagyon jól fogalmaztam meg...
    Mutasd a teljes hozzászólást!
  • Hi!

    Habár nem értem teljesen a kérdésedet,de ezzel a kóddal mozgathatod a vonalakat:


    public partial class Form1 : Form { Rectangle vonal1; Rectangle vonal2; Rectangle hatter = new Rectangle() { Width = 100, Height = 100, X = 100, Y = 100 }; const int vonalH = 30; const int vonalW = 10; int x1, y1, x2, y2; public Form1() { InitializeComponent(); vonal1 = new Rectangle() { Width = 10, Height = 30, X = 110, Y = 110 }; vonal2 = new Rectangle() { Width = 10, Height = 30, X = 180, Y = 110 }; x1 = vonal1.X; y1 = vonal1.Y; x2 = vonal2.X; y2 = vonal2.Y; } private void button1_Click(object sender, EventArgs e) { //kiszámolod az eredményt - kitalálod merre mozogjanak a vonalak-> x és y vonal1.X = 150; vonal1.Y = 110; vonal2.X = 190; vonal2.Y = 110; this.Refresh();//meghívod a form1_paint-t } private void button1_Paint(object sender, PaintEventArgs e) { } private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; g.FillRectangle(Brushes.Black, hatter); g.FillRectangle(Brushes.Green, vonal1); g.FillRectangle(Brushes.Green, vonal2); } }
    Mutasd a teljes hozzászólást!
  • Atomzsír. Rávezettél a dologra, egyrészt a
    this.refresh();
    nem volt meg, másrészt meg, hogy nem vonalazni kell hanem téglalapolni. Nna mindegy, ha a kérdést nem értetted, ezt sem fogod - a hiba nem a te készülékedben van -, de nagyon köszönöm a segítséget!!!

    riszpekt
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd