学过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.html和http://www.netskycn.com/taiji.html查看我编写的两个用C#编写的网页小应用程序的运行效果。

转载于:https://www.cnblogs.com/zhoufoxcn/archive/2008/08/01/2515702.html

用C#编写网页小应用程序(Applet)相关推荐

  1. html5编写网页代码_freeCodeCamp.org的未来-从向世界传授语言到编写代码的5年经验...

    html5编写网页代码 freeCodeCamp went live in October 2014. In the five years since, we've done quite a bit. ...

  2. node.js编写网页_为Node.js编写可扩展架构

    node.js编写网页 by Zafar Saleem 通过Zafar Saleem 为Node.js编写可扩展架构 (Writing Scalable Architecture For Nodejs ...

  3. FLex 编写网页MP3播放器

    FLex 编写网页MP3播放器 随着互联网的快速发展,HTML5显得越来越强势,个人认为,在短时间内Flex还是具有先天独厚的优势,就比如写个网页播放器,几行代码就可以搞定.现在给大家分享一下源码,可 ...

  4. 编写网页项目的基本步骤——Html

    编写网页项目的基本步骤--Html 开工前准备工作 创建一个文件夹,命名为项目名字,然后在文件夹里再创建一个首页文件:index.html,一个装css的文件夹:css:文件夹内再创建两个文件一个装首 ...

  5. 使用Python编写网页时,我们经常需要操纵HTML标签和属性。Python的Dominate库可以帮助我们以Python对象的形式生成HTML,有效简化了代码...

    使用Python编写网页时,我们经常需要操纵HTML标签和属性.Python的Dominate库可以帮助我们以Python对象的形式生成HTML,有效简化了代码的编写过程. 安装 Dominate库可 ...

  6. 如何用 Python 编写网页病毒

    如何用 Python 编写网页病毒,慎用噢 原创作者:Shane_hcker https://blog.csdn.net/Shane_hcker/article/details/112004870 本 ...

  7. 用JavaScript编写网页计算器

    编写网页计算器,首先用两个text文本框接收输入的两个值,然后通过触发按钮的单击事件,即触发calc()函数,传递实参(add.sub.mul或者div),实现相应的加减乘除运算,最后将结果显示在结果 ...

  8. ngx_lua_module-1.0.5.0 (LUA编写网页脚本,支持windows和linux)

    为什么80%的码农都做不了架构师?>>>    注:最新版本在以下博客发布: http://blog.csdn.net/ngwsx/ ngx_lua_module是一个nginx h ...

  9. 如何利用C#编写网页投票器程序 如何使用代理来投票 代理IP来投票

    一.前言 看个图,了解下投票的过程. 提交投票信息 投票页 ――――――――>投票信息处理页 反馈投票结果 (请求页)<―――――――(响应页) 一般情况下,填写投票信息,然后点提交按钮发 ...

最新文章

  1. Docker最全教程——从理论到实战(六)
  2. ES的深度分页解决方案
  3. pdf.js 使用实例
  4. 47.2. 配置 Tomcat 服务器
  5. NIO详解(十一):线程间通信管道Pipe
  6. 晚安科大20211130
  7. 微信小程序 body属性的问题
  8. 设计模式之Factory
  9. oracle数据库dca,有关Oracle数据库
  10. 从疫情中看智慧医疗场景新应用,智慧医疗纵深发展还有哪些可能性?
  11. 1104File Space Bitmap Block损坏能修复吗
  12. bzoj 2655: calc [容斥原理 伯努利数]
  13. Product of Array Except Self
  14. networkxpdf_1 NetworkX概述
  15. GB28181协议RTP传输
  16. LinuxC网络编程
  17. 微信插件制作之抢红包入门篇
  18. 阿里云如何选择带宽计费模式和带宽值
  19. 化学共价键:π键和σ键
  20. 利用ptython中的tutle画了一个表情包——2020冲冲冲!!

热门文章

  1. 《剑指offer》二叉树的下一个节点
  2. autopep8规范你的python代码
  3. 孩子,你今天有没有提出一个好的问题?
  4. python扫盲系列-(2)
  5. 【solr专题之四】在Tomcat 中部署Solr4.x
  6. GAN之父NIPS 2016演讲现场直击:全方位解读生成对抗网络的原理及未来(附PPT)
  7. Learning to rank的讲解,单文档方法(Pointwise),文档对方法(Pairwise),文档列表方法(Listwise)
  8. 直播系统开发如何才可以抓住用户眼球
  9. HTTP深入浅出个人总结
  10. J2EE 第二阶段项目之编写代码(六)