图片的大小如何根据容器的大小进行比例缩放

在Asp.Net中显示图片的时候,如果给定一个固定大小的容器,如<Table>,图片的大小如何根据容器的大小进行比例缩放呢。以下是一个比较简单的函数,根据图片的宽高比例进行计算,缩放后保持比例不变。(转自 faib
None.gif          // ViewSize 外框大小
None.gif        
// ImageSize 图片的实际大小
None.gif
         public  Size Resize(Size ViewSize, Size ImageSize)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            Size MySize 
= new Size();
InBlock.gif            
if(ViewSize.Width > ViewSize.Height)//宽大于高
ExpandedSubBlockStart.gifContractedSubBlock.gif
            dot.gif{
InBlock.gif                
if(ImageSize.Width > ImageSize.Height)//按比例
ExpandedSubBlockStart.gifContractedSubBlock.gif
                dot.gif{
InBlock.gif                    
float scale = ImageSize.Height / (float)ImageSize.Width;
InBlock.gif                    
if(ViewSize.Height / (float)ViewSize.Width < scale)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        MySize.Height 
= ViewSize.Height;
InBlock.gif                        MySize.Width 
= (int)(ViewSize.Height / scale);
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    
else
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        MySize.Width 
= ViewSize.Width;
InBlock.gif                        MySize.Height 
= (int)(ViewSize.Width * scale);
ExpandedSubBlockEnd.gif                    }

ExpandedSubBlockEnd.gif                }

InBlock.gif                
else if(ImageSize.Height > ImageSize.Width)//非比例
ExpandedSubBlockStart.gifContractedSubBlock.gif
                dot.gif{
InBlock.gif                    
float scale = ImageSize.Width / (float)ImageSize.Height;
InBlock.gif                    MySize.Height 
= ViewSize.Height;
InBlock.gif                    MySize.Width 
= (int)(ViewSize.Height * scale);
ExpandedSubBlockEnd.gif                }

InBlock.gif                
else//正方
ExpandedSubBlockStart.gifContractedSubBlock.gif
                dot.gif{
InBlock.gif                    MySize.Height 
= ViewSize.Height;
InBlock.gif                    MySize.Width 
= ViewSize.Height;
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

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

InBlock.gif                    
else
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        MySize.Height 
= ViewSize.Height;
InBlock.gif                        MySize.Width 
= (int)(ViewSize.Height * scale);
ExpandedSubBlockEnd.gif                    }

ExpandedSubBlockEnd.gif                }

InBlock.gif                
else if(ImageSize.Height < ImageSize.Width)//非比例
ExpandedSubBlockStart.gifContractedSubBlock.gif
                dot.gif{
InBlock.gif                    
float scale = ImageSize.Height / (float)ImageSize.Width;
InBlock.gif                    MySize.Width 
= ViewSize.Width;
InBlock.gif                    MySize.Height 
= (int)(ViewSize.Width * scale);
ExpandedSubBlockEnd.gif                }

InBlock.gif                
else//正方
ExpandedSubBlockStart.gifContractedSubBlock.gif
                dot.gif{
InBlock.gif                    MySize.Height 
= ViewSize.Width;
InBlock.gif                    MySize.Width 
= ViewSize.Width;
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

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

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

InBlock.gif                
else//正方
ExpandedSubBlockStart.gifContractedSubBlock.gif
                dot.gif{
InBlock.gif                    MySize.Height 
= ViewSize.Height;
InBlock.gif                    MySize.Width 
= ViewSize.Height;
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

InBlock.gif            
return MySize;
ExpandedBlockEnd.gif        }

转载于:https://www.cnblogs.com/GavinCome/archive/2007/08/02/840140.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值