1

My code can make DropShadow for TextBlock but cannot create it for image if I create image from screen shot. Using normal image (Image source has been set already) problem do not occur.

I believe that problem must be in image format (somehow) I get from screen shot. Any way to convert SoftwareBitmap to other format or what to do?

(To test with TextBlock just replace Image with TextBlock in the first snippet)

Code to copy any element on the screen to image

    public static async Task<Image> GetScreenShotFromElement(FrameworkElement TargetFrameworkElement)
    {
        Image RenderedImage = new Image();
        RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
        await renderTargetBitmap.RenderAsync(TargetFrameworkElement);
        RenderedImage.Source = renderTargetBitmap;
        return RenderedImage;
    }

Code to make drop shadow

public static void CreateDropShadowForImage(Image SOURCE,Grid SHADOWHERE)
{
    Visual SOURCE_Visual = ElementCompositionPreview.GetElementVisual(SOURCE);
    Compositor SOURCE_compositor = SOURCE_Visual.Compositor;
    DropShadow DROP_SHADOW = SOURCE_compositor.CreateDropShadow();
    DROP_SHADOW.Mask = SOURCE.GetAlphaMask();
    DROP_SHADOW.Offset = new Vector3(10, 10, 0);

    SpriteVisual SPRITE_VISUAL = SOURCE_compositor.CreateSpriteVisual();
    SPRITE_VISUAL.Size = SOURCE.RenderSize.ToVector2();
    SPRITE_VISUAL.Shadow = DROP_SHADOW;

    ElementCompositionPreview.SetElementChildVisual(SHADOWHERE, SPRITE_VISUAL);

    // Make sure size of shadow host and shadow visual always stay in sync
    var bindSizeAnimation = SOURCE_compositor.CreateExpressionAnimation("hostVisual.Size");
    bindSizeAnimation.SetReferenceParameter("hostVisual", SOURCE_Visual);
    SPRITE_VISUAL.StartAnimation("Size", bindSizeAnimation);

}
Weissu
  • 409
  • 3
  • 15
  • It won't work. The image needs to be a png. – Jessica Sep 05 '17 at 00:24
  • Is there any good example how to convert the imaqe format to Png? Any example I have found converts format to other use FileStream. There is not any point to save image to media and load it again back to app. – Weissu Sep 11 '17 at 10:18

0 Answers0