2011-02-24 44 views
2

我正在使用C#2.0,我想创建一个Facebook样式工具提示窗口。我目前使用2个窗口和透明的键。一个用于三角箭头指针,另一个用于正方形。整个画面看起来像这样:重绘和自定义形状的窗口问题

enter image description here

我有问题,重新划分(如图片所示)。

有没有一种方法可以使用整个形状的窗口? (虽然我需要使其大小) 如果不是,这是否是正确的方法来做到这一点?或者,我需要“胶水”的三角形,矩形

回答

0

两种方式来解决 -

使用透明度: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); 
} 
+0

是的,但如果我使用的区域,该窗口将不会调整大小,对吗? – blez 2011-02-24 16:20:52

+0

工具提示通常不是用户可调整大小的,但不管您是否可以像使用透明一样处理它,只需要在OnSizeChanged(或其他)处理程序中重新创建/更新区域即可。区域具有*实际*改变鼠标命中测试等窗口形状的好处。 – 2011-02-24 22:19:47