2009-12-12 98 views
1

我只是试图在自定义形状的气球形状的.net winform中创建窗体控件。 需要一个透明的气球工具提示,我可以在工具提示上放置按钮,但.net中的工具提示没有提供我们可以将按钮放在工具提示控件上的功能,因此我想使窗体控件看起来像一个气球工具提示,所以我可以把按钮放在窗体上看起来像一个工具提示。但我不能显示窗口窗体控件看起来像气球工具提示。 那我该怎么办? 我尝试了一种方式,我在气球形状的Powerpoint中创建图像,并将其设置为表单属性的背景图像。但是没有解决方案。窗体看起来像一个气球

+0

在Winforms中这不是一件简单的事情 - 您必须创建一个自定义控件/其他类型的窗口,如其他答案所示。是的,这将涉及一些工作。 – 2009-12-12 09:29:41

+4

@Harikrishna - 请不要问同样的问题。如果有什么不清楚的地方,编辑这个问题来澄清它。我已经合并了重复项。 – 2009-12-12 11:14:00

回答

1

Control类支持一个带有字母< 255的BackColor,它是自动的。它要求家长自己绘制出控制的背景,然后吸引自己。但是,您需要气球的顶级窗口。这是一种窗口类型,可以任意叠加另一个窗口,并且不受基础窗口客户区的限制。它没有父。工具提示就是这样一个窗口。

Windows窗体中唯一可用于顶级窗口的控件是窗体。问题是:透明度技巧不再有效。由于顶层窗口没有Parent,因此没有任何明显的窗口要求绘制背景。它可能是许多窗口,属于其他进程。使用其TransparencyKey属性可以在窗体中获得透明度。但这是一个“硬”的透明度,相当于一个0的alpha。你可能想要一个软的。另一个令人讨厌的问题是,由于没有可靠的背景像素颜色,绘制消除锯齿(ClearType)文本不再有效。

长话短说:除非将气球限制在窗体的客户区,否则无法做到这一点。一种控制,而不是一种形式。

0

您可以尝试挂钩控件的Paint事件并在其中绘制按钮的视觉。