程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#生成縮略圖控件(1)

C#生成縮略圖控件(1)

編輯:關於C語言
現原理:

1、我們現在要做的是自定義Web控件,這和平常設計ASPx網頁或者用戶控件有本質區別,自定義控件 是一個派生自System.Web.WebControls.WebControl的類,它是一個類,而不是你想象中的HTML代碼,甚 至在自定義控件中你完全找不到HTMl的任何風格。因此,你必須對類的編寫設計非常數量,或者是,跳出 設計Html的圈子,拓展思維!

2、我們要實現不依靠文件系統、不依靠額外的任何其他東西,僅僅依靠一個類來實現它,這樣做好處 自然明顯——各位只要復制得下面的一堆代碼,自己建一個cs文件放進去就可以編譯(編譯為dll)。所 有功能都是自含的,除了位於公共位置的.Net類庫,其他任何dll我都不需要引用。

然而,要實現如第2條這樣的效果,我們得把對縮略圖的請求設計成為對包含控件網頁本身的請求,因 為針對縮略圖的這一次請求,本質仍然對本網頁的請求,這樣,網頁中包含的縮略圖控件才有機會操縱流 。當然,兩次請求都針對同一張網頁的話,我們要設法區分開,哪一次是真正請求網頁的原內容,哪一次 是針對請求一個縮略圖。

不知上述這段話大家能否理解,

如果不這樣做的話,我們就不得不需要額外的控件或網頁來實行了。

看懂了上述原理,我現在把流程寫在下面,就自然好理解了:

1、客戶請求一張網頁,如index.ASPx,網頁中含有縮略圖控件,

2、Index.ASPx編譯執行為Html後被發送到客戶端浏覽器。這個控件生成了一個img標記,src屬性指向 一張該網頁本身,但是後面附帶的參數改變了。浏覽器解析了,知道要向src屬性獲得一張圖片。它開始 向這個位置請求(也就是重新以新的附帶參數請求這個網頁)。

3、ASP.Net獲得了這個請求,index.aspx這個頁面又開始執行,因為index.ASPx中包含這個縮略圖控 件,控件就有機會識別這段特殊的參數,並且重新改寫響應流,它會在文件系統中獲得原始圖像,然後根 據你的要求,使用GDI.Net將原圖重新按照新尺寸繪制,得到的新圖是一個流對象,我們不存儲它,而是 將它直接附著在響應流中,發送給客戶端。

4、客戶端浏覽器得到這張圖片。網頁加載完成。

好,原理是說了不少,雖然我盡量寫得通俗,但難免大家一時半會兒可能不好理解。那我現在就把代 碼貼出來讓大家參考。

這個縮略圖控件還沒有添加水印等類似版權保護的功能,各位有興趣的高手不妨完善一下這部分內容 。同時與各位朋友相互學習,加強思考,增進思維。我們不管ASP.NET孰優孰劣,對於個人來說,既然追 隨ASP.NET,就要把ASP.Net用好,隨波逐流的程序員永遠不會優秀。

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