Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Sprites drehen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Tomtitom



Anmeldungsdatum: 20.09.2004
Beiträge: 308

BeitragVerfasst am: 04.02.2006, 19:57    Titel: Sprites drehen Antworten mit Zitat

Huhu, kennt ihr mich noch mit den Augen rollen
ich habe da mal ne Frage, also ich habe ein bmp-Bild eingeladen (das übliche mit imagecreate; get ...). Ist es jetzt irgendwie möglich das Bild in 90°-Schritten zu drehen? Meine bisherigen Recherchen haben dazu nix ergeben, ich vermute mal es geht nicht so einfach.
Wie kann ich denn wenigstens auf das geGETtete Array zugreifen, so einfach wie in QB geht das ja nicht mehr. So könnte ich mir notfalls ne eigene Routine schreiben.

MfG, Tomtitom

P.S. ich werde in baldiger Bälde im Projekt-Forum sagen, an was ich gerade so rumbastle lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 04.02.2006, 21:10    Titel: Antworten mit Zitat

muddu von hand drehen. bloadhandle[4] ist der erste pixel, bload[4+sizex*sizey] der letzte.. nimm n kleines bild und schau dir die anordnung an und dann probiers halt ma zu drehen..
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Tomtitom



Anmeldungsdatum: 20.09.2004
Beiträge: 308

BeitragVerfasst am: 04.02.2006, 21:49    Titel: Antworten mit Zitat

das mit dem Bload ist noch nicht ganz das was ich wollte, aber du hast mich auf eine Idee gebracht - dies hier klappt auf jeden Fall schon mal:
Code:
DIM SHARED Sprites AS ANY PTR, Teilsprite AS ANY PTR, gedreht AS ANY PTR, dummy AS ANY PTR
SCREEN 18,32
dummy = IMAGECREATE(1,1)
Teilsprite = IMAGECREATE(32,32)
gedreht = IMAGECREATE(32,32)
Sprites = IMAGECREATE(1024, 640)
BLOAD "Sprites.bmp", Sprites

x1 = 64 'Koords eines Teilsprites
x2 = 95
y1 = 0
y2 = 31

GET Sprites, (x1, y1)-(x2, y2), Teilsprite  'Sprite einlesen
PUT (1,1), Teilsprite, PSET 'auf Bildschirm malen

FOR x = 0 TO 31     'jeden einzelnen Pixel einlesen
    FOR y = 0 TO 31
        GET Teilsprite, (x,y)-(x,y), dummy
        PUT gedreht, (y,31-x), dummy, PSET '90° nach links gedreht
    NEXT
NEXT
PUT (100,100), gedreht, PSET 'auf Bildschirm malen

GETKEY


Aber ich häts halt schön gefunden, wenn man halt irgendwie das Teilsprite direkt gedreht ausgeben kann, ohne das man was temporäres braucht oder das original überschrieben werden muss.
Falls trotzdem noch irgendeine Verbesserung hat, ruhig raus damit, vor allem was die Geschwindigkeit angeht, würde ich mich über effizienters freuen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 04.02.2006, 22:02    Titel: Antworten mit Zitat

Hüte dich beim Rotieren vor unnötigen Double-Berechnungen, die verlangsamen das Ganze erheblich..
..ansonsten sollteste dir mal den Code aus dem amerikanischen Forum ziehen:
http://www.freebasic.net/forum/viewtopic.php?t=2441&highlight=rotate
Viel Spaß beim Drehen und dreh nicht ab lachen
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Tomtitom



Anmeldungsdatum: 20.09.2004
Beiträge: 308

BeitragVerfasst am: 04.02.2006, 23:35    Titel: Antworten mit Zitat

also das Programm vom Joshy scheint ja recht gut zu sein, aber:
- für meine Ansprüche ist es schon beinahe überladen, ich brauche ja nur 90° Rotation
- dann funktioniert es nicht fehlerfrei, irgendwie wird bei meinen Sprites der Rand falsch gesetzt
- dann läuft es nur auf nicht auf meinem FBC, da ich noch einen älteren habe (hatte irgendwie noch keinen Grund zu wechseln und bei den neuen klappt chr$(255) + "X" nicht mehr ???)

Für Joshy, falls du hier mal vorbeischaust:
Zum einen das Bild, wie falsch gezeichnet wird (vergrößert). Und und wenn du den fehler erkennst und zu viel langeweile hast, würde ich mich freuen, wenn du eine schlanke Version für meine Ansprüche machst happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 05.02.2006, 01:58    Titel: Antworten mit Zitat

chr(255)+"k" für alt+f4 ist die neue version von chr(255)+"X"..
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Tomtitom



Anmeldungsdatum: 20.09.2004
Beiträge: 308

BeitragVerfasst am: 05.02.2006, 12:04    Titel: Antworten mit Zitat

MisterD hat Folgendes geschrieben:
chr(255)+"k" für alt+f4 ist die neue version von chr(255)+"X"..


ah danke, aber wieso wurde das überhaupt geändert, so kann man das jetzt sehr leicht mit chr$(255) + "K" verwechseln, was ja die lonks-Pfeiltaste ist.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 05.02.2006, 12:09    Titel: Antworten mit Zitat

schreib einfach chr(255,107) für schließen, chr(255,[72=hoch|75=links|77=rechts|80=runter]) für die Pfeiltasten und schon is das problem erledigt lächeln

geändert wurde das nach einer abstimmung im englischen forum, dass man alt+f4 statt strg+c sendet wenn man auf den schließen-knopf drückt.. is halt nich mehr dos sondern jetzt eben windows.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz