程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 用C#編寫網頁小應用程序(Applet)

用C#編寫網頁小應用程序(Applet)

編輯:關於C#

學過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);
      }
    }
  }
}

將其編譯成dll文件,用如下命令(注意用.net framework的命令行,否則需要設置環境變量):

csc /t:library /out:BallGame.dll BallGame.cs

這樣得到BallGame.dll 文件,再建立一個html文件,代碼如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>C#編寫Applet之彈球</title>
</head>
<body>
<object id="t" classid="BallGame.dll#BallGame.BallControl"height="200" width="300" VIEWASTEXT>
</object>
</body>
</html>

下面是程序的運行效果:

用C#編寫網頁小應用程序要注意的幾點:

1、編寫的類應該繼承自Control類;

2、應該程序代碼編譯成dll類庫;

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#編寫的網頁小應用程序的運行效果。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved