在groupbox中使用WinForm Paint事件

时间:2016-06-13 09:38:28

标签: c# winforms paint groupbox

我尝试将此C ++ MFC应用程序移植到C#WinForm中。这是一项正在进行的工作。基本上,我想在组框区域中进行一些绘制:

Dialog design

我在表单中添加了一个Paint处理程序来完成我的工作:

private void FullColourPaletteForm_Paint(object sender, PaintEventArgs e)
{
    // Do painting with e.Graphics
}

我很惊讶地看到它没有显示我的渲染。但是,我意识到在Winform中它不是groupbox而是container。因此,我将容器设置为隐形,可以理解的是,我的渲染(尽管不太正确)现在可以看到:

Dialog results

我应该如何在容器区域内进行绘画?

为什么呢?我所做的只是补充:

private void groupBox1_Paint(object sender, PaintEventArgs e)
{
    base.OnPaint(e);
}

现在我的表格绘画是可见的。

1 个答案:

答案 0 :(得分:1)

每个窗口(控件,窗体等)都有自己的绘画,儿童通常会从该绘画中剪裁(排除)。

如果你想在GroupBox(或任何控件)中绘制,你应该在相应的控件(你的情况为Paintprivate void groupBox_Paint(object sender, PaintEventArgs e) { var area = groupBox.DisplayRectangle; // Draw inside the area e.Graphics.FillRectangle(Brushes.Green, area); } 事件中处理,而不是形式一

contentType: "json",