一、绘制笑脸图形
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="2D图形使用(笑脸)" Height="350" Width="525" Opacity="0.5" AllowsTransparency="True" WindowStyle="None" MouseDoubleClick="Window_MouseDoubleClick" MouseLeftButtonDown="Window_MouseLeftButtonDown" MouseMove="Window_MouseMove">
<Grid Name="grid1">
<Canvas Width="300" Height="300">
<Ellipse Width="250" Height="250" Stroke="Black" StrokeThickness="7" Fill="Yellow" Canvas.Left="28" Canvas.Top="26" Name="elsOutSide" Opacity="1" />
<Ellipse Stroke="Black" Width="30" Height="45" Fill="Black" Canvas.Left="92" Canvas.Top="100" Name="elsLeft"/>
<Ellipse Canvas.Right ="91" Canvas.Top="100" Fill="Black" Height="45" Stroke="Black" Width="30" Name="elsRight" />
<Path Stroke="Black" StrokeThickness="6" Data="M20,60 Q50,90 80,60" Canvas.Left="100" Canvas.Top="127" Height="98" Width="92" Name="pmouth"/>
<!--M:左上角 Q:曲线-->
</Canvas>
<Button Content="添加一线" Height="22" HorizontalAlignment="Left" Margin="12,224,0,0" Name="button1" VerticalAlignment="Top" Width="54" Click="button1_Click" />
</Grid>
</Window>
private void button1_Click(object sender, RoutedEventArgs e)
{
//动态的向grid1中添加一根线
Line line = new Line();
line.X1 = 10.0d;
line.Y1 = 10.0d;
line.X2 = 100.0d;
line.Y2 = 100.0d;
line.Stroke = new SolidColorBrush(Color.FromRgb(0, 0, 255));
line.StrokeThickness = 6;
grid1.Children.Add(line);
}

二、利用"Opacity"设置图形的透明度,使图形达到混合色效果
设置window的透明度时,除了设置"Opacity"属性外还要设置"AllowsTransparency=true"和"windowStyle=None"。才能达到效果。
private void Window_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
//关闭窗体
this.Close();
}
double oldX = 0d;
double oldY = 0d;
private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
oldX = e.GetPosition(this).X;
oldY = e.GetPosition(this).Y;
}
private void Window_MouseMove(object sender, MouseEventArgs e)
{
//移动窗体
if (e.LeftButton == MouseButtonState.Pressed)
{
double x = e.GetPosition(this).X;
double y = e.GetPosition(this).Y;
double dx = x - oldX;
double dy = y - oldY;
this.Left += dx;
this.Top += dy;
}
}
UI效果如下
