你的位置:首页 > ASP.net教程

[ASP.net教程]WPF实现无边框窗体拖拽右下角▲ 改变窗体大小 谢谢大家关注


效果图:(右下角拖拽改变窗体大小)

第一步:添加xaml代码:

<Border Name="ResizeBottomRight" MouseMove="ResizePressed"          MouseDown="ResizePressed" Height="15" Width="15"           HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,0,3,3" RenderTransformOrigin="0.5,0.5">          <Border.RenderTransform>            <TransformGroup>              <ScaleTransform/>              <SkewTransform/>              <RotateTransform Angle="88.182"/>              <TranslateTransform/>            </TransformGroup>          </Border.RenderTransform>          <Border.Background>            <DrawingBrush>              <DrawingBrush.Drawing>                <GeometryDrawing Geometry="M96,128 L896,928 96,128 z M352,384 L128,160 172.19048,160 352,160 352,384 z M608,640 L384,416 608,416 608,640 z M608,384 L384,384 384,160 608,160 608,384 z M864,896 L640,672 864,672 864,896 z M864,640 L640,640 640,416 864,416 864,640 z M864,384 L640,384 640,160 864,160 864,384 z" Brush="#888888"></GeometryDrawing>              </DrawingBrush.Drawing>            </DrawingBrush>          </Border.Background>        </Border>

第二步:xaml.cs后台代码 声明

#region 初始化窗体可以缩放大小    private const int WM_SYSCOMMAND = 0x112;    private HwndSource _HwndSource;    private Dictionary<ResizeDirection, Cursor> cursors = new Dictionary<ResizeDirection, Cursor>    {      {ResizeDirection.BottomRight, Cursors.SizeNWSE},    };    private enum ResizeDirection    {      BottomRight = 8,    }    [DllImport("user32.dll", CharSet = CharSet.Auto)]    private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);    #endregion

事件:
this.SourceInitialized += delegate(object sender, EventArgs e)//执行拖拽 { this._HwndSource = PresentationSource.FromVisual((Visual)sender) as HwndSource; }; this.MouseMove += new MouseEventHandler(Window_MouseMove);//鼠标移入到边缘收缩 this.Loaded += new RoutedEventHandler(FluidWrapPanelDemo_Loaded);

private void Window_MouseMove(object sender, MouseEventArgs e)    {      if (Mouse.LeftButton != MouseButtonState.Pressed)      {        FrameworkElement element = e.OriginalSource as FrameworkElement;        if (element != null && !element.Name.Contains("Resize"))          this.Cursor = Cursors.Arrow;      }    }    private void ResizePressed(object sender, MouseEventArgs e)    {      FrameworkElement element = sender as FrameworkElement;      ResizeDirection direction = (ResizeDirection)Enum.Parse(typeof(ResizeDirection), element.Name.Replace("Resize", ""));      this.Cursor = cursors[direction];      if (e.LeftButton == MouseButtonState.Pressed)        ResizeWindow(direction);    }

private void ResizeWindow(ResizeDirection direction)    {      SendMessage(_HwndSource.Handle, WM_SYSCOMMAND, (IntPtr)(61440 + direction), IntPtr.Zero);    }

下次更新(菜单缩放):效果图

 

 

转载请注明地址~谢谢  谢谢大家关注