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