Resizing images in Silverlight using WriteableBitmap

代码
//  create image source
Stream stream  =  file.OpenRead();
BitmapImage bmpImg 
=   new  BitmapImage();
bmpImg.SetSource(stream);
stream.Close();

//  create temporary image from it
Image tmpImg  =   new  Image();
tmpImg.Source 
=  bmpImg;

//  this is required by WriteableBitmap 
tmpImg.Measure( new  Size( 100 100 ));
tmpImg.Arrange(
new  Rect( 0 0 100 100 ));

//  prepare scaling to 100x100
ScaleTransform scaleTrans  =   new  ScaleTransform();
double  scale  =  ( double ) 100   /  ( double )Math.Max(bmpImg.PixelHeight, bmpImg.PixelWidth);
scaleTrans.CenterX 
=   0 ;
scaleTrans.CenterY 
=   0 ;
scaleTrans.ScaleX 
=  scale;
scaleTrans.ScaleY 
=  scale;

//  render
WriteableBitmap writeableBitmap  =   new  WriteableBitmap( 100 100 );
writeableBitmap.Render(tmpImg, scaleTrans);
writeableBitmap.Invalidate();

//  final image
Image img  =   new  Image();
img.Source 
=  writeableBitmap;

 

你可能感兴趣的:(silverlight)