Window Sizing

Resizing and Graphical Content

How does resizing affect graphical content displayed inside the window?

Abstract art representing computer programming

Resizing a window can have significant implications for the graphical content displayed within it. Here’s how it typically affects rendering:

Stretching or Distortion

If your content is rendered using fixed coordinates or dimensions, resizing will stretch or shrink the content to fit the new window size.

For example, if a rectangle spans from (0, 0) to (200, 200) in a 400x400 window and the window is resized to 800x800, it will occupy only one-fourth of the space unless adjustments are made.

Re-rendering and Scaling

Modern applications often re-render content based on the new size. This ensures that the content scales appropriately.

Using SDL, you might handle this in the event loop by responding to SDL_WINDOWEVENT_SIZE_CHANGED or SDL_WINDOWEVENT_RESIZED.

Here’s an example that redraws content upon resizing:

#include <SDL.h>
#include <iostream>

void DrawRectangle(SDL_Renderer*, int, int) {/*...*/}; int main() { SDL_Init(SDL_INIT_VIDEO); SDL_Window* window = SDL_CreateWindow("Resize Example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 400, 400, SDL_WINDOW_RESIZABLE); SDL_Renderer* renderer = SDL_CreateRenderer( window, -1, SDL_RENDERER_ACCELERATED); bool running = true; SDL_Event event; while (running) { while (SDL_PollEvent(&event)) { if (event.type == SDL_QUIT) { running = false; } if (event.type == SDL_WINDOWEVENT && (event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED || event.window.event == SDL_WINDOWEVENT_RESIZED)) { int width, height; SDL_GetWindowSize(window, &width, &height); SDL_SetRenderDrawColor( renderer, 0, 0, 0, 255); SDL_RenderClear(renderer); DrawRectangle(renderer, width, height); SDL_RenderPresent(renderer); } } } SDL_DestroyRenderer(renderer); SDL_DestroyWindow(window); SDL_Quit(); return 0; }
On resizing the window, the rectangle redraws proportionally in the new dimensions.

Best Practices

  • Use relative coordinates or scaling factors to adapt your content dynamically.
  • Test how resizing affects performance since re-rendering large scenes can be costly.
  • Consider locking aspect ratios to avoid unwanted distortions if your application has strict graphical requirements.

By properly handling resizing, you can ensure a polished experience for users regardless of window size.

Answers to questions are automatically generated and may not have been reviewed.

sdl2-promo.jpg
Part of the course:

Game Dev with SDL2

Learn C++ and SDL development by creating hands on, practical projects inspired by classic retro games

Free, unlimited access

This course includes:

  • 62 Lessons
  • 100+ Code Samples
  • 91% Positive Reviews
  • Regularly Updated
  • Help and FAQ
Free, Unlimited Access

Professional C++

Comprehensive course covering advanced concepts, and how to use them on large-scale projects.

Screenshot from Warhammer: Total War
Screenshot from Tomb Raider
Screenshot from Jedi: Fallen Order
Contact|Privacy Policy|Terms of Use
Copyright © 2024 - All Rights Reserved