Поместите рамку в VisualBrush:
VisualBrush brush = new VisualBrush { TileMode = TileMode.None };
brush.Visual = frame;
brush.AlignmentX = AlignmentX.Center;
brush.AlignmentY = AlignmentY.Center;
brush.Stretch = Stretch.Uniform;
Поместите VisualBrush в GeometryDrawing
GeometryDrawing drawing = new GeometryDrawing();
drawing.Brush = brush;
// Brush this in 1, 1 ratio
RectangleGeometry rect = new RectangleGeometry { Rect = new Rect(0, 0, 1, 1) };
drawing.Geometry = rect;
Теперь поместите GeometryDrawing в DrawingImage:
new DrawingImage(drawing);
Поместите это на ваш источник изображения, и вуаля!
Вы могли бы сделать это намного проще, хотя:
<Image>
<Image.Source>
<BitmapImage UriSource="/yourassembly;component/YourImage.PNG"></BitmapImage>
</Image.Source>
</Image>
И в коде:
BitmapImage image = new BitmapImage { UriSource="/yourassembly;component/YourImage.PNG" };