gpt4 book ai didi

delphi - 如何将标准 Windows 信息图标很好地绘制到页面控件选项卡的索引

转载 作者:行者123 更新时间:2023-12-03 15:07:24 25 4
gpt4 key购买 nike

我希望将标准 Windows 信息(以及警告和错误)图标绘制到页面控件选项卡的索引中。然而,如果窗口背景颜色不是白色,结果看起来很糟糕。

program Project111;

uses
Vcl.Forms,
Vcl.Controls,
Vcl.Graphics,
Winapi.Windows,
Vcl.ComCtrls,
Vcl.ImgList;

{$R *.res}

var
mainForm: TForm;
imageList: TImageList;
icon: TIcon;
pageControl: TPageControl;
tabSheet: TTabSheet;
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;

Application.CreateForm(TForm, mainForm);

imageList := TImageList.Create(mainForm);
imageList.ColorDepth := cd32bit;
icon := TIcon.Create;
try
icon.Handle := LoadImage( 0, IDI_INFORMATION, IMAGE_ICON, 16, 16, {LR_DEFAULTSIZE or} LR_SHARED );
imageList.AddIcon(icon);
finally
icon.Free;
end;

pageControl := TPageControl.Create(mainForm);
pageControl.Parent := mainForm;
pageControl.Images := imageList;

tabSheet := TTabSheet.Create(mainForm);
tabSheet.Parent := pageControl;
tabSheet.PageControl := pageControl;
tabSheet.ImageIndex := 0;

Application.Run;
end.

这是一个屏幕截图: enter image description here

正如你所看到的白色边框是模糊的,我猜这是因为 TImageList 缺乏适当的 alpha 透明度,但我不知道如何解决这个问题。

该解决方案不必使用 TImageList,我很乐意使用任何其他方法。请注意,还会有标题,并非所有索引都会有图标,并且图标可能会随着上下文的变化而更改/添加/删除。

我正在使用 Delphi XE-2,如果有帮助的话我还有 DevExpress 组件。

最佳答案

正如 @Sertac 所说,您看到的是将 Windows shell 图标大小从 32x32 调整为 16x16 的效果,作为从 Windows Vista 开始的解决方法,您可以使用 SHGetStockIconInfo功能。传递 SHGSI_SMALLICON 标志以检索由 SM_CXSMICONSM_CYSMICON 指定的小版本图标。

SM_CXSMICONSM_CYSMICON 的值取决于当前的 DPI 设置。对于 DPI 96,为 16x16

示例

  LIcon := TIcon.Create;
try
LIcon.Handle := 0;
if TOSVersion.Check(6, 0) then
begin
ZeroMemory(@LSHStockIconInfo, SizeOf(LSHStockIconInfo));
LSHStockIconInfo.cbSize := sizeof(LSHStockIconInfo);
if SHGetStockIconInfo(SIID_INFO, SHGSI_ICON or SHGSI_SMALLICON, LSHStockIconInfo) = S_OK then
begin
LIcon.Handle := LSHStockIconInfo.hIcon;
imageList.AddIcon(LIcon);
end;
end;
finally
LIcon.Free;
end;

关于delphi - 如何将标准 Windows 信息图标很好地绘制到页面控件选项卡的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47519469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com