Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中绘制所有非客户区#_C#_Wpf_Winforms_Gdi - Fatal编程技术网

C# 在C中绘制所有非客户区#

C# 在C中绘制所有非客户区#,c#,wpf,winforms,gdi,C#,Wpf,Winforms,Gdi,我想用C#来画我的非客户区,例如,我想要一个椭圆(这是一个例子),而不是一个矩形作为一种形式,但是我该怎么做呢 我基本上想画出所有的非客户区,我想我必须重写一些方法,但是哪些方法呢 我找到了一个使用XAML的例子,我认为是Windows演示文稿基础应用程序,但是我不太了解它。 < p>你必须设置窗口XAML文件,比如这个 <Window x:Class="[YourwindowClass]" xmlns="http://schemas.microsoft.com/winfx/2006/

我想用C#来画我的非客户区,例如,我想要一个椭圆(这是一个例子),而不是一个矩形作为一种形式,但是我该怎么做呢

我基本上想画出所有的非客户区,我想我必须重写一些方法,但是哪些方法呢


我找到了一个使用XAML的例子,我认为是Windows演示文稿基础应用程序,但是我不太了解它。

< p>你必须设置窗口XAML文件,比如这个

<Window x:Class="[YourwindowClass]"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="..." 
  WindowStyle="None" 
  AllowsTransparency="True" 
  Background="Transparent">
    [Draw the window]
</Windows>

[画窗户]
不过,您需要生成自己的单击处理程序来拖动窗口。这里有一些例子,m0sa已经提供了


对于WinForms,您需要处理
WM_NCPAINT
消息(覆盖
Control.WndProc
),还需要启用分层窗口样式,以便在边界框中具有透明区域。

如果您正在谈论WinForms,并且希望在非客户端区域绘制,Ben的建议将起作用

如果你想让你的窗户有一个不同的形状——比如说像一个时钟一样的圆形,那么你就要观察各个区域

    GraphicsPath path = new GraphicsPath();
    path.AddEllipse(100, 100, 100, 100);
    this.Region = new Region(path);

我在WinForms中尝试了一些基于我发现的一些示例的东西,但我不明白的是,如何验证我在重写方法WndProc中收到的消息?我发现了一个例子,它有一个类似于名为Win32Calls的枚举器的东西,但是如何获取Win32Calls呢?@Miguel:
WndProc
有一个类型为
Message
的参数<代码>消息具有属性“Msg”。检查该值是否等于0x85(值
WM\u NCPAINT
)。pinvoke.net列出了许多WinApi常量的值。我的问题是如何处理该消息,并将其与什么进行比较,但现在我知道如何在WinForms中做到这一点。谢谢这是一个很好的方法,在我看来,与WPF合作是最好的。感谢您的建议和解释。这不是一个好主意,因为如果设置AllowTransparency=“True”,窗口将由软件呈现。要验证这一点,请打开任务管理器并打开窗口。将鼠标指针移到此窗口上。您将看到您的CPU使用率将跃升到30-40%。只是为了把鼠标移到窗户上。我会查出来的。tnx的洞察力!