<Window x:Class="BitmapProgramming.AddCaption"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="BitmapProgramming" Height="300" Width="300"
>
<Image x:Name="imageElement" />
</Window>
//File:Window.xaml.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace BitmapProgramming
{
public partial class AddCaption : System.Windows.Window
{
public AddCaption()
{
InitializeComponent();
BitmapImage originalBmp = new BitmapImage();
originalBmp.BeginInit();
originalBmp.UriSource = new Uri("http://www.your host.com/a.jpeg");
originalBmp.DownloadCompleted += delegate{
Grid rootGrid = new Grid();
Image img = new Image();
img.Source = originalBmp;
rootGrid.Children.Add(img);
TextBlock caption = new TextBlock();
caption.Text = "Ian's car";
caption.VerticalAlignment = VerticalAlignment.Bottom;
caption.HorizontalAlignment = HorizontalAlignment.Center;
caption.Margin = new Thickness(5);
caption.Padding = new Thickness(5);
caption.TextAlignment = TextAlignment.Center;
caption.TextWrapping = TextWrapping.Wrap;
rootGrid.Children.Add(caption);
RenderTargetBitmap bmp = new RenderTargetBitmap(originalBmp.PixelWidth, originalBmp.PixelHeight,originalBmp.DpiX, originalBmp.DpiY, PixelFormats.Pbgra32);
rootGrid.Measure(new Size(originalBmp.Width, originalBmp.Height));
rootGrid.Arrange(new Rect(0, 0, originalBmp.Width, originalBmp.Height));
bmp.Render(rootGrid);
imageElement.Source = bmp;
};
originalBmp.EndInit();
}
}
}