2014-03-25 186 views
0

我有幾個圖像正在顯示,現在有一些圖像的寬度大於圖像的高度。根據圖像寬度和高度更改方向

說:image.GetWidth() > image.GetHeight();

display the image in landscape mode, else display the image in portrait mode.

我已搜查,找不到任何資源,這將幫助我在這種情況下。

任何幫助,將不勝感激。

請不要說我在WP8上。

EDIT

Grid grid = new Grid(); 
grid.VerticalAlignment = VerticalAlignment.Center; 
grid.HorizontalAlignment = HorizontalAlignment.Center; 
grid.Height = height; //set height 
grid.Width = width; //set width 
grid.Background = new SolidColorBrush(Colors.White); 
Image img = new Image(); 
img.VerticalAlignment = VerticalAlignment.Center; 
img.HorizontalAlignment = HorizontalAlignment.Center; 
img.Source = source; 
+0

你的問題是什麼?你想測試'image.Width> image.Height'嗎? – agarwaen

+0

@agarwaen是的,在它被呈現在屏幕上之前,然後根據該更改方向 – user2056563

+0

按此鏈接http://stackoverflow.com/questions/11372559/keep-same-layout-when-orientation-changes – Sajeetharan

回答

0

要獲得的寬度和圖像高度,

double height = image1.ActualHeight; 
double width = image1.ActualWidth; 
1

嘗試此,首先添加複合轉換到圖像

 <Image Name="image" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Uniform" RenderTransformOrigin="0.5,0.5"> 
      <Image.RenderTransform> 
       <CompositeTransform x:Name="compositeTransform"/> 
      </Image.RenderTransform> 
     </Image> 

然後檢查高度寬度(希望你有高度寬度)的圖像和設置複合tr根據高度寬度進行旋轉。根據您的要求使用-90度或+90度。

 image.Height = 300; 
     image.Width = 400; 
     if (image.Height > image.Width) 
     { 
      compositeTransform.Rotation = 0.0; 
     } 
     else 
     { 
      compositeTransform.Rotation = 90.00; 
     } 
     image.Source =(ImageSource) new ImageSourceConverter().ConvertFromString("2011-Chrysler-300-Model-09-1024x1280.jpg"); 

代碼背後,首先添加複合轉換,然後將其設置爲圖像

CompositeTransform transform = new CompositeTransform(); 
    transform.CenterX = 0.5; 
    transform.CenterY = 0.5; 
    image.RenderTransform = transform; 

然後檢查高度寬度(希望你有高度寬度)的圖像,並設置複合變換旋轉爲每高度的寬度。根據您的要求使用-90度或+90度。

 image.Height = 300; 
     image.Width = 400; 
     if (image.Height > image.Width) 
     { 
      transform.Rotation = 0.0; 
     } 
     else 
     { 
      transform.Rotation = 90.00; 
     } 
     image.Source =(ImageSource) new ImageSourceConverter().ConvertFromString("2011-Chrysler-300-Model-09-1024x1280.jpg"); 
+0

請看我的編輯,幫我按照我的要求修改 – user2056563

+0

好的。你想用後面的代碼來做。 – aniketpatil

+0

試試這個,加入 CompositeTransform transform = new CompositeTransform(); transform.CenterX = 0.5; transform.CenterY = 0.5; image.RenderTransform = transform;現在只需在if-else語句中替換轉換。完成!! – aniketpatil