Inno setup 如何在Inno设置中更改进度条的颜色?

Inno setup 如何在Inno设置中更改进度条的颜色?,inno-setup,pascalscript,Inno Setup,Pascalscript,我使用TNewProgressBar创建了一个进度条。 进度条的默认颜色为绿色。 我想把颜色改成蓝色 你不能 进度条由当前Windows主题设置样式。在默认Windows主题中,进度条为绿色、黄色或红色,如果进度条处于暂停或错误状态,请参阅TNewProgressBar.state 您必须完全重新实现进度条的绘图或禁用整个安装程序的视觉主题。 看 但是Inno Setup API不允许您重新实现图形。您可能不想禁用视觉主题 如果你真的需要蓝色,你可以考虑使用TBMIPMAIZ.BITMAP.Ch

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

你不能

进度条由当前Windows主题设置样式。在默认Windows主题中,进度条为绿色、黄色或红色,如果进度条处于暂停或错误状态,请参阅TNewProgressBar.state

您必须完全重新实现进度条的绘图或禁用整个安装程序的视觉主题。 看

但是Inno Setup API不允许您重新实现图形。您可能不想禁用视觉主题

如果你真的需要蓝色,你可以考虑使用TBMIPMAIZ.BITMAP.ChanVas使用.Realth.

等方法来实现进度条。 一个简单的例子:

变量 ProgressImage:TBitmapImage; 程序初始化; 开始 ProgressImage:=TBitmapImage.CreateWizardForm; ProgressImage.Parent:=WizardForm; ProgressImage.Left:=ScaleX10; ProgressImage.Top:=WizardForm.ClientHeight-ScaleY34; ProgressImage.Width:=ScaleX200; ProgressImage.Height:=ScaleY20; ProgressImage.BackColor:=clWhite; ProgressImage.Bitmap.Width:=ProgressImage.Width; ProgressImage.Bitmap.Height:=ProgressImage.Height; 终止 程序DrawProgressImage:TBitmapImage;进度:整数; 变量 画布:TCanvas; 宽度:整数; 开始 日志格式为“绘图进度%d”,[进度]; 画布:=Image.Bitmap.Canvas; Canvas.Pen.Style:=psClear; 宽度:=Image.Bitmap.Width*进度/100 LogFormat'Bar size:%d x%d',[Width,Image.Bitmap.Height]; Canvas.Brush.Color:=clHighlight; Canvas.Rectangle1,1,Width,Image.Bitmap.Height; Canvas.Brush.Color:=clBtnFace; Canvas.RectangleWidth-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.Rectangle1,1,Image.Bitmap.Width,Image.Bitmap.Height; 终止 过程CurPageChangedCurPageID:Integer; 开始 日志格式'CurPageChanged%d',[CurPageID]; DrawProgressImage,CurPageID*100/wpFinished; 终止 你不能

进度条由当前Windows主题设置样式。在默认Windows主题中,进度条为绿色、黄色或红色,如果进度条处于暂停或错误状态,请参阅TNewProgressBar.state

您必须完全重新实现进度条的绘图或禁用整个安装程序的视觉主题。 看

但是Inno Setup API不允许您重新实现图形。您可能不想禁用视觉主题

如果你真的需要蓝色,你可以考虑使用TBMIPMAIZ.BITMAP.ChanVas使用.Realth.

等方法来实现进度条。 一个简单的例子:

变量 ProgressImage:TBitmapImage; 程序初始化; 开始 ProgressImage:=TBitmapImage.CreateWizardForm; ProgressImage.Parent:=WizardForm; ProgressImage.Left:=ScaleX10; ProgressImage.Top:=WizardForm.ClientHeight-ScaleY34; ProgressImage.Width:=ScaleX200; ProgressImage.Height:=ScaleY20; ProgressImage.BackColor:=clWhite; ProgressImage.Bitmap.Width:=ProgressImage.Width; ProgressImage.Bitmap.Height:=ProgressImage.Height; 终止 程序DrawProgressImage:TBitmapImage;进度:整数; 变量 画布:TCanvas; 宽度:整数; 开始 日志格式为“绘图进度%d”,[进度]; 画布:=Image.Bitmap.Canvas; Canvas.Pen.Style:=psClear; 宽度:=Image.Bitmap.Width*进度/100 LogFormat'Bar size:%d x%d',[Width,Image.Bitmap.Height]; Canvas.Brush.Color:=clHighlight; Canvas.Rectangle1,1,Width,Image.Bitmap.Height; Canvas.Brush.Color:=clBtnFace; Canvas.RectangleWidth-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.Rectangle1,1,Image.Bitmap.Width,Image.Bitmap.Height; 终止 过程CurPageChangedCurPageID:Integer; 开始 日志格式'CurPageChanged%d',[CurPageID]; DrawProgressImage,CurPageID*100/wpFinished; 终止
但是,当使用TBITMAPIMAG.BITMAP.CANVASI时,我能向进度条添加动画吗?每次进度都必须重新绘制位图。但是,即使进度条卡在中间,我也希望动画在进度条上运行。他们有办法用gif画吗?你可以画任何你想画的东西。只要在长操作运行时拥有GUI线程的控制权。不过,Inno设置中不支持动画GIF。虽然你的问题是关于蓝色进度条,但你必须在间隔中绘制BMP帧。动画远不止于此。但当使用TBitmapImage.Bitmap.CA画布时,我是否能够将动画添加到进度条?您必须
每次进度都会修改位图,但是我希望在进度条上运行一个动画,即使进度条被卡在中间。他们有办法用gif画吗?你可以画任何你想画的东西。只要在长操作运行时拥有GUI线程的控制权。不过,Inno设置中不支持动画GIF。虽然你的问题是关于蓝色进度条,但你必须在间隔中绘制BMP帧。动画远远不止于此。