Я рисую изображение в методе OnRender моего пользовательского элемента FrameworkElement. Я хотел бы также нарисовать тень этого изображения. Мне нужно сделать это в коде, и я бы не хотел использовать DropShadowBitmapEffect, потому что он устарел. Как я могу это достичь?Нарисуйте тень на изображении при рисовании DrawingContext
public class MyDrawingView : FrameworkElement
{
protected override void OnRender(System.Windows.Media.DrawingContext dc)
{
drawImagesOnDrawingContext(dc);
}
public RenderTargetBitmap getBitmap()
{
DrawingVisual dv = new DrawingVisual();
using (DrawingContext dcMine = dv.RenderOpen())
{
drawImagesOnDrawingContext(dcMine);
dcMine.Close();
}
RenderTargetBitmap rtb = new RenderTargetBitmap(200, 200, 96, 96, PixelFormats.Pbgra32);
rtb.Render(dv);
return rtb;
}
private void drawImagesOnDrawingContext(System.Windows.Media.DrawingContext dc)
{
//how to draw shadow on bi?
BitmapImage bi = new BitmapImage(new Uri(@"D:\mytemp\img1.jpg"));
dc.DrawImage(bi, new Rect(50, 50, 100, 100));
//how to draw shadow on bi1
BitmapImage bi1 = new BitmapImage(new Uri(@"D:\mytemp\img2.jpg"));
dc.DrawImage(bi1, new Rect(30, 30, 100, 100));
}
}
Следует отметить, что решение, предложенное на SvenG ниже, чтобы добавить эффект к базовому элементу, не работает для меня, потому что она дает тень на весь элемент, а не отдельные изображения рисую. Например, если бы у меня было два дублирующих DrawImage, предлагаемое решение будет отображать тень, учитывая целое. Тень верхнего изображения не будет нарисована на нижнем изображении.
Кроме того, я хочу создать растровое изображение, используя функцию getBitmap, как показано выше, для экспорта рисованного изображения с тенями.
Являются ли растровые изображения прозрачными? т.е. хотите ли вы затенять отдельные пиксели растрового изображения или просто прямоугольную тень для каждого растрового изображения? – GazTheDestroyer
@GazTheDestroyer Растровые изображения могут быть прозрачными, поэтому прямоугольная тень для каждого растрового изображения не будет работать. Но сейчас я не могу понять, как рисовать прямоугольную тень! – AmaltasCoder