예제 #1
0
        private async void Clipboard_Tapped(object sender, TappedRoutedEventArgs e)
        {
            FlashStoryboard.Begin();

            RenderTargetBitmap renderBitmap = new RenderTargetBitmap();
            uint width  = (uint)Carousel.ActualWidth + 1;
            uint height = (uint)Carousel.ActualHeight;

            Carousel.Measure(new Size(width, height));
            //Carousel.Arrange(new Rect(0, 0, width, height));

            await renderBitmap.RenderAsync(Carousel, (int)width, (int)height);

            var pixels = await renderBitmap.GetPixelsAsync();

            InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream()
            {
                Size = width * height * 4
            };
            BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.BmpEncoderId, stream);

            encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, (uint)renderBitmap.PixelWidth, (uint)renderBitmap.PixelHeight, 96d, 96d, pixels.ToArray());
            await encoder.FlushAsync();

            stream.Seek(0);

            var dataPackage = new DataPackage();

            dataPackage.SetBitmap(RandomAccessStreamReference.CreateFromStream(stream));

            Clipboard.SetContent(dataPackage);
        }