using
System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace testgrid
... {
public partial class Bounce : Form
...{
const int iTimerInterval=25;
const int iBallSize=16;
const int iMoveSize = 4;
Bitmap bitmap;
int xCenter, yCenter;
int cxRadius, cyRadius, cxMove, cyMove, cxTotal, cyTotal;
public Bounce()
...{
InitializeComponent();
ResizeRedraw = true;
Timer timer = new Timer();
timer.Interval = iTimerInterval;
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
OnResize(EventArgs.Empty);
}
protected override void OnResize(EventArgs e)
...{
//base.OnResize(e);
Graphics g = CreateGraphics();
g.Clear(BackColor);
float fRadius = Math.Min(ClientSize.Width / g.DpiX, ClientSize.Height / g.DpiY)/iBallSize;
cxRadius = (int)(fRadius * g.DpiX);
cyRadius = (int)(fRadius * g.DpiY);
g.Dispose();
cxMove = Math.Max(1, cxRadius / iMoveSize);
cyMove = Math.Max(1, cyRadius / iMoveSize);
cxTotal = 2 * (cxRadius + cxMove);
cyTotal = 2 * (cyRadius + cyMove);
bitmap = new Bitmap(cxTotal,cyTotal);
g = Graphics.FromImage(bitmap);
g.Clear(BackColor);
DrawBall(g, new Rectangle(cxMove, cyMove, 2 * cxRadius, 2 * cyRadius));
g.Dispose();
xCenter = ClientSize.Width / 2;
yCenter = ClientSize.Height / 2;
}
protected virtual void DrawBall(Graphics g, Rectangle rect)
...{
g.FillEllipse(Brushes.Red, rect);
}
void timer_Tick(object sender, EventArgs e)
...{
//throw new Exception("The method or operation is not implemented.");
Graphics g = CreateGraphics();
g.DrawImage(bitmap, xCenter - cxTotal / 2, yCenter - cyTotal / 2, cxTotal, cyTotal);
g.Dispose();
xCenter += cxMove;
yCenter += cyMove;
if ((xCenter + cxRadius >= ClientSize.Width) || (xCenter - cxRadius <= 0))
cxMove = -cxMove;
if ((yCenter + cyRadius >= ClientSize.Height) || (yCenter - cyRadius <= 0))
cyMove = -cyMove;
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace testgrid
... {
public partial class Bounce : Form
...{
const int iTimerInterval=25;
const int iBallSize=16;
const int iMoveSize = 4;
Bitmap bitmap;
int xCenter, yCenter;
int cxRadius, cyRadius, cxMove, cyMove, cxTotal, cyTotal;
public Bounce()
...{
InitializeComponent();
ResizeRedraw = true;
Timer timer = new Timer();
timer.Interval = iTimerInterval;
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
OnResize(EventArgs.Empty);
}
protected override void OnResize(EventArgs e)
...{
//base.OnResize(e);
Graphics g = CreateGraphics();
g.Clear(BackColor);
float fRadius = Math.Min(ClientSize.Width / g.DpiX, ClientSize.Height / g.DpiY)/iBallSize;
cxRadius = (int)(fRadius * g.DpiX);
cyRadius = (int)(fRadius * g.DpiY);
g.Dispose();
cxMove = Math.Max(1, cxRadius / iMoveSize);
cyMove = Math.Max(1, cyRadius / iMoveSize);
cxTotal = 2 * (cxRadius + cxMove);
cyTotal = 2 * (cyRadius + cyMove);
bitmap = new Bitmap(cxTotal,cyTotal);
g = Graphics.FromImage(bitmap);
g.Clear(BackColor);
DrawBall(g, new Rectangle(cxMove, cyMove, 2 * cxRadius, 2 * cyRadius));
g.Dispose();
xCenter = ClientSize.Width / 2;
yCenter = ClientSize.Height / 2;
}
protected virtual void DrawBall(Graphics g, Rectangle rect)
...{
g.FillEllipse(Brushes.Red, rect);
}
void timer_Tick(object sender, EventArgs e)
...{
//throw new Exception("The method or operation is not implemented.");
Graphics g = CreateGraphics();
g.DrawImage(bitmap, xCenter - cxTotal / 2, yCenter - cyTotal / 2, cxTotal, cyTotal);
g.Dispose();
xCenter += cxMove;
yCenter += cyMove;
if ((xCenter + cxRadius >= ClientSize.Width) || (xCenter - cxRadius <= 0))
cxMove = -cxMove;
if ((yCenter + cyRadius >= ClientSize.Height) || (yCenter - cyRadius <= 0))
cyMove = -cyMove;
}
}
}
using
System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace testgrid
... {
public partial class BouncingGradientBrushBall : Bounce
...{
public BouncingGradientBrushBall()
...{
InitializeComponent();
}
protected override void DrawBall(Graphics g, Rectangle rect)
...{
GraphicsPath path = new GraphicsPath();
path.AddEllipse(rect);
PathGradientBrush pgbrush = new PathGradientBrush(path);
pgbrush.CenterPoint = new PointF((rect.Left + rect.Right) / 3, (rect.Top + rect.Bottom) / 3);
pgbrush.CenterColor = Color.White;
pgbrush.SurroundColors = new Color[] ...{ Color.Red };
g.FillRectangle(pgbrush, rect);
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace testgrid
... {
public partial class BouncingGradientBrushBall : Bounce
...{
public BouncingGradientBrushBall()
...{
InitializeComponent();
}
protected override void DrawBall(Graphics g, Rectangle rect)
...{
GraphicsPath path = new GraphicsPath();
path.AddEllipse(rect);
PathGradientBrush pgbrush = new PathGradientBrush(path);
pgbrush.CenterPoint = new PointF((rect.Left + rect.Right) / 3, (rect.Top + rect.Bottom) / 3);
pgbrush.CenterColor = Color.White;
pgbrush.SurroundColors = new Color[] ...{ Color.Red };
g.FillRectangle(pgbrush, rect);
}
}
}