我希望在C#中绘制非客户区域,例如,将矩形作为表格,我想要一个椭圆(这是一个例子),但我该怎么办呢?
我基本上想要绘制我所有的非客户区域,我想这样做我将不得不重写一些方法,但是哪些方法?
我找到了一个使用'xaml'的例子,我认为这是windows presentation foundation app,但我还不太了解。
答案 0 :(得分:3)
m0sa已经提供了a WPF answer。
对于WinForms,您需要处理WM_NCPAINT
消息(覆盖Control.WndProc
)并启用分层窗口样式,以便在边界框中具有透明区域。
答案 1 :(得分:0)
您必须像这样设置窗口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>
答案 2 :(得分:0)
如果您正在谈论Winforms,并希望在非客户区域绘制,Ben的建议将有效。
如果你想让你的窗户形状不同 - 比如像时钟那样圆形,那么你就会看到区域。
GraphicsPath path = new GraphicsPath();
path.AddEllipse(100, 100, 100, 100);
this.Region = new Region(path);