用C#编写网页小应用程序(Applet)

学过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很将简单就实现了。

 

且看一个在网页上不停跳动的小球的代码:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Drawing.Drawing2D;
  7. using System.Drawing.Imaging;
  8. using System.Text;
  9. using System.Windows.Forms;
  10. using System.Threading;
  11. namespace BallGame
  12. {
  13.     /// <summary>
  14.     /// 程序说明:这是一个弹球的程序代码。程序的运行效果是
  15.     /// 一个蓝色的小球在控件显示区域运动,当小球超出屏幕显示区域
  16.     /// 后,会自动反弹。
  17.     /// 作者:周公
  18.     /// 日期:2008-08-01
  19.     /// 首发地址:http://blog.csdn.net/zhoufoxcn/archive/2008/08/01/2755502.aspx
  20.     /// </summary>
  21.     public class BallControl : Control
  22.      {
  23.         private Rectangle ballRegion = new Rectangle(0, 0, 50, 50);//在显示区域的球的尺寸
  24.         private Thread thread;//绘制线程
  25.         private Image image;//即将要在显示区域绘制的图象
  26.         private int speedX = 4;//球的水平移动速度
  27.         private int speedY = 6;//球的垂直移动速度
  28.         public BallControl()
  29.          {
  30.              ClientSize = new Size(200, 300);
  31.              BackColor = Color.Gray;
  32.              thread = new Thread(new ThreadStart(Run));
  33.              thread.Start();
  34.          }
  35.         protected override void OnPaint(PaintEventArgs e)
  36.          {
  37.             if (image != null)
  38.              {
  39.                  e.Graphics.DrawImage(image, 0, 0);
  40.              }
  41.          }
  42.         /// <summary>
  43.         /// 绘制球在显示区域移动的线程
  44.         /// </summary>
  45.         public void Run()
  46.          {
  47.             while (true)
  48.              {
  49.                  image = new Bitmap(ClientSize.Width, ClientSize.Height);
  50.                  Graphics g = Graphics.FromImage(image);
  51.                  g.FillEllipse(Brushes.Blue, ballRegion);
  52.                  g.Dispose();
  53.                 if ((ballRegion.X < 0) || (ballRegion.X + ballRegion.Width >= ClientSize.Width))
  54.                  {
  55.                      speedX = -speedX;
  56.                  }
  57.                 if ((ballRegion.Y < 0) || (ballRegion.Y + ballRegion.Height >= ClientSize.Height))
  58.                  {
  59.                      speedY = -speedY;
  60.                  }
  61.                  ballRegion.X += speedX;
  62.                  ballRegion.Y += speedY;
  63.                  Invalidate();//重新绘制
  64.                  Thread.Sleep(300);
  65.              }
  66.          }
  67.      }
  68. }
  69. 将其编译成dll文件,用如下命令(注意用.net framework的命令行,否则需要设置环境变量):
  70. csc /t:library /out:BallGame.dll BallGame.cs
  71. 这样得到BallGame.dll 文件,再建立一个html文件,代码如下:
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml">
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    5. <title>C#编写Applet之弹球</title>
    6. </head>
    7. <body>
    8. <object id="t" classid="BallGame.dll#BallGame.BallControl"height="200" width="300" VIEWASTEXT>
    9. </object>
    10. </body>
    11. </html>
  72. 下面是程序的运行效果:
  73. 用C#编写网页小应用程序要注意的几点:
  74. 1、编写的类应该继承自Control类;
  75. 2、应该程序代码编译成dll类库;
  76. 3、在网页中通过<object></object>的形式嵌入,classId采用classid="dll的url地址#命名空间.类名"的形式。如示例中classid="BallGame.dll#BallGame.BallControl"中BallGame.dll是放在网页同一目录下,BallControl类处在BallGame命名空间下。需要注意的是,好像没有什么办法来在程序中获取网页上设置的显示尺寸,所以要保证网页中设置的宽度和空间的尺寸一直。

有兴趣的朋友可以到:http://www.netskycn.com/ballgame.htmlhttp://www.netskycn.com/taiji.html查看我编写的两个用C#编写的网页小应用程序的运行效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值