重绘和定制形状的窗户问题

时间:2011-02-24 14:54:44

标签: c# .net winforms winapi c#-2.0

我正在使用C#2.0,我想创建一个facebook风格的工具提示窗口。我目前用2个窗口和透明键制作它。一个用于三角形箭头指针,一个用于方形。整个画面看起来像是:

enter image description here

我有重绘问题(如图所示)。

有没有办法在那上面使用整形窗户? (虽然我需要让它变得相当大) 如果不是,这是正确的方法吗?或者我需要将三角形“粘合”到矩形

1 个答案:

答案 0 :(得分: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);
}