AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zoomen und fixieren

Ein Thema von Kingpin000 · begonnen am 22. Dez 2006 · letzter Beitrag vom 22. Dez 2006
Antwort Antwort
Kingpin000

Registriert seit: 12. Dez 2006
21 Beiträge
 
#1

Zoomen und fixieren

  Alt 22. Dez 2006, 13:13
Hallo zusammen,
ich bin dabei ein eine art brettspiel zu machen, da aber das spielfeld selber recht groß ist, wollt ich zum einen wissen wie man heranzoomt und die bewegung auf die spielfigur selber fixiert!!

danke im voraus!!

  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Zoomen und fixieren

  Alt 22. Dez 2006, 13:29
Hi,
die Frage des Heranzoomens ist nicht so leicht pauschal zu beantworten. Das Problem liegt einfach darin, dass du gleich eine ganze Menge von verschiedenen Techniken zur Verfügung hast, um dein Spiel zu realisieren. Dabei sollten die drei gängisten Methoden darin liegen, dass du auf OpenGL, DirectX oder die GDI-Funktionen zurückgreifst.
Dafür gibt es dann z.B. auch in Delphi Kapselungen, hinter der TImage Komponente stehen z.B. zugriffe auf das GDI-Framework.

Für den einfachsten Fall (einfach nur im Sinne, dass du kein Fremdkomponente verwendest), dass du hier einfach mit Bitmaps arbeitest, so kannst gibt es auch hier wieder zwei Möglichkeiten. Einerseits kannst du mit einem großen Bitmap arbeiten, dass du als TBitmap Objekt im Speicher hälst und ständig aktualisierst. Hier kannst du dann einfach (abhängig vom Zoomfaktor) einen Ausschnitt um die Koordinaten deines Ziels kopieren und dann immer nur diesen Ausschnitt anzeigen.
Alternativ kannst du aber auch einfach (wiederum abhängig vom Zoomfaktor) just in time berechnen, was gerade rund um dein Ziel angezeigt werden soll. Dabei hast du halt wirklich nur den aktuell betrachteten Ausschnitt im Speicher, ein Wechsel der Position führt dann ggf. dazu, dass du das Bild komplett neu berechnen musst.

Der erste Weg ist natürlich deutlich speicher-lastiger als der Zweite, sollte dafür aber weniger Rechenzeit benötigen, der zweite Weg wiederum benötigt mehr Rechenzeit, du hälst aber immer nur den aktuellen Ausschnitt im Speicher.

Um einen Ausschnitt schnell zu kopieren (1:1) bietet sich die Funktion BitBlt (Windows API) an, um einen Ausschnitt auch noch zu strecken/stauchen kannst du StretchBlt (auch Windows API) verwenden. Hier musst du die Handle Eigenschaft eines Ziel- und Quellcanvas, die Größe des Ausschnitts (und bei StretchBlt auch des Ziel Ausschnitts) angeben.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz