2010-08-26 121 views
1

许多现代应用程序具有不规则形状的形式。 Delphi中最好的方法是什么?没有使用任何第三方VCL可以做到这一点吗?不规则形状

+3

我不相信你的第一句话的要求。 – 2010-08-26 07:58:15

+0

将“Most”更改为“Many”:) – rajeemcariazo 2010-08-26 08:17:15

+0

奇怪的是,自从Windows XP引入了主题,实际上大多数窗口都有圆角(用SetWindowRgn bij主题服务完成) – 2010-08-30 08:12:43

回答

9

yes是可能的,您必须使用SetWindowRgn函数来设置要绘制的新窗口区域。

试试这个代码

procedure TForm1.FormCreate(Sender: TObject); 
var 
    region:HRGN; 
begin 
    region := CreateRoundRectRgn(ClientRect.left, ClientRect.top, ClientRect.right, ClientRect.bottom, 15, 15); 
    SetWindowRgn(Handle, region, true); 
end; 

alt text

检查提纲更多信息

链接
+6

SetWindowRgn()是塑造windows的老派方法。在Win2000及更高版本中,UpdateLayeredWindow()和SetLayeredWindowAttributes()(由TForm.TransparentColor ...和TForm.AlphaBlend ...属性包装)现在是首选方法。 – 2010-08-26 21:10:52

8

您可以使用TForms的TransparentColorValue属性。结合BorderStyle = bsNone它会给你这样的形状。

+0

这是否适用于Glass系统? – 2012-01-24 14:01:59

+0

如果你的意思是Aero Glass,那么是的。 – Torbins 2012-02-06 14:59:55