AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Automatische Skalierung bei DelphiX
Thema durchsuchen
Ansicht
Themen-Optionen

Automatische Skalierung bei DelphiX

Ein Thema von 3_of_8 · begonnen am 1. Jun 2006 · letzter Beitrag vom 2. Jun 2006
Antwort Antwort
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#1

Automatische Skalierung bei DelphiX

  Alt 1. Jun 2006, 22:47
Morgen.

Ich hab folgendes Problem: Ich will mit DelphiX programmieren, allerdings soll das ganze wenn möglich unter verschiedenen Auflösungen laufen. Wie kriege ich es hin, dass Koordinaten und Grafiken bei einer anderen Auflösung automatisch skaliert werden?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Phobeus

Registriert seit: 14. Sep 2003
Ort: Tespe
65 Beiträge
 
Delphi 7 Professional
 
#2

Re: Automatische Skalierung bei DelphiX

  Alt 2. Jun 2006, 13:39
Gar nicht. Nicht aus gutem Grunde wird heutzutage gerne 2D mit einer 3D-API realisiert, da man auf diesem Wege die Projektion entsprechend anpassen kann. Im Prinzip funktioniert dies im 2D-Bereich ähnlich - nur halt nicht automatisch, sondern es ist deine Aufgabe als Programmierer Dich darum zu kümmern. Wie man dies am besten realisiert hängt davon ab, was Du zeichnest. Bei einem Spielfeld z.B. gestaltet es sich relativ einfach, da Du dort nur ausrechnen brauchst wieviele Felder bei der neuen Auflösung angezeigt werden können und diese dann entsprechend mehr zeichnen kannst. Problematischer wird es dann bei Grafiken, die nicht auf diese Weise erweiterbar sind (meist Actionspiele, wo Flächen fix sind). Dort musst Du den entsprecheden Faktor ermitteln, den die Grafik größer werden und diese dann skalieren oder in unterschiedlichen Auflösungen bereithalten. Statt 320x240, zeichnest Du dann halt alles doppelt so groß für 640x480. Wie man sofort sieht, hängt dieser Trick von der Auflösung ab und nicht jede Auflösung ist skalierbar. Entsprechend kannst Du anfangen mit tote Bereiche einzufügen. Du könntest z.B. das Spielgesehen zentral zeichnen und den schwarzen Trauerrand außen herum einfach größer machen oder z.B. einfach das HUD-Leiste an der Seite oder/und unten größer oder mit mehr Informationen zeichnen.

Automatische Skalierungen sind sinnvoll IMAO nur in 3D gegegen, den auch bei 2D kann es in gewissen Konstellationen zu unschönen Nebeneffekten kommen, die man abwenden muss. Das Problem liegt daran, dass 2D sich an Pixeln orientiert und nicht wie 3D an fiktiven Einheiten. Praktisch betrachtet würde ich einen aktuellen Titel für eine fixe Auflösung entwickeln (z.B. 1024x768) und darüber hinaus mit Trauerrand oder einer Faktorskalierung arbeiten. Wenn in 30 Jahren jemand deinen Titel spielen will, wird er versuchen die größte verfügbare Auflösung zu verwenden und sich im Zweifel an seinen 80"-HD-Plasma-Screen am Pixelbrei erfreuen. Dies wird er vermutlich im Vollbild auf der Standard-Auflösung tun und sich nicht mit einer detailarme Pixelflächenbetrachtung in der höchstmöglichen Auflösung foltern.
Florian Sievert
http://www.delphigl.com/
  Mit Zitat antworten Zitat
chaoslion

Registriert seit: 1. Mär 2006
52 Beiträge
 
#3

Re: Automatische Skalierung bei DelphiX

  Alt 2. Jun 2006, 13:42
geht so:
die prozedur lässt du vor jeder Zeichenprozedur laufen
Delphi-Quellcode:
procedure CorrectTo640480(var x: Single;var y: Single;var w: Single;var h: Single );
begin
  x := x*ScreenWidth / 640;
  y := y*ScreenHeight / 480;
  w := w*ScreenWidth / 640;
  h := h*ScreenHeight / 480;
end;
so kannst du immer von 640x480 ausgehen, egal welche Auflösung du hast;
screenheight/width ist nat immer die aktuelle Auflösung.
  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 21:24 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