gpt4 book ai didi

inno-setup - 如何更改 Inno Setup 中进度条的颜色?

转载 作者:行者123 更新时间:2023-12-02 04:16:09 25 4
gpt4 key购买 nike

我使用 TNewProgressBar 创建了一个进度条。
进度条默认颜色为绿色。
我想将颜色更改为蓝色。

最佳答案

你不能。


进度条的样式由当前的 Windows 主题决定。在默认的 Windows 主题中,进度条为绿色(或者黄色或红色,如果进度条处于暂停或错误状态,请参阅 TNewProgressBar.State)。

您必须完全重新实现进度条的绘制或禁用整个安装程序的视觉主题。
请参阅How to change the color of progressbar in C# .NET 3.5?

使用 Inno Setup API,重新实现绘图将非常困难(如果有可能的话)。而且您可能不想禁用视觉主题。


如果您确实需要蓝色,您可以考虑使用 TBitmapImage.Bitmap.Canvas 自己实现进度条(使用 .Rectangle 等方法)。

一个简单的例子:

var
ProgressImage: TBitmapImage;

procedure InitializeWizard();
begin
ProgressImage := TBitmapImage.Create(WizardForm);
ProgressImage.Parent := WizardForm;
ProgressImage.Left := ScaleX(10);
ProgressImage.Top := WizardForm.ClientHeight - ScaleY(34);
ProgressImage.Width := ScaleX(200);
ProgressImage.Height := ScaleY(20);
ProgressImage.BackColor := clWhite;
ProgressImage.Bitmap.Width := ProgressImage.Width;
ProgressImage.Bitmap.Height := ProgressImage.Height;
end;

procedure DrawProgress(Image: TBitmapImage; Progress: Integer);
var
Canvas: TCanvas;
Width: Integer;
begin
Log(Format('Drawing progress %d', [Progress]));

Canvas := Image.Bitmap.Canvas;

Canvas.Pen.Style := psClear;

Width := Image.Bitmap.Width * Progress / 100
Log(Format('Bar size: %d x %d', [Width, Image.Bitmap.Height]));

Canvas.Brush.Color := clHighlight;
Canvas.Rectangle(1, 1, Width, Image.Bitmap.Height);

Canvas.Brush.Color := clBtnFace;
Canvas.Rectangle(Width - 1, 1, Image.Bitmap.Width, Image.Bitmap.Height);

Canvas.Pen.Style := psSolid;
Canvas.Pen.Mode := pmCopy;
Canvas.Pen.Color := clBlack;
Canvas.Brush.Style := bsClear;
Canvas.Rectangle(1, 1, Image.Bitmap.Width, Image.Bitmap.Height);
end;

procedure CurPageChanged(CurPageID: Integer);
begin
Log(Format('CurPageChanged %d', [CurPageID]));
DrawProgress(ProgressImage, (CurPageID * 100 / wpFinished));
end;

Drawn progress bar

关于inno-setup - 如何更改 Inno Setup 中进度条的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33630532/

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