WPF 窗口自定义拉伸
.NET技术交流群 199281001 .欢迎加入。
//自定义窗体拉伸
public HwndSource _HwndkaifaSource;
private const int WM_SYSCOMMAND = 0x112;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
private Dictionary<ResizeDirection, Cursor> cursors = new Dictionary<ResizeDirection, Cursor>
{
{ResizeDirection.Top, Cursors.SizeNS},
{ResizeDirection.Bottom, Cursors.SizeNS},
{ResizeDirection.Left, Cursors.SizeWE},
{ResizeDirection.Right, Cursors.SizeWE},
{ResizeDirection.TopLeft, Cursors.SizeNWSE},
{ResizeDirection.BottomRight, Cursors.SizeNWSE},
{ResizeDirection.TopRight, Cursors.SizeNESW},
{ResizeDirection.BottomLeft, Cursors.SizeNESW}
};
Register user32.dll
public enum ResizeDirection
{
/// <summary>
/// 左
/// </summary>
Left = ,
/// <summary>
/// 右
/// </summary>
Right = ,
/// <summary>
/// 上
/// </summary>
Top = ,
/// <summary>
/// 左上
/// </summary>
TopLeft = ,
/// <summary>
/// 右上
/// </summary>
TopRight = ,
/// <summary>
/// 下
/// </summary>
Bottom = ,
/// <summary>
/// 左下
/// </summary>
BottomLeft = ,
/// <summary>
/// 右下
/// </summary>
BottomRight = ,
}
ResizeDirection
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(_HwndkaifaSource.Handle, WM_SYSCOMMAND, (IntPtr)( + direction), IntPtr.Zero); }
Event
this.SourceInitialized += delegate(object sender, EventArgs e)
{
this._HwndkaifaSource = PresentationSource.FromVisual((Visual)sender) as HwndSource;
};
this.MouseMove += new MouseEventHandler(Window_MouseMove);
construction
XAML 属性 :MouseMove="ResizePressed" MouseDown="ResizePressed"
WPF 窗口自定义拉伸的更多相关文章
- 自定义WPF 窗口样式
原文:自定义WPF 窗口样式 Normal 0 false 7.8 pt 0 2 false false false EN-US ZH-CN X-NONE 自定义 Window 在客户端程序中,经常需 ...
- WPF绘制自定义窗口
原文:WPF绘制自定义窗口 WPF是制作界面的一大利器,下面就用WPF模拟一下360的软件管理界面,360软件管理界面如下: 界面不难,主要有如下几个要素: 窗体的圆角 自定义标题栏及按钮 自定义状态 ...
- WPF 之 自定义窗体标题栏
在WPF中自定义窗体标题栏,首先需要将窗体的WindowStyle属性设置为None,隐藏掉WPF窗体的自带标题栏.然后可以在窗体内部自定义一个标题栏. 例如,标题栏如下: <WrapPanel ...
- 在WPF中自定义你的绘制(五)
原文:在WPF中自定义你的绘制(五) 在WPF中自定义你的绘制(五) ...
- c++实现输入法窗口自定义的代码
#pragma once #include <Windows.h> #include <imm.h> #include <string> #pragma comme ...
- 在WPF中自定义你的绘制(三)
原文:在WPF中自定义你的绘制(三) 在WPF中自定义你的绘制(三) ...
- 在WPF中自定义你的绘制(四)
原文:在WPF中自定义你的绘制(四) 在WPF中自定义你的绘制(四) ...
- 在WPF中自定义你的绘制(一)
原文:在WPF中自定义你的绘制(一) 在WPF中自定义你的绘制(一) ...
- 在WPF中自定义你的绘制(二)
原文:在WPF中自定义你的绘制(二) 在WPF中自定义你的绘制(二) ...
随机推荐
- jquery 删除字符串最后一个字符的方法
字符串:var s = "1,2,3,4,5," 目标:删除最后一个 "," 方法: s=s.substring(0,s.Length-1): 字符串:var ...
- list to csv
import csv # ============================== # list to csv # ============================== a = [1,2, ...
- [CareerCup] 1.4 Replace Spaces 替换空格
1.4 Write a method to replace all spaces in a string with '%20'. You may assume that the string has ...
- 信息安全系统设计基础exp_2
详见搭档20135322郑伟博客,链接如下:http://www.cnblogs.com/zhengwei0712/p/4971435.html
- Xml命名空间浅析
XML实例 在介绍xml命名空间之前,我们先来看段xml代码: <?xml version="1.0" encoding="UTF-8"?> < ...
- openMP的一点使用经验【非原创】
按照百科上说的,针对于openmp的编程,最简单的就是在开头加个#include<omp.h>,然后在后面的for上加一行#pragma omp parallel for即可,下面的是较为 ...
- sql server 2008 操作数据表
SQL Server表 表的类型: ①临时表 临时表可用来处理中间数据或者用临时表 与其它连接共享进行中的工作.临时表只 能放在tempdb中. 私有临时表(#) 全局临时表(##) ②系 ...
- 《TCP/IP详解卷1:协议》第4章 ARP:地址解析协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- WCF 入门(15)
前言 度过了一个阳光明媚的周末. 一个阴霾的周日夜晚. 第15集 WCF里面的异常处理(1) Exception handling in WCF 大致看了一下,这个WCF视频里面总共有6集,这个是第 ...
- Sublime Text 3 破解版 + 注册机 + 汉化包 + 教程
SublimeText 是一个代码编辑器,也是HTML和散文先进的文本编辑器. SublimeText 是由程序员 Jon Skinner 于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展 ...