Delphi timage 上的 DrawThemeBackground 导致白色背景
Delphi DrawThemeBackground on timage causing white background
我想使用 Windows 的原生外观,我正在尝试学习如何使用它。
我正在尝试用 Windows 工具按钮背景绘制 timage.canvas,但是 timage 的背景看起来是白色的,它看起来与 Windows 不一样,
我该如何解决?
这是我的代码;
procedure TForm1.Button1Click(Sender: TObject);
var
theme: HTHEME;
begin
theme := OpenThemeData(Handle, 'TOOLBAR');
// error checking omitted for brevity
try
DrawThemeBackground(
theme,
Image1.Canvas.Handle,
TP_BUTTON,
TS_HOT,
Image1.ClientRect,
nil
);
finally
CloseThemeData(theme);
end;
end;
这是我在timage上应用主题后的结果图片:
如果你想要一个按钮,你应该要求 'BUTTON' 主题,而不是 'TOOLBAR'。
theme := OpenThemeData(Handle, 'BUTTON');
另外这一行应该在 try
.
之前
主题部分和状态列表see this
从上面的列表中您会看到您使用的 iPartId
和 iStateId
不是正确的(尽管有效)。我建议改为使用 BP_PUSHBUTTON
和 PBS_HOT
。
procedure TForm3.Button2Click(Sender: TObject);
var
theme: HTHEME;
begin
theme := OpenThemeData(Handle, 'BUTTON');
try
DrawThemeBackground(theme,
Image1.Canvas.Handle,
BP_PUSHBUTTON,
PBS_HOT,
Image1.ClientRect,
nil);
finally
CloseThemeData(theme);
end;
end;
编辑 这是一张图片,用于比较 TToolButton
和 Windows 7 中的 TToolBar
:
如您所见,TToolbutton
(在顶部的 TToolbar
上)在 'hot' 时没有 TButton
的蓝色外观。在工具栏下方,左侧是您的代码,右侧是我的建议。你问的是浅灰/白还是浅灰/蓝的区别?
我想使用 Windows 的原生外观,我正在尝试学习如何使用它。
我正在尝试用 Windows 工具按钮背景绘制 timage.canvas,但是 timage 的背景看起来是白色的,它看起来与 Windows 不一样, 我该如何解决?
这是我的代码;
procedure TForm1.Button1Click(Sender: TObject);
var
theme: HTHEME;
begin
theme := OpenThemeData(Handle, 'TOOLBAR');
// error checking omitted for brevity
try
DrawThemeBackground(
theme,
Image1.Canvas.Handle,
TP_BUTTON,
TS_HOT,
Image1.ClientRect,
nil
);
finally
CloseThemeData(theme);
end;
end;
这是我在timage上应用主题后的结果图片:
如果你想要一个按钮,你应该要求 'BUTTON' 主题,而不是 'TOOLBAR'。
theme := OpenThemeData(Handle, 'BUTTON');
另外这一行应该在 try
.
主题部分和状态列表see this
从上面的列表中您会看到您使用的 iPartId
和 iStateId
不是正确的(尽管有效)。我建议改为使用 BP_PUSHBUTTON
和 PBS_HOT
。
procedure TForm3.Button2Click(Sender: TObject);
var
theme: HTHEME;
begin
theme := OpenThemeData(Handle, 'BUTTON');
try
DrawThemeBackground(theme,
Image1.Canvas.Handle,
BP_PUSHBUTTON,
PBS_HOT,
Image1.ClientRect,
nil);
finally
CloseThemeData(theme);
end;
end;
编辑 这是一张图片,用于比较 TToolButton
和 Windows 7 中的 TToolBar
:
如您所见,TToolbutton
(在顶部的 TToolbar
上)在 'hot' 时没有 TButton
的蓝色外观。在工具栏下方,左侧是您的代码,右侧是我的建议。你问的是浅灰/白还是浅灰/蓝的区别?