2D图形

一、绘制笑脸图形

<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效果如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值