0

私のアプリには、フルサイズのフレームと小さいサイズの内側の画像があります。内側のものをフレームの内側と上部に配置したい. だからこれは私がやったことです:

var resourceStream = Application.GetResourceStream(new Uri("Assets/Frame.png", UriKind.Relative));
var frame = new BitmapImage();
frame.SetSource(resourceStream.Stream);

WriteableBitmap finalImage = new WriteableBitmap(frame);

using (MemoryStream memoryStream = new MemoryStream())
{
    BitmapImage innerImage = new BitmapImage(new Uri(string.Format("Assets/Pages/{0}.png", page), UriKind.Relative));
    Image image = new Image();
    image.Height = innerImage.PixelHeight;
    image.Width = innerImage.PixelWidth;
    image.Source = innerImage;

    TranslateTransform translateTransform = new TranslateTransform();
    translateTransform.X = 52;
    translateTransform.Y = 60;

    finalImage.Render(image, translateTransform);
    finalImage.Invalidate();

    finalImage.SaveJpeg(memoryStream, frame.PixelWidth, frame.PixelHeight, 0, 100);
    memoryStream.Seek(0, System.IO.SeekOrigin.Begin);

    PagePicture.Source = finalImage;
}

しかし、私は内側の画像のないフレームしか見ていません..おそらくフレームの後ろにあると思います. どうすればこれを解決できますか?

それとも、マージせずに 2 つのコントロールを重ねることができますか? 私が試してみましょう

4

1 に答える 1

1

このリンクがあなたを導くことを願っています。こちら をご覧ください。詳細については、MSDN SAmpleを参照してください。どちらも同じですが、ここで説明を得ることができます。

今すぐこれを試してください

    using (MemoryStream mem = new MemoryStream())
        {
            //Inner Image
            BitmapImage innerImage = new BitmapImage();
            innerImage.SetSource(System.Windows.Application.GetResourceStream(new Uri("test.jpg", UriKind.Relative)).Stream);
            WriteableBitmap wb = new WriteableBitmap(innerImage);

            //Frame Images
            BitmapImage finalImage = new BitmapImage();
            finalImage.SetSource(System.Windows.Application.GetResourceStream(new Uri("White.jpg", UriKind.Relative)).Stream);
            WriteableBitmap wbFinal = new WriteableBitmap(finalImage);

            Image image = new Image();
            image.Height = innerImage.PixelHeight;
            image.Width = innerImage.PixelWidth;
            image.Source = innerImage;

            // TranslateTransform                      
            TranslateTransform tf = new TranslateTransform();
            tf.X = 52;
            tf.Y = 60;
            wbFinal.Render(image, tf);

            wbFinal.Invalidate();
            wbFinal.SaveJpeg(mem, wb.PixelWidth, wb.PixelHeight, 0, 100);
            mem.Seek(0, System.IO.SeekOrigin.Begin);

            // Show image.               
            PagePicture.Source = wbFinal;
        }
于 2013-06-28T04:35:12.320 に答える