我正在尝试执行以下操作(在 WPF 中):
- 加载图像(具有足够大的透明背景以包含投影的 .png 文件)。
- 应用投影效果。
- 将修改后的位图另存为新文件。
这是我尝试过的:
// Source and target image files
string srcImageFile = @"D:\foo.png";
string targetImageFile = @"D:\foo_shadow.png";
// Load source image
Uri uri = new Uri (srcImageFile);
BitmapImage bi = new BitmapImage (uri);
// Add drop shadow
Image img = new Image();
img.Source = bi;
DropShadowEffect dse = new DropShadowEffect();
dse.Direction = 225;
dse.Color = Color.FromArgb (255, 182, 194, 203);
dse.ShadowDepth = 10;
dse.BlurRadius = 14;
img.Effect = dse;
// Save modified image
BitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add (BitmapFrame.Create (bi));
using (Stream outputStream = File.OpenWrite (targetImageFile)) {
encoder.Save (outputStream);
}
生成的目标文件包含与源文件相同的图像。显然,我需要在保存目标文件之前获取修改后的位图。朝正确方向轻推将不胜感激。