在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>