在Asp.Net裡將圖片旋轉的方式大概有4種(個人意見)。
1、通過css的濾鏡效果
FlipV,FlipH 可以通過google找出很多,但是這種方式只能是選擇固定的角度 90,180,270
2、通過javascript
找了很久沒有找到好的js code,這個 http://www.walterzorn.com/rotate_img/rotate_img.htm 效果還算不錯,
但是圖片稍微大點就會有失真的感覺,而且會造成頁面運行緩慢。所以小圖片還可以接受(QQ的表情icon那麼大)
可以旋轉任意角度。
3、通過vml旋轉圖片
這個方式是比較好的方式,關於vml的資料google下很多,這裡利用的是vml裡的Rotation,效果很好,即便是大圖片
也不會失真,可以是任意角度,而且不需要寫codebind。
4、通過GDI+旋轉圖片
這個方式也不錯,在對vml不熟悉的話,GDI+也是很好的選擇。GDI+是.Net Fromework 內建的類庫裡。這種的好處
是利用大家的都熟悉的codebind進行編碼旋轉圖片並輸出到Response,然後將Image的src 指向這個寫好功能url地址。
這種方式也可以是任意角度。
我採用的是第3中方式,下面附第3中方式的簡單實現(摘自高人手筆)
<html xmlns:v="urn:chemas-microsoft-com:vml" xmlns ="urn:chemas-microsoft-com ffice ffice">
<head>
<title>Untitled Page</title>
<style type="text/css">v/: * { behavior:url(#default#VML); display:inline-block }</style>
</head>
<body style="background-color:#000000">
<script type="text/javascript" language="javascript">
//本函數為所有使用旋轉功能的物件更新視圖
function window.onload()
{
try{
for(i=0;i<xuanzhuan.length;i++)
xuanzhuan[i].Rotation=xuanzhuan[i].xuanzhuanstr;
xuanzhuan.Rotation=xuanzhuan.xuanzhuanstr
}
catch(e)
{}
}
</script>
<table>
<tr>
<td>
<div>
<v:Image id=xuanzhuan style="Z-INDEX: 1001; LEFT: 290px; WIDTH: 157px; POSITION: absolute; TOP: 123px; HEIGHT: 105px" xuanzhuanstr="100" src = "C:/Documents and Settings/paulhuang/My Documents/My Pictures/1.jpg" coordsize = "21600,21600"></v:Image>
</div>
</td>
<td>
<div>
<v:Image id=xuanzhuan style="Z-INDEX: 1001; LEFT: 435px; WIDTH: 157px; POSITION: absolute; TOP: 244px; HEIGHT: 105px" xuanzhuanstr="300" src = "C:/Documents and Settings/paulhuang/My Documents/My Pictures/2.jpg" coordsize = "21600,21600"></v:Image>
</div>
</td>
</tr>
</table>
</body>
</html>