I'm writing a small program, but I've encountered a problem
sdl window placed on the TPanel component
when resizing, maximizing the window, it copies the contents of the window,
when minimizing there is a white window.
How can I fix this?
procedure TForm1.InitializeSDL;
begin
if SDL_Init(SDL_INIT_VIDEO) < 0 then
raise Exception.Create('SDL initialization failed: ' + SDL_GetError);
SDLWindow := SDL_CreateWindowFrom(Pointer(Panel1.Handle));
if SDLWindow = nil then
raise Exception.Create('Failed to create SDL window: ' + SDL_GetError);
SDLRenderer := SDL_CreateRenderer(SDLWindow, -1, SDL_RENDERER_ACCELERATED or SDL_RENDERER_PRESENTVSYNC);
if SDLRenderer = nil then
raise Exception.Create('Failed to create SDL renderer: ' + SDL_GetError);
end;
procedure TForm1.ShutdownSDL;
begin
if CurrentTexture <> nil then
begin
SDL_DestroyTexture(CurrentTexture);
CurrentTexture := nil;
end;
if SDLRenderer <> nil then
begin
SDL_DestroyRenderer(SDLRenderer);
SDLRenderer := nil;
end;
if SDLWindow <> nil then
begin
SDL_DestroyWindow(SDLWindow);
SDLWindow := nil;
end;
IMG_Quit;
SDL_Quit;
end;
procedure TForm1.RenderImage;
var
Rect: TSDL_Rect;
begin
if CurrentTexture = nil then Exit;
// Calculate image rect
CalculateImageRect(Rect);
// Render the image
SDL_RenderClear(SDLRenderer);
SDL_RenderCopy(SDLRenderer, CurrentTexture, nil, @Rect);
SDL_RenderPresent(SDLRenderer);
// Update status bar
UpdateStatusBar;
end;