Basti
Antworten: |
15 |
Hits: |
11.028 |
|
|
//Alles im paintereignis ausgegeben
private void pic_Paint(object sender, PaintEventArgs e)
{
Graphics z = e.Graphics; // neue zeichenfläche von ereignis erhalten, e automatisch
z.SmoothingMode = SmoothingMode.AntiAlias; // Keine pixel mehr
Pen p = new Pen(Color.DarkBlue, 3);
Point Zentrum = new Point(pic.ClientSize.Width / 2, pic.ClientSize.Height / 2); // oberer punkt genau in der mitte
Size s = new Size(100, 100); // clientsize damit nur fenster zum abstand berechnet wird
Rectangle r = new Rectangle(Zentrum.X - pic.Width / 2, Zentrum.Y + pic.Height / 2 - 20, 3000, 20); // Boden / Fahrbahn teil1
//andere möglichkeit für eine zeichenfläche
z.DrawRectangle(new Pen(Color.Brown), r);
RectangleF rr = new RectangleF(xrr, yrr, r1, r1); //Rad_hinten
z.DrawEllipse(p, rr);
RectangleF rf = new RectangleF(xrf, yrf, r1, r1); //Rad_vorne
z.DrawEllipse(p, rf);
RectangleF pr = new RectangleF(xpr, ypr, rp, rp); //person
z.DrawEllipse(p, pr);
// Aufhängung hinten
PointF pointe = new PointF(xd1-3, yd1+2);
PointF pointf = new PointF(xrr + 40, yrr - 11);
e.Graphics.DrawLine(new Pen(Color.Red, 5), pointe, pointf);
// Sitz
float xsir, ysi, xsif;
xsir = xrr + 15;
ysi = yrr - 10;
xsif = xrf + 5;
PointF pointa = new PointF(xsir, ysi);
PointF pointb = new PointF(xsif, ysi);
e.Graphics.DrawLine(new Pen(Color.Green, 5), pointa,pointb);
// Aufhängung vorne
PointF pointc = new PointF(xd2+3, yd2+3);
PointF pointd = new PointF(xrf, yrf - 20);
e.Graphics.DrawLine(new Pen(Color.Red, 5), pointc, pointd);
// Motor
PointF[] m = new PointF[5];
m[0] = new PointF(xrr + 40, ysi + 3);
m[1] = new PointF(xpr + 15, ysi + 3);
m[2] = new PointF(xpr + 15, ysi + 10);
m[3] = new PointF(xrr + 40, ysi + 10);
m[4] = new PointF(xrr + 40, ysi + 3);
z.DrawLines(new Pen(Color.Blue, 3), m);
// Mensch
PointF[] x = new PointF[4];
x[0] = new PointF(xpr + 7, ypr + 13); // hals
x[1] = new PointF(xpr - 5, yrr - 15); // becken
x[2] = new PointF(xpr + 10, yrr - 5); // Knie
x[3] = new PointF(xpr - 10, yrr + 5); // fuß
z.DrawLines(new Pen(Color.Black, 3), x);
// Arme
PointF pointg = new PointF(xpr, ypr+20);
PointF pointh = new PointF(xrf+2, yrf - 18);
e.Graphics.DrawLine(new Pen(Color.Black, 3), pointg, pointh);
// Schanze
Pen blackPen = new Pen(Color.Black, 3);
// Create rectangle for ellipse.
RectangleF rect = new RectangleF(xp1, yp1, 400.0F, 700.0F);
// Create start and sweep angles.
float startAngle = 0;
float sweepAngle = -trkschanze.Value;
// Draw pie to screen.
e.Graphics.DrawPie(blackPen, rect, startAngle, sweepAngle);
// Landung
Pen blackPen1 = new Pen(Color.Black, 3);
RectangleF rect1 = new RectangleF(xp1 + 750, yp1, 400.0F, 700.0F);
float startAngle1 = 180.0F;
float sweepAngle1 = trkschanze.Value;
e.Graphics.DrawPie(blackPen1, rect1, startAngle1, sweepAngle1);
}
private void pic_Resize(object sender, EventArgs e)
{
pic.Invalidate();
xrr = 35 + 35;
xrf = 135;
xpr = 100 + 16;
yrf = pic.Height - 73 + 25;
yrr = pic.Height - 73 + 25;
ypr = pic.Height - 120 + 35;
r1 = 25;
rp = 15;
xd1 = 60 + 25;
xd2 = 160 - 15;
xd3 = 113 + 10;
yd1 = pic.Height - 48 + 12;
yd2 = pic.Height - 48 + 12;
yd3 = pic.Height - 107 + 30;
xp1 = 200f;
yp1 = pic.Height - 373;
}
private void btnstart_Click(object sender, EventArgs e)
{
tm1.Enabled = !tm1.Enabled;
}
private void tm1_Tick(object sender, EventArgs e)
{
// Bewegung der X-Achse
if (objPosition == position.Right)
{
xrr += trkspeed.Value;
xrf += trkspeed.Value;
xpr += trkspeed.Value;
xd1 += trkspeed.Value;
xd2 += trkspeed.Value;
xd3 += trkspeed.Value;
pic.Invalidate();
}
}
|
|