TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
Brahim Altamimi
NA
6
0
Timer does n't work with the form
Jan 13 2012 10:45 PM
Hi, I have one class form and draw shape class. in fact I need to make the ball move around when i click Button or mouse. I design it but when i run it with the timer give me error message that the Object reference not set to an instance of an object as the photo shows.
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Linq;
using
System.Text;
using
System.Windows.Forms;
using
System.IO;
namespace
DRAWINGSHAPES
{
public
partial
class
ShapeDrawing
:
Form
{
//variables declaration
private
DrawShapesClass
shapeobject;
private
int
SizeofShape;
private
int
XColOfShape;
private
int
YRowOfShape;
private
float
xSpeed_;
private
float
ySpeed_;
private
string
txtHex;
private
string
shapeselected;
private
Bitmap
previewbitmap;
private
Color
colorselected;
private
bool
DrawButtonClicked;
public
ShapeDrawing()
{
InitializeComponent();
//call the "MouseClickDrawShape" method to get the mouse position and draw the shape on it
DrawShapesPicturebox.MouseClick +=
new
System.Windows.Forms.
MouseEventHandler
(MouseClickDrawShape);
//initialize the picture box for preview
previewbitmap =
new
Bitmap
(PreviewPicturebox.Width, PreviewPicturebox.Height);
}
private
void
DrawShapes()
{
//get the selected shape and store the value in the variable "shapeselected"
if
(CircleRadioButton.Checked ==
true
)
{
shapeselected =
"circle"
;
}
else
if
(SquareRadioButton.Checked ==
true
)
{ shapeselected =
"square"
; }
else
if
(TriangleRadioButton.Checked ==
true
)
{ shapeselected =
"triangle"
; }
//get the selected color and store the value in the variable "colorselected"
if
(RedRadioButton.Checked ==
true
)
{ colorselected =
ColorTranslator
.FromHtml(
"#FF0000"
); }
//hexadecimal value for Red color
else
if
(GreenRadioButton.Checked ==
true
)
{ colorselected =
ColorTranslator
.FromHtml(
"#00FF00"
); }
//hexadecimal value for Green color
else
if
(BlueRadioButton.Checked ==
true
)
{ colorselected =
ColorTranslator
.FromHtml(
"#0000FF"
); }
//hexadecimal value for Blue color
//check whether the drawbutton is clicked or not; if yes, then execute the method for getting the random position for the shape
if
(DrawButtonClicked ==
true
)
{
DrawButtonClicked =
false
;
Random
randompos =
new
Random
();
//the random no. to get must not be smaller than the width of the picturebox
XColOfShape = randompos.Next(DrawShapesPicturebox.Width);
//the random no. to get must not be smaller than the height of the picturebox
YRowOfShape = randompos.Next(DrawShapesPicturebox.Height);
xSpeed_ = randompos.Next(DrawShapesPicturebox.Width);
ySpeed_ = randompos.Next(DrawShapesPicturebox.Height);
}
// use CreateGraphics() function for drawing the shapes in to the "DrawShapesPicturebox"
Graphics
shapegraphics = DrawShapesPicturebox.CreateGraphics();
if
(CircleRadioButton.Checked ==
true
)
{
shapeselected =
"circle"
;
Random
rand =
new
Random
();
shapeobject =
new
DrawShapesClass
(DrawShapesPicturebox.DisplayRectangle, rand, 30,
Color
.AntiqueWhite);
}
shapeobject =
new
DrawShapesClass
(XColOfShape , YRowOfShape , xSpeed_, ySpeed_, SizeofShape, shapeselected, colorselected);
shapeobject.Draw(shapegraphics);
DrawShapesPicturebox.Image = previewbitmap;
//use FromImage()function for saving and retrieving the image of the "DrawShapesPicturebox"; this will save to the bitmap variable or memory
Graphics
bitmapgraphics =
Graphics
.FromImage(previewbitmap);
shapeobject.Draw(bitmapgraphics);
PreviewPicturebox.Image = previewbitmap;
}
private
void
MouseClickDrawShape(
object
sender,
MouseEventArgs
e)
{
//if (CircleRadioButton.Checked == true)
//{
// //shapeselected = "circle";
// // XColOfShape = e.X ; //for "Column" mouse cursor position
// // YRowOfShape = e.Y ; //for "Row" mouse cursor position
//}
//else if (SquareRadioButton.Checked == true)
//{
// shapeselected = "square";
// XColOfShape = e.X ; //for "Column" mouse cursor position
// YRowOfShape = e.Y ; //for "Row" mouse cursor position
// DrawShapes();
//}
//else
//{
// XColOfShape = e.X ; //for "Column" mouse cursor position
// YRowOfShape = e.Y ; //for "Row" mouse cursor position
// DrawShapes();
//}
}
private
void
ColorpaletteButton_Click(
object
sender,
EventArgs
e)
{
if
(colorDialog1.ShowDialog() ==
DialogResult
.OK)
{
// Store the color as a hex number
string
HexColor =
string
.Format(
"0x{0:X8}"
, colorDialog1.Color.ToArgb());
// Strip the unnecessary characters at the end of the hex number
txtHex =
"#"
+ HexColor.Substring(HexColor.Length - 6, 6);
colorselected =
ColorTranslator
.FromHtml(txtHex);
//initialize the Color Radio buttons to false
RedRadioButton.Checked =
false
;
GreenRadioButton.Checked =
false
;
BlueRadioButton.Checked =
false
;
}
}
private
void
DrawButton_Click(
object
sender,
EventArgs
e)
{
DrawButtonClicked =
true
;
DrawShapes();
}
private
void
SizetrackBar_Scroll(
object
sender,
EventArgs
e)
{
SizeofShape = SizetrackBar.Value;
//size of the shape
}
private
void
RefreshMenuOption_Click(
object
sender,
EventArgs
e)
{
//refresh the graphics or bitmap memory of the pictureboxes
DrawShapesPicturebox.Refresh();
PreviewPicturebox.Image =
null
;
PreviewPicturebox.Invalidate();
//refresh() function cannot clear the bitmap memory
previewbitmap =
new
Bitmap
(PreviewPicturebox.Width, PreviewPicturebox.Height);
//inialize the preview picturebox
}
private
void
DrawMenuOption_Click(
object
sender,
EventArgs
e)
{
DrawButtonClicked =
true
;
DrawShapes();
}
private
void
ExitMenuOption_Click(
object
sender,
EventArgs
e)
{
this
.Close();
}
private
void
DrawShapesPicturebox_Click(
object
sender,
EventArgs
e)
{
}
private
void
timer1_Tick(
object
sender,
EventArgs
e)
{
// shapeselected = "circle";
shapeobject.Move(DrawShapesPicturebox.DisplayRectangle);
DrawShapesPicturebox.Refresh();
}
}
}
using
System;
using
System.Drawing;
namespace
DRAWINGSHAPES
{
class
DrawShapesClass
{
private
float
xcol;
private
float
yrow;
private
float
dxcol;
private
float
dyrow;
private
int
shapediameter_;
private
string
shapetype;
//private Brush brushtype; <- this is used for Fill Method
private
Brush
brushtype;
//<- this is used for drawing line
public
DrawShapesClass(
float
colparam,
float
rowparam,
float
dx,
float
dy,
int
diameterparam,
string
shapeparam,
Color
colorparam)
{
xcol = colparam;
yrow = rowparam;
this
.dxcol = dx;
this
.dyrow = dy;
shapetype = shapeparam;
shapediameter_ = diameterparam;
//brushtype = new SolidBrush(colorparam); //for FILL method
brushtype =
new
SolidBrush
(colorparam);
//for drawing lines
}
public
void
Draw(
Graphics
graphics)
{
switch
(shapetype)
{
case
"circle"
:
//graphics.FillEllipse(brushtype, xcol, yrow, shapediameter, shapediameter); //for solidbrush function
graphics.FillEllipse(brushtype, xcol -30, yrow-15, shapediameter_, shapediameter_);
//for drawing line
break
;
case
"square"
:
//graphics.FillRectangle(brushtype, xcol, yrow, shapediameter, shapediameter); //for solidbrush function
graphics.FillRectangle(brushtype, xcol -30, yrow-15, shapediameter_, shapediameter_);
//for drawing line
break
;
case
"triangle"
:
{
//graphics.FillPolygon(brushtype, new Point[] //for solidbrush function and DrawPolygon function is for drawing lines
graphics.FillPolygon(brushtype,
new
Point
[] {
new
Point
((
int
)xcol, (
int
)yrow),
new
Point
((
int
)xcol - shapediameter_, (
int
)yrow + shapediameter_),
new
Point
((
int
)xcol + shapediameter_, (
int
)yrow + shapediameter_) });
}
break
;
}
}
public
DrawShapesClass(
Rectangle
bounds,
Random
rand,
int
shapeDiameter,
Color
color)
{
xcol = rand.Next(0, bounds.Width - shapediameter_);
yrow = rand.Next(0, bounds.Height - shapediameter_);
dxcol =
Convert
.ToSingle(0.5 + 1.5 * rand.NextDouble());
if
(rand.Next(2) == 1)
{
{
dxcol = -dxcol;
}
}
dyrow =
Convert
.ToSingle(0.5 + 1.5 * rand.NextDouble());
if
(rand.Next(2) == 1)
{
{
dyrow = -dyrow;
}
}
shapediameter_ = shapeDiameter;
brushtype =
new
SolidBrush
(color);
}
public
void
Move(
Rectangle
bounds)
{
Move();
Bounce(bounds);
}
private
void
Move()
{
xcol += dxcol;
yrow += dyrow;
}
private
void
Bounce(
Rectangle
bounds)
{
if
(xcol <= 0)
{
dxcol =
Math
.Abs(dxcol);
xcol = bounds.Left;
}
else
if
(xcol + shapediameter_ >= bounds.Width)
{
dxcol = -
Math
.Abs(dxcol);
xcol = bounds.Right - shapediameter_;
}
if
(yrow <= 0)
{
dyrow =
Math
.Abs(dyrow);
yrow = bounds.Top;
}
else
if
(yrow + shapediameter_ >= bounds.Height)
{
dyrow = -
Math
.Abs(dyrow);
yrow = bounds.Bottom - shapediameter_;
}
}
public
float
X
{
get
{
return
xcol;
}
set
{
xcol =
value
;
}
}
public
float
Y
{
get
{
return
yrow;
}
set
{
yrow =
value
;
}
}
public
Point
Position
// create the
{
get
{
// retrive and read
int
x =
Convert
.ToInt32(xcol);
int
y =
Convert
.ToInt32(yrow);
return
new
Point
(x, y);
// plan
}
set
{
xcol =
value
.X;
yrow =
value
.Y;
}
}
}
}
Reply
Answers (
0
)
How to insert radio button control value into dabase
How to solve Ajaxcontroltoolkit Editor didn't display some icon ??