我在自定義FrameworkElement的OnRender方法中繪製圖像。我也想畫出這張照片的影子。我需要在代碼中這樣做,並且我不想使用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 2012-03-26 07:32:26
@GazTheDestroyer位圖可以是透明的,因此每個位圖的矩形陰影將不起作用。但是,現在我無法弄清楚如何繪製矩形陰影! – AmaltasCoder 2012-03-26 07:40:52