學過Java的朋友可能都聽說過Java的歷史:當初Java是為機頂盒設備和手持設備設計的,可惜理念在當時太朝前,結果沒有被人所接受,於是Java的創始人James Gosling想到在網絡上碰碰運氣,當時吸引大家眼球的就是用Java編寫的一個Applet,早期Java的應用很多時用來編寫Applet,後來慢慢發展到J2ME/J2SE/J2EE三個分支。
現在RIA(Rich Internet Application,富互聯網應用系統)方面已經是Flash和sliverlight的天下了,所以微軟推出C#的時候沒有對類似Applet這樣的網頁小應用程序的支持,不過利用.net我們還是可以做出一些類似於Applet的網頁小應用程序來。當然,就像Java編寫的Applet需要客戶端安裝相應的JRE一樣,我們用C#編寫的小網頁應用程序也需要客戶端安裝相應版本的.Net framework,否則網頁中小程序是沒有辦法正常運行的。
說明:寫這個程序只為娛樂,好像沒有太多實際用途,下面的效果其實用Flash或者sliverlight很將簡單就實現了。
且看一個在網頁上不停跳動的小球的代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace BallGame
{
/// <summary>
/// 程序說明:這是一個彈球的程序代碼。程序的運行效果是
/// 一個藍色的小球在控件顯示區域運動,當小球超出屏幕顯示區域
/// 後,會自動反彈。
/// 作者:周公
/// 日期:2008-08-01
/// 首發地址:http://blog.csdn.Net/zhoufoxcn/archive/2008/08/01/2755502.ASPx
/// </summary>
public class BallControl : Control
{
private Rectangle ballRegion = new Rectangle(0, 0, 50, 50);//在顯示區域的球的尺寸
private Thread thread;//繪制線程
private Image image;//即將要在顯示區域繪制的圖象
private int speedX = 4;//球的水平移動速度
private int speedY = 6;//球的垂直移動速度
public BallControl()
{
ClIEntSize = new Size(200, 300);
BackColor = Color.Gray;
thread = new Thread(new ThreadStart(Run));
thread.Start();
}
protected override void OnPaint(PaintEventArgs e)
{
if (image != null)
{
e.Graphics.DrawImage(image, 0, 0);
}
}
/// <summary>
/// 繪制球在顯示區域移動的線程
/// </summary>
public void Run()
{
while (true)
{
image = new Bitmap(ClientSize.Width, ClIEntSize.Height);
Graphics g = Graphics.FromImage(image);
g.FillEllipse(Brushes.Blue, ballRegion);
g.Dispose();
if ((ballRegion.X < 0) || (ballRegion.X + ballRegion.Width >= ClIEntSize.Width))
{
speedX = -speedX;
}
if ((ballRegion.Y < 0) || (ballRegion.Y + ballRegion.Height >= ClIEntSize.Height))
{
speedY = -speedY;
}
ballRegion.X += speedX;
ballRegion.Y += speedY;
Invalidate();//重新繪制
Thread.Sleep(300);
}
}
}
}