Hallo zusammen,
ich suche die Möglichkeit (den Befehl), ein mit pygame angezeigtes Bild (jpg)
zu drehen. Speziell hier einen Mauerstein, mit dem ein Labyrinth abgegrenzt wird,
der an der Seite des Labyrinths um 90° gedreht angezeigt wird.
Ich hatte "rotate" probliert, allerdings tat sich da nichts.
Gibt es überhaupt solch einen Befehl, ein Bild zu drehen?
Danke schonmal
mintpc
P.S: Das Bild in einem Grafikprogramm zu drehen geht natürlich, aber
so eine Lösung wäre für mich "nur zur Not".
Bilder drehen mit pygame
@mintpc: `rotate()` verändert nicht das Originalsurface sondern erstellt ein neues. Steht so in der Dokumentation.
- StefanLawl
- User
- Beiträge: 92
- Registriert: Donnerstag 7. Juni 2012, 20:23
Das hat doch BlackJack schon erklärt.mintpc hat geschrieben:Danke, dass "rotate" nicht klappt hatte ich ja schon geschrieben.
Ich wollte den Befehl, ein Bild zu drehen.
Geht das denn überhaupt???
BlackJack hat geschrieben:@mintpc: `rotate()` verändert nicht das Originalsurface sondern erstellt ein neues.
Code: Alles auswählen
>>> x = ['b','i','l','d',]
>>> x
['b', 'i', 'l', 'd']
>>> ''.join(x)
'bild'
>>> x
['b', 'i', 'l', 'd']
>>>
Code: Alles auswählen
>>> z = ''.join(x)
>>> z
'bild'
>>> x
['b', 'i', 'l', 'd']
>>>
Jetzt denk dir statt Listen und join() einfach Bilder und rotate()

Stefan
Man sagt uns wir sollen der Idee gedenken und nicht des Mannes. Denn ein Mensch kann versagen. Er kann gefangen werden. Er kann getötet und vergessen werden. Aber 400 Jahre später kann eine Idee immer noch die Welt verändern.
-V
-V
Code: Alles auswählen
#! /python26/python.exe
#! coding: utf-8
"""
Simple demonstration on rotating an Image!
"""
import pygame
from pygame.locals import *
pygame.init()
SCREENSIZE = (640, 640)
screen = pygame.display.set_mode(SCREENSIZE, 0, 32)
pygame.display.set_caption("Angle: 0°")
scrcenter = screen.get_rect().center
print scrcenter
print type(scrcenter)
# Prepare Background and Arrow:
bg = pygame.Surface(SCREENSIZE)
bg.fill((120,120,120))
arrow = pygame.Surface((120,120), SRCALPHA)
pygame.draw.rect(arrow, (255, 0, 0), (0, 0, 120, 120))
# We need an image to rotate:
rotarrow = arrow.copy()
angle = 0
# We define centerpoints for the images/sprites.
CENTER = screen.get_rect().center
ACENTER = arrow.get_rect().center
ABS_CENTER = (CENTER[0] - ACENTER[0], CENTER[1] - ACENTER[1])
#
keepGoing = True
clock = pygame.time.Clock()
while keepGoing:
clock.tick(30)
for event in pygame.event.get():
if event.type == pygame.QUIT:
keepGoing = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
keepGoing = False
elif event.key == pygame.K_RIGHT:
angle -= 5
rotarrow = pygame.transform.rotate(arrow, angle)
elif event.key == pygame.K_LEFT:
angle += 5
rotarrow = pygame.transform.rotate(arrow, angle)
# Get centerpoint of current rect
ROTCENTER = rotarrow.get_rect().center
ABS_CENTER = (CENTER[0] - ROTCENTER[0], CENTER[1]-ROTCENTER[1])
# display current angle for info:
pygame.display.set_caption("Angle: " + str(angle) + "°")
screen.blit(bg, (0,0))
screen.blit(rotarrow, ABS_CENTER)
pygame.display.flip()
Gruß!