Issue dated - 03rd May 2004

-


Previous Issues

CURRENT ISSUE
INDIA NEWS
NEWS ANALYSIS
INDIA TRENDS
INDIA COMPUTES
PRODUCT
COLUMNS
TECH FORUM

THE C# COLUMN

BETWEEN THE BYTES
TECHNOLOGY
SPECIALS <NEW>
Symantec Report
Security Headquarters
JobsDB
MINDPRINTS
HMA BANKBIZ
EC SERVICES
ARCHIVES/SEARCH
IT APPOINTMENTS
Openings At Jobstreet.com
WRITE TO US
SUBSCRIBE/RENEW
CUSTOMER SERVICE
ADVERTISE
ABOUT US

 Network Sites
  IT People
  Network Magazine
  Business Traveller
  Exp. Hotelier & Caterer
  Exp. Travel & Tourism
  Exp. Pharma Pulse
  Exp. Healthcare Mgmt.
  Express Textile
 Group Sites
  ExpressIndia
  Indian Express
  Financial Express

 
Front Page > TechSpace > Story Print this Page|  Email this page

The C# column

The Timezone application - I

We had started the timezone application in the last article. Just to revise, we had drawn two lines, intersecting each other at the cursor position.

Add the following data members to the Form1 class.

Point hstart, hend, vstart, vend ;
Image img ;
Label l ;

The hstart and hend objects contain starting and ending coordinates of the horizontal line. The vstart and vend objects contain starting and ending coordinates of the vertical line. The Image object is to be used to load and draw the world map image. The label would be popped up to show the day of week, time and city name.

Add the Load event handler. Add the initialisation code as shown below.

private void Form1_Load ( object sender, System.EventArgs e )
{
   img = Image.FromFile ( “World.gif” ) ;
   hstart = new Point ( 0, ClientSize.Height / 2 ) ;
   hend = new Point ( ClientSize.Width,
   ClientSize.Height / 2 ) ;
   vstart = new Point ( ClientSize.Width / 2, 0 ) ;
   vend = new Point ( ClientSize.Width / 2,
   ClientSize.Height ) ;
}

Here, we have loaded the ‘world.gif’ file containing the map image. The Point objects are initialised with the proper values.

Add the Paint event handler wherein we draw the image on the form. We would also draw the lines using the Point objects initialised just now.

private void Form1_Paint ( object sender, PaintEventArgs e )
{
  Graphics g = e.Graphics ;
  g.DrawImage ( img, 0, 0, img.Width, img.Height ) ;
  Pen p = new Pen ( Brushes.Red ) ;
  g.DrawLine ( p, hstart, hend ) ;
  g.DrawLine ( p, vstart, vend ) ;
}

Run the program. You will see the output as shown in the figure above.

You must have noticed the grayed maximised box of the form. We have set the MaximizeBox property of the form to false so that the size of the

form won’t change. We have hidden the cursor by adding the following statement to the Load event handler

Cursor.Dispose( ) ;

The lines should move as the mouse moves. We have already written the code to draw new lines and erase previous ones in the Form1_MouseMove( ) handler. Update that code as shown below.

private void Form1_MouseMove ( object sender, MouseEventArgs e )
{
  Graphics g = CreateGraphics( ) ;
  hend.Y = hstart.Y = e.Y ;
  vend.X = vstart.X = e.X ;
  g.DrawImage ( img, 0, 0, img.Width, img.Height ) ;
  Pen p = new Pen ( Brushes.Red ) ;
  g.DrawLine ( p, hstart, hend ) ;
  g.DrawLine ( p, vstart, vend ) ;
}

Here, we have updated the coordinates stored in the Point objects according to the mouse position and drawn lines at new position.

We must keep checking the mouse position. If the mouse is placed over a city that is present in our city database, we must display the label carrying the day, time and city.

In our program the application data is the name of the city, its coordinates and the time at that place with respect to the Indian Standard Time.

To keep things simple we have stored this data in an array of objects. The objects are of type location. location is a user-defined class. We will first declare this class.

class location
{
   public int hours, minutes ;
   public string city ;
   public int x, y ;
   public location ( int h, int m, String c, int xx, int yy )
   {
     hours = h ;
     minutes = m ;
     city = c ;
     x = xx ;
     y = yy ;
   }
}

The location class contains data members to hold hours, minutes, city name and x-y coordinates of the city on the map. The data members are initialised through a constructor.

Populate the array in the Form1 class as shown below. This is only a part of the array.

location[ ] loc =
{
new location ( 0, 0, “NewDelhi”, 245, 90 ),
new location ( 0, 0, “Calcutta”, 254, 99 ),
new location ( 0, 0, “Mumbai”, 240, 107),
new location ( 0, 0, “Nagpur”, 245, 100),
new location ( 0, 0,”Chennai”, 245, 110),
new location ( -5, -30, “Lisbon”, 160, 79),
new location ( -4, -30, “Madrid”, 165, 74),
new location ( -3, -30, “Athens”, 192, 84),
new location ( -3, -30, “Cairo”, 202, 91),



} ;

(To be continued…)

<Back to top>


© Copyright 2003: Indian Express Group (Mumbai, India). All rights reserved throughout the world. This entire site is compiled in
Mumbai by The Business Publications Division of the Indian Express Group of Newspapers.
Please contact our Webmaster for any queries on this site.