HI
我使用windows API调用CreateRoundRgn和SetWindowRgn创建了一个带有圆边的窗口,但是圆角并不像使用GDI +绘制的圆角矩形那样平滑。反正有没有平滑窗户的角落?
procedure TPBSDashboardPanel.DefineWindowRegion;
var
WindowRegion: HRGN;
begin
if Assigned(Parent) then
begin
WindowRegion := CreateRoundRectRgn(0, 0, Width, Height, 20, 20);
SetWindowRgn(Handle, WindowRegion, True);
end;
end;
答案 0 :(得分:5)
如果您想绘制主题矩形,请检查this link. 要渲染(半)透明位图,我猜测是什么(我猜),请查看this function. 要使用这两种功能,请让我知道或激励您使用Google。
答案 1 :(得分:3)
可能使用具有Alpha透明度的位图来模拟抗锯齿以及稍微更大的圆形区域,以允许Windows进行命中测试。
这里的问题是Win32 GDI使用区域进行命中测试,因此当绘制区域中的每个点都具有整数逻辑单元坐标时,因此当经过命中测试时,可以知道区域外部或内部。
上帝保佑
PS:AFAIK无法定义窗口使用的实际区域,这将使窗口边框呈现抗锯齿,而Win32仅支持别名窗口。 Windows 7中的WDM模糊了边框,但我认为这是阴影,而不是绘制模糊的实际区域。
答案 2 :(得分:0)
我不是这方面的专家,但我知道GDI +支持抗锯齿,而GDI则不支持。没有抗锯齿,圆角看起来不会很光滑。