Quantcast
Viewing all articles
Browse latest Browse all 40524

Best way to zoom an image

I would like to learn the best way to zoom a image .
Calling ofImage resize() function for every update (when FPS is set to 25) is causing delays when the image gets bigger. Can someone suggest a better way to achieve the same. Is it possible to have a smooth zoom of the ofImage

struct ZoomingRectangle
{
  ofPoint   pos, dimension;
  double    increment_size;
  int       canvas_width, canvas_height;
  int       final_width, final_height;
  int       initial_width, initial_height;
  double    scale_value;
  ofImage   game_board, game_board_copy;

  void setup(int init_w, int init_h, int final_w, double inc_value)
  {
    canvas_width = ofGetWidth();
    canvas_height = ofGetHeight();

initial_width = init_w;
initial_height = init_h;
increment_size = inc_value;
final_width = final_w;
final_height = final_w * init_h / init_w;

game_board.loadImage("game_board_1.png");
game_board_copy = game_board;
reset_dimensions();
  }

void update()
{
if (dimension.x < final_width)
{
  dimension *= (1 + increment_size);
  scale_value *= (1 + increment_size);
}
else
{
  reset_dimensions();
}

  game_board.resize(dimension.x, dimension.y);
  pos.x = (canvas_width - dimension.x) / 2;
  pos.y = (canvas_height - dimension.y) / 2;
}

void draw()
{
  ofSetColor(114, 176, 149);
  ofRect(pos, dimension.x, dimension.y);
  game_board.draw(pos.x, pos.y);
}

void reset_dimensions()
{
  dimension.x = initial_width;
  dimension.y = initial_height;
  dimension.z = 0;

  pos.x = (canvas_width - dimension.x) / 2;
  pos.y = (canvas_height - dimension.y) / 2;
  pos.z = 0;  

  player_pos.x = player_pos.y = player_pos.z = 0;
  game_board = game_board_copy;
  scale_value = 1.0;
}

};

Viewing all articles
Browse latest Browse all 40524

Trending Articles