Eisfläche

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
majinv
User
Beiträge: 42
Registriert: Mittwoch 14. April 2010, 13:21

@chrisber... ich freu mich, dass sich jmd aktiv mit mir unterhält :) .... wollte ich nur mal gesagt haben ;)

hmmm, stellt das data array dann das bild dar, sprich jeden einzelnen pixel?
dann müsste ich das ja vorher auslesen können...noch dazu müsste ich dann
von der position der maus, das jeweilige pixel ableiten können... im fullscreen sicher
noch machbar, aber variabel?
ich glaube nicht... würde das dann nicht auch einen ziemlichen overhead erzeugen?
majinv
User
Beiträge: 42
Registriert: Mittwoch 14. April 2010, 13:21

Du hast mich aber auf eine Idee gebracht und ich hab mal nen prototypen geschrieben...
ich verfolge nun eine andere technik... allerdings ist das kein malen mehr...
sondern eher einfaches "ausblenden" ander jeweiligen stelle... als workaround...
vielleicht fällt da jmd was ein, wie ich es schaffen könnte, dass ich statt des lokalen ausblendens...
eine art zeichnen emulieren kann...?

Code: Alles auswählen

import pygame

screen = pygame.display.set_mode((1000,500))
blueSquare = pygame.Surface((100,100))
blueSquare.fill((0,0,255))
redSquare = pygame.Surface((100,100))
redSquare.fill((255,0,0))
redSquare.set_colorkey((0,0,1))
column = pygame.Surface((20,20))
column.fill((0,0,1))

columnx = 0
columnAdd = 1

myClock = pygame.time.Clock()
running = True
while running:
    for event in pygame.event.get():
        if (event.type == pygame.QUIT or event.type == pygame.KEYDOWN and
            event.key == pygame.K_ESCAPE):
            running = False
    screen.fill((255,255,255))
    redSquare.fill((255,0,0))
    redSquare.blit(column,(pygame.mouse.get_pos()))
    screen.blit(blueSquare,(50,50))
    screen.blit(redSquare,(0,0))
    pygame.display.flip()
    myClock.tick(40)

    columnx += columnAdd
    if columnx >= 80 or columnx < 0:
        columnAdd *= -1
majinv
User
Beiträge: 42
Registriert: Mittwoch 14. April 2010, 13:21

Aloah, falls das Thema von jemandem anderen gesucht wird, mein letzter prototyp...
es ist noch nicht optimal, geht aber in die richtung die ich haben wollte, sollte jemand einen
weg über die drawing methode von pygame finden, das gleiche ziel zu erreichen, wäre ich mehr als
nur begeistert es hier zu lesen...

viele grüße
majin

Code: Alles auswählen

import pygame

screen = pygame.display.set_mode((1000,500))
blueSquare = pygame.Surface((300,300))
blueSquare.fill((0,0,255))
redSquare = pygame.Surface((300,300))
redSquare.fill((255,0,0))
redSquare.set_colorkey((0,0,1))
brush = pygame.Surface((10,10))
brush.fill((0,0,1))

painting = False

running = True
while running:
    for event in pygame.event.get():
        if (event.type == pygame.QUIT or event.type == pygame.KEYDOWN and
            event.key == pygame.K_ESCAPE):
            running = False
        if event.type == pygame.MOUSEBUTTONDOWN:
            painting = True
        if event.type == pygame.MOUSEBUTTONUP:
            painting = False
    if painting:
        redSquare.blit(brush,pygame.mouse.get_pos())
   
    screen.fill((255,255,255))
    screen.blit(blueSquare,(50,50))
    screen.blit(redSquare,(0,0))
    pygame.display.flip()
Antworten