2
我正在使用C#2.0,我想创建一个Facebook样式工具提示窗口。我目前使用2个窗口和透明的键。一个用于三角箭头指针,另一个用于正方形。整个画面看起来像这样:重绘和自定义形状的窗口问题
我有问题,重新划分(如图片所示)。
有没有一种方法可以使用整个形状的窗口? (虽然我需要使其大小) 如果不是,这是否是正确的方法来做到这一点?或者,我需要“胶水”的三角形,矩形
我正在使用C#2.0,我想创建一个Facebook样式工具提示窗口。我目前使用2个窗口和透明的键。一个用于三角箭头指针,另一个用于正方形。整个画面看起来像这样:重绘和自定义形状的窗口问题
我有问题,重新划分(如图片所示)。
有没有一种方法可以使用整个形状的窗口? (虽然我需要使其大小) 如果不是,这是否是正确的方法来做到这一点?或者,我需要“胶水”的三角形,矩形
两种方式来解决 -
使用透明度:Irregular shaped Windows Form (C#)
或使用Control.Region这是该窗口的实际成型。样品或大量: How do I make a genuinely transparent Control?
protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);
const int ArrowSize = 25;
Point[] points = new[] {
new Point(ArrowSize, 0),
new Point(this.Width, 0),
new Point(this.Width, this.Height),
new Point(ArrowSize, this.Height),
new Point(ArrowSize, ArrowSize),
new Point(0, ArrowSize/2)
// don't need - autocloses
// ,new Point(ArrowSize, 0)
};
GraphicsPath path = new GraphicsPath();
path.AddLines(points);
this.Region = new Region(path);
}
是的,但如果我使用的区域,该窗口将不会调整大小,对吗? – blez 2011-02-24 16:20:52
工具提示通常不是用户可调整大小的,但不管您是否可以像使用透明一样处理它,只需要在OnSizeChanged(或其他)处理程序中重新创建/更新区域即可。区域具有*实际*改变鼠标命中测试等窗口形状的好处。 – 2011-02-24 22:19:47