【问题标题】:Redrawing and custom shaped windows question重绘和自定义形状的窗口问题
【发布时间】:2011-02-24 14:54:43
【问题描述】:

我正在使用 C#2.0,我想创建一个 facebook 样式的工具提示窗口。我目前使用 2 个窗口和透明键。一个用于三角形箭头指针,一个用于正方形。整个画面是这样的:

我在重绘时遇到问题(如图所示)。

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

【问题讨论】:

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


    【解决方案1】:

    两种方法解决--

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

    【讨论】:

    • 是的,但是如果我使用区域,窗口将无法调整大小,对吗?
    • 工具提示通常不是用户可调整大小的,但无论您是否可以像处理透明一样处理它 - 您只需要在 OnSizeChanged(或其他)处理程序中重新创建/更新区域。区域具有实际上更改鼠标点击测试等的窗口形状的好处。
    猜你喜欢
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 2014-12-06
    相关资源
    最近更新 更多