TBitmapImage는 Inno Setup 6에서 크기 조정된 디스플레이의 크기보다 크게 렌더링됩니다. (TBitmapImage is rendered larger than its size on scaled display in Inno Setup 6)


문제 설명

TBitmapImage는 Inno Setup 6에서 크기 조정된 디스플레이의 크기보다 크게 렌더링됩니다. (TBitmapImage is rendered larger than its size on scaled display in Inno Setup 6)

최신 Inno Setup v.6.0.3으로 업데이트되었습니다. 하지만 이제 TBitmapImage 이미지에 흰색 테두리가 생깁니다. 아래 스크립트는 이전 버전 5에서 잘 작동했습니다.

그래서 새 버전과 내가 몇 년 동안 사용하고 있는 스크립트에 무엇이 잘못된 것 같습니까?

주의하시기 바랍니다. 디스플레이를 약 125% 확대했습니다.

ExtractTemporaryFile(ExpandConstant( '{#BackgroundImage}' ));
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Left := 0;
BackgroundBitmapImage.Top := 50;
BackgroundBitmapImage.AutoSize := True;
BackgroundBitmapImage.Bitmap.LoadFromFile( ExpandConstant('{tmp}\{#BackgroundImage}')  );
BackgroundBitmapImage.Parent := MainForm;

enter image description here

정확한 이미지 크기로도 문제가 해결되지 않았습니다.

ExtractTemporaryFile(ExpandConstant( '{#BackgroundImage}' ));
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Left := 0;
BackgroundBitmapImage.Top := 50;
BackgroundBitmapImage.Width := 600;
BackgroundBitmapImage.Height := 500;
BackgroundBitmapImage.AutoSize := False;
BackgroundBitmapImage.Bitmap.LoadFromFile( ExpandConstant('{tmp}\{#BackgroundImage}')  );
BackgroundBitmapImage.Parent := MainForm;

참조 솔루션

방법 1:

The display, where your MainForm window is located, is scaled/zoomed.

When you set the .Parent, the control is rescaled to the target display. To prevent that, set the .Parent before (implicitly) setting the size.

ExtractTemporaryFile('{#BackgroundImage}');
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapImage.Left := 0;
BackgroundBitmapImage.Top := 50;
BackgroundBitmapImage.AutoSize := True;
BackgroundBitmapImage.Bitmap.LoadFromFile(
  ExpandConstant('{tmp}\{#BackgroundImage}'));

Note that there's no need to call ExpandConstant for '{#BackgroundImage}', as it does not contain any constant.

(by MaverickMartin Prikryl)

참조 문서

  1. TBitmapImage is rendered larger than its size on scaled display in Inno Setup 6 (CC BY‑SA 2.5/3.0/4.0)

#pascalscript #installation #image #inno-setup #Windows






관련 질문

Inno Setup의 WizardForm 페이지에서 레이블 텍스트 변경 (Changing label texts on WizardForm page in Inno Setup)

파스칼스크립트 디버깅 중에 양식 양식을 일시 중단할 수 있습니까? (Can a forms modality be suspended during pascalscript debugging?)

Inno Setup: .NET Framework 설치, 시스템 재부팅 후 설치 계속 (Inno Setup: Install .NET framework, reboot the system and continue installation)

Inno Setup - [code] 내부의 기본 경로 정의 (Inno Setup - Defining a default path inside [code])

파스칼스크립트에 DLL 함수 등록하기 (Registering DLL-Functions in Pascalscript)

HelpNDoc 파스칼 스크립트는 구조를 지원합니까? (Does HelpNDoc Pascal Script support structures?)

하위 설치 다운로드 및 실행 - Inno Download Plugin 다운로드 중에 진행률 표시줄이 이동하지 않음 (Download and run sub install - Inno Download Plugin progress bar does not move during download)

TBitmapImage는 Inno Setup 6에서 크기 조정된 디스플레이의 크기보다 크게 렌더링됩니다. (TBitmapImage is rendered larger than its size on scaled display in Inno Setup 6)

Inno Setup에서 필요할 때 시작 화면을 표시하지 않으려면 어떻게 해야 합니까? (How can I prevent showing the splash screen when I need it in Inno Setup?)

Inno Setup을 사용하여 현재 날짜를 레지스트리에 바이너리 형식으로 저장 (Storing the current date to the registry in binary format with Inno Setup)

Inno Setup 설치 프로그램 이전의 시작 화면에 이미지가 표시되지 않음 (Image on a splash screen before Inno Setup installer does not display)

Inno Setup 단어 완성이 전혀 작동하지 않습니다 (Inno Setup word completion doesn't work at all)







코멘트