Windows 磨平窗户的圆角
嗨 我已经使用windows API调用CreateRoundRgn和SetWindowRgn创建了一个具有圆角的窗口,但是圆角不如用GDI+绘制的圆角矩形平滑。有没有办法把窗户的角弄光滑Windows 磨平窗户的圆角,windows,delphi,Windows,Delphi,嗨 我已经使用windows API调用CreateRoundRgn和SetWindowRgn创建了一个具有圆角的窗口,但是圆角不如用GDI+绘制的圆角矩形平滑。有没有办法把窗户的角弄光滑 procedure TPBSDashboardPanel.DefineWindowRegion; var WindowRegion: HRGN; begin if Assigned(Parent) then begin WindowRegion := CreateRoundRectRgn(
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;
我不是这方面的专家,但我知道GDI+支持抗锯齿,而GDI不支持。如果没有消除混叠,圆角将看起来不平滑。除了允许窗口进行命中测试的稍大圆角区域外,还可以使用具有alpha透明度的位图来模拟消除混叠 这里的问题是Win32 GDI使用区域进行命中测试,因此当绘制区域中的每个点时,都有整数逻辑单元坐标,因此当命中测试时,可以知道它在区域外部或内部 上帝保佑
PS:AFAIK无法定义窗口使用的实际区域,该区域将使窗口边框使用抗锯齿进行渲染,Win32仅支持锯齿窗口。Windows 7中的WDM使边界模糊,但我认为这是阴影,而不是绘制模糊的实际区域。如果要绘制主题矩形,请选中 要渲染(半透明)位图,我想您的目标是什么,请查看 对于这两个功能的使用,请让我知道或启发你自己使用谷歌