Python 2 - Grafica - 14

# Immagini

- La prima operazione da fare è caricare l'immagine dalla rete con il metodo load_image(<url>) di simplegui:
  palla = simplegui.load_image("http://www.salvi.mn.it/dati/palla.png")
- Ora dovremo disegnare l'immagine sul nostro pannello. Purtroppo il metodo di disegno è piuttosto complesso.
- Il metodo draw_image(<immagine>, (<x_centro_img>, <y_centro_img>), (<larg_img>, <alt_img>), (<x_dest>, <y_dest>), (<larg_dest>, <alt_dest>)[, <rotazione_radianti>]) di canvas serve a disegnare un'immagine, ad esempio:
  pannello.draw_image(palla, (raggio, raggio), dim_palla, (x,y), dim_palla)
- Questo metodo consente di copiare l'immagine sul pannello, per intero o in parte, eventualmente ridimensionandola e ruotandola.
- (<larg_img>, <alt_img>) indicano la dimensione dell'area copiata. Se sono più piccoli della dimensione dell'immagine, solo una parte verrà copiata.
- (<x_centro_img>, <y_centro_img>) indicano il centro dell'area copiata. Se si copia l'intera immagine, dovranno corrispondere al centro effettivo dell'immagine. Se si sta copiando solo un pezzo, indicheranno il centro del pezzo copiato, riferito all'intera immagine
- Se (<larg_dest>, <alt_dest>) non corrispondono a (<larg_img>, <alt_img>) l'immagine o pezzo di immagine verrà allargato o ridotto ed eventualmente deformato, se il rapporto non corrisponde
- Un esempio completo è:

      import simplegui
      import random
      larghezza = 300
      altezza = 200
      palla = simplegui.load_image("http://www.salvi.mn.it/dati/palla.png")
      dim_palla = (palla.get_width(), palla.get_height())
      raggio = dim_palla[0] / 2
      x = larghezza / 2
      y = altezza / 2
      vx = random.randrange(1,5)
      vy = random.randrange(1,5)
      def disegno (pannello):
          global x, y, vx, vy
          pannello.draw_image(palla, (raggio, raggio), dim_palla, (x,y), dim_palla)
          x += vx
          y += vy
          if x < raggio or x > larghezza - raggio:
              vx = -vx
          if y < raggio or y > altezza - raggio:
              vy = -vy
      finestra = simplegui.create_frame("Prova", larghezza, altezza, 5)
      finestra.set_canvas_background('#000080')
      finestra.set_draw_handler(disegno)
      finestra.start()

© Ing. Stefano Salvi - released under FDL licence