posts - 50, comments - 140, trackbacks - 8, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

Asp.Net中图片大小的缩放

Posted on 2007-05-21 14:37 faib 阅读(719) 评论(0)  编辑 收藏 网摘 所属分类: C#Asp.Net
在Asp.Net中显示图片的时候,如果给定一个固定大小的容器,如<Table>,图片的大小如何根据容器的大小进行比例缩放呢。以下是一个比较简单的函数,根据图片的宽高比例进行计算,缩放后保持比例不变。
        //ViewSize 外框大小
        
//ImageSize 图片的实际大小
        public Size Resize(Size ViewSize, Size ImageSize)
        
{
            Size MySize 
= new Size();
            
if(ViewSize.Width > ViewSize.Height)//宽大于高
            {
                
if(ImageSize.Width > ImageSize.Height)//按比例
                {
                    
float scale = ImageSize.Height / (float)ImageSize.Width;
                    
if(ViewSize.Height / (float)ViewSize.Width < scale)
                    
{
                        MySize.Height 
= ViewSize.Height;
                        MySize.Width 
= (int)(ViewSize.Height / scale);
                    }

                    
else
                    
{
                        MySize.Width 
= ViewSize.Width;
                        MySize.Height 
= (int)(ViewSize.Width * scale);
                    }

                }

                
else if(ImageSize.Height > ImageSize.Width)//非比例
                {
                    
float scale = ImageSize.Width / (float)ImageSize.Height;
                    MySize.Height 
= ViewSize.Height;
                    MySize.Width 
= (int)(ViewSize.Height * scale);
                }

                
else//正方
                {
                    MySize.Height 
= ViewSize.Height;
                    MySize.Width 
= ViewSize.Height;
                }

            }

            
else if(ViewSize.Width < ViewSize.Height)//高大于宽
            {
                
if(ImageSize.Width < ImageSize.Height)//按比例
                {
                    
float scale = ImageSize.Width / (float)ImageSize.Height;
                    
if(ViewSize.Width / (float)ViewSize.Height < scale)
                    
{
                        MySize.Width 
= ViewSize.Width;
                        MySize.Height 
= (int)(ViewSize.Width / scale);
                    }

                    
else
                    
{
                        MySize.Height 
= ViewSize.Height;
                        MySize.Width 
= (int)(ViewSize.Height * scale);
                    }

                }

                
else if(ImageSize.Height < ImageSize.Width)//非比例
                {
                    
float scale = ImageSize.Height / (float)ImageSize.Width;
                    MySize.Width 
= ViewSize.Width;
                    MySize.Height 
= (int)(ViewSize.Width * scale);
                }

                
else//正方
                {
                    MySize.Height 
= ViewSize.Width;
                    MySize.Width 
= ViewSize.Width;
                }

            }

            
else//正方
            {
                
if(ImageSize.Width > ImageSize.Height)//宽大于高
                {
                    
float scale = ImageSize.Height / (float)ImageSize.Width;
                    MySize.Width 
= ViewSize.Width;
                    MySize.Height 
= (int)(ViewSize.Width * scale);
                }

                
else if(ImageSize.Width < ImageSize.Height)//高大于宽
                {
                    
float scale = ImageSize.Width / (float)ImageSize.Height;
                    MySize.Height 
= ViewSize.Height;
                    MySize.Width 
= (int)(ViewSize.Height * scale);
                }

                
else//正方
                {
                    MySize.Height 
= ViewSize.Height;
                    MySize.Width 
= ViewSize.Height;
                }

            }

            
return MySize;
        }

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-05-23 13:18 编辑过
Google站内搜索

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》



相关文章:

相关链接: