我有一个来自我们供应商的图形化组件。我把它放在主要形式,并想在它上面绘制。但MainForm_paint不会在该组件上方绘制。有没有办法在该组件上方绘画?
C#,WinForms,2.0
代码:
void MainForm_Paint(object sender, PaintEventArgs e)
{
using (SolidBrush b2 = new SolidBrush(Color.Red))
{
e.Graphics.FillRectangle(b2, this.ClientRectangle);
}
Pen pen = new Pen(Color.Black, 2.0f);
e.Graphics.DrawLine(pen, 0, 0, 100, 100);
pen.Dispose();
}
它没有填充任何内容,也没有画线。 ComComponent.DockStyle = DockStyle.Fill
答案 0 :(得分:0)
你无法在组件上方绘制。 ActiveX有自己的Paint消息。如果Paint事件在您的容器(winform)中可见,您可以覆盖它。
答案 1 :(得分:0)
如果您可以将控件的背景设置为透明,请执行此操作。否则,可能会对控件的窗口进行子类化并忽略WM_ERASEBKGND(或其他任何名称)。
或者,如果您确切知道要绘制的位置,可以在ActiveX控件上方放置一个非矩形窗口。
修改:添加了最后一条建议