在组框内使用 WinForm Paint 事件
Using WinForm Paint event inside groupbox
我正在尝试将此 C++ MFC 应用程序移植到 C# WinForm 中。这是一项正在进行的工作。基本上,我想在组框区域做一些绘图:
我在表单中添加了一个 Paint 处理程序来完成我的工作:
private void FullColourPaletteForm_Paint(object sender, PaintEventArgs e)
{
// Do painting with e.Graphics
}
我惊讶地发现它没有显示我的渲染。但是,后来我意识到在 Winform 中它不被称为 groupbox
而是 container
。所以,我将容器设置为不可见,可以理解我的渲染(虽然不太正确)现在可见:
我应该如何在容器区域内进行绘画?
这是为什么呢?我所做的只是添加:
private void groupBox1_Paint(object sender, PaintEventArgs e)
{
base.OnPaint(e);
}
现在我的表格画是可见的。
每个 window(控件、表单等)都有自己的绘画,并且儿童通常会从该绘画中剪裁(排除)。
如果你想在 GroupBox
(或任何控件)内部绘制,你应该在相应的控件(GroupBox
在你的情况下)Paint
事件中处理它,而不是形式一.
private void groupBox_Paint(object sender, PaintEventArgs e)
{
var area = groupBox.DisplayRectangle;
// Draw inside the area
e.Graphics.FillRectangle(Brushes.Green, area);
}
我正在尝试将此 C++ MFC 应用程序移植到 C# WinForm 中。这是一项正在进行的工作。基本上,我想在组框区域做一些绘图:
我在表单中添加了一个 Paint 处理程序来完成我的工作:
private void FullColourPaletteForm_Paint(object sender, PaintEventArgs e)
{
// Do painting with e.Graphics
}
我惊讶地发现它没有显示我的渲染。但是,后来我意识到在 Winform 中它不被称为 groupbox
而是 container
。所以,我将容器设置为不可见,可以理解我的渲染(虽然不太正确)现在可见:
我应该如何在容器区域内进行绘画?
这是为什么呢?我所做的只是添加:
private void groupBox1_Paint(object sender, PaintEventArgs e)
{
base.OnPaint(e);
}
现在我的表格画是可见的。
每个 window(控件、表单等)都有自己的绘画,并且儿童通常会从该绘画中剪裁(排除)。
如果你想在 GroupBox
(或任何控件)内部绘制,你应该在相应的控件(GroupBox
在你的情况下)Paint
事件中处理它,而不是形式一.
private void groupBox_Paint(object sender, PaintEventArgs e)
{
var area = groupBox.DisplayRectangle;
// Draw inside the area
e.Graphics.FillRectangle(Brushes.Green, area);
}