2011-02-24 50 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