zoukankan      html  css  js  c++  java
  • 自定义的可拖动窗体

    在学习wpf过程中用过的Demo,背景透明,可以拖动,效果如下:

    组成部分:path对象绘制边框,label下的字符串,自定义按钮控件

    xaml代码:

    <Window x:Class="CustomWindow.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525" Background="Transparent" AllowsTransparency="True" WindowStyle="None"
            MouseLeftButtonDown="Window_MouseLeftButtonDown">
        <!--窗口的形状都绘制在Canvas面板里面-->
        <Canvas Width="200" Height="200" >
            <!--窗口的轮廓-->
            <Path Stroke="DarkGray" StrokeThickness="2">
                <Path.Fill>
                    <LinearGradientBrush StartPoint="0.2,0" EndPoint="0.8,1" >
                        <GradientStop Color="White"  Offset="0"></GradientStop>
                        <GradientStop Color="White"  Offset="0.45"></GradientStop>
                        <GradientStop Color="LightBlue" Offset="0.9"></GradientStop>
                        <GradientStop Color="Gray" Offset="1"></GradientStop>
                    </LinearGradientBrush>
                </Path.Fill>
                <Path.Data>
                    <PathGeometry>
                        <PathFigure StartPoint="40,20" IsClosed="True">
                            <LineSegment Point="160,20"></LineSegment>
                            <ArcSegment Point="180,40" Size="20,20" SweepDirection="Clockwise"></ArcSegment>
                            <LineSegment Point="180,80"></LineSegment>
                            <ArcSegment Point="160,100" Size="20,20" SweepDirection="Clockwise"></ArcSegment>
                            <LineSegment Point="90,100"></LineSegment>
                            <LineSegment Point="90,150"></LineSegment>
                            <LineSegment Point="60,100"></LineSegment>
                            <LineSegment Point="40,100"></LineSegment>
                            <ArcSegment Point="20,80" Size="20,20" SweepDirection="Clockwise"></ArcSegment>
                            <LineSegment Point="20,40"></LineSegment>
                            <ArcSegment Point="40,20" Size="20,20" SweepDirection="Clockwise"></ArcSegment>
                        </PathFigure>
                    </PathGeometry>
                </Path.Data>
            </Path>
            <!--“拖动我!”的标签-->
            <Label Width="200" Height="120" FontSize="15" HorizontalContentAlignment="Center" VerticalContentAlignment="Center">拖动我!</Label>
            <!--关闭按钮-->
            <Button Canvas.Left="155" Canvas.Top="30" Click="Button_Click">
                <Button.Template>
                    <ControlTemplate>
                        <Canvas>
                            <Rectangle Width="15" Height="15" Stroke="Black" RadiusX="3" RadiusY="3">
                                <Rectangle.Fill>
                                    <SolidColorBrush x:Name="myAnimatedBrush" Color="Red" />
                                </Rectangle.Fill>
                            </Rectangle>
                            <Line X1="3" Y1="3" X2="12" Y2="12" Stroke="White" StrokeThickness="2"></Line>
                            <Line X1="12" Y1="3" X2="3" Y2="12" Stroke="White" StrokeThickness="2"></Line>
                        </Canvas>
                    </ControlTemplate>
                </Button.Template>
            </Button>
        </Canvas>
    </Window>

    后台代码:

      public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                this.DragMove();
            }
    
            private void Button_Click(object sender, RoutedEventArgs e)
            {
                this.Close();
            }
        }

    下载地址

  • 相关阅读:
    GridView控件使用参考示例
    基于.NET三种Ajax技术的运用——原生js、ASP.NET Ajax和.NET回调技术
    使用原生javascript创建通用表单验证 —— 更锋利的使用dom对象
    序列化与反序列化一个集合
    如何在.net MVC1.0中post一个实体对象和集合对象
    搭建SharePoint开发环境——如何在Win7安装SharePointFoundation
    解决Web Part出现“/”应用程序中的服务器错误
    何时使用泛型
    TRUNCATE TABLE
    【转】实例讲解override和new的区别
  • 原文地址:https://www.cnblogs.com/dongyang/p/3075783.html
Copyright © 2011-2022 走看看