2017-11-29 29 views
0

次のコードを使用して、画像ファイルを96 DPIに変換し、背景として使用します。画面は一つの画像の中に画像を乗算し、ファイルより大きい場合MemoryStreamからの画像ソースの乗算

BitmapSource bitmapSource = ConvertBitmapTo96Dpi(CompleteBackgroundImage); 
JpegBitmapEncoder encoder = new JpegBitmapEncoder(); 
MemoryStream memoryStream = new MemoryStream(); 

encoder.Frames.Add(BitmapFrame.Create(bitmapSource)); 
encoder.Save(memoryStream); 

memoryStream.Position = 0; 

CompleteBackgroundImage = new BitmapImage(); 
CompleteBackgroundImage.BeginInit(); 
CompleteBackgroundImage.StreamSource = memoryStream; 
CompleteBackgroundImage.CacheOption = BitmapCacheOption.OnLoad; 
CompleteBackgroundImage.DecodePixelHeight = (int)Math.Round(finalHeight, MidpointRounding.AwayFromZero); 
CompleteBackgroundImage.DecodePixelWidth = (int)Math.Round(finalWidth, MidpointRounding.AwayFromZero); 
CompleteBackgroundImage.EndInit(); 

memoryStream.Close(); 

は、今私は、したいので、私は、バックグラウンドとして使用することができます。 私の画面が1920 x 1080で、画像が500 x 500の場合、その画像は2000 x 1500と大きくなり、元の画像は左から右に4回、上から下に3回表示する必要があります。

しかし、どうすればよいですか?

答えて

1

TILEMODEとImageBrushを使用することを検討しては、タイルに設定:

<Window.Background> 
    <ImageBrush TileMode="Tile" ViewportUnits="Absolute" Viewport="0,0,512,384"> 
     <ImageBrush.ImageSource> 
      <BitmapImage UriSource="C:\Users\Public\Pictures\Sample Pictures\Koala.jpg"/> 
     </ImageBrush.ImageSource> 
    </ImageBrush> 
</Window.Background> 

か短い:

<Window.Background> 
    <ImageBrush TileMode="Tile" ViewportUnits="Absolute" Viewport="0,0,512,384" 
       ImageSource="C:\Users\Public\Pictures\Sample Pictures\Koala.jpg"/> 
</Window.Background> 
関連する問題