<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Draw Text to a Control's Background"
Background="FloralWhite"
Width="800"
Loaded="WindowLoaded">
<StackPanel>
<Label Name="myLabel" Width="200" Height="36" />
<TextBox Name="myTextBox" MaxLength="25" >Sample Text</TextBox>
<Button Name="myButton" Click="OnButtonClick" Width="160" Height="40" />
<Canvas Name="myCanvas" Width ="760" Height="300"/>
</StackPanel>
</Window>
//File:Window.xaml.cs
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Media;
namespace WpfApplication1
{
public partial class Window1 : Window
{
public Window1() : base()
{
InitializeComponent();
}
private void WindowLoaded(object sender, EventArgs e)
{
myLabel.Background = new DrawingBrush(DrawMyText("My Custom Label"));
myButton.Background = new DrawingBrush(DrawMyText("Display Text"));
}
private Drawing DrawMyText(string textString)
{
DrawingGroup drawingGroup = new DrawingGroup();
using (DrawingContext drawingContext = drawingGroup.Open())
{
FormattedText formattedText = new FormattedText(
textString,
CultureInfo.GetCultureInfo("en-us"),
FlowDirection.LeftToRight,
new Typeface("Comic Sans MS Bold"),
48,
Brushes.Black
);
Geometry textGeometry = formattedText.BuildGeometry(new Point(20, 0));
drawingContext.DrawRoundedRectangle(Brushes.PapayaWhip, null, new Rect(new Size(formattedText.Width + 50, formattedText.Height + 5)), 5.0, 5.0);
drawingContext.DrawGeometry(Brushes.Gold, new Pen(Brushes.Maroon, 1.5), textGeometry);
return drawingGroup;
}
}
public void OnButtonClick(object sender, EventArgs e)
{
myCanvas.Background = new DrawingBrush(DrawMyText(myTextBox.Text));
}
}
}