Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mo Mai 20, 2024 05:08

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: [Abgeschlossen] Aspect ratio zu Rect
BeitragVerfasst: Di Nov 29, 2011 12:11 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Serv,

ich bekomme habe eine Video Aspect Ratio von 1,7778
Damit will ich ein Rectangle berechnen, das von der Videoquelle (1280x720) auf z.b. (1000x360) projeziert wird.

Es geht mir nur allein um das neue Rectangle berechnen, also indem fall wäre Height 360 und Top 0, aber die Width und Left Koordinate muss aus der Ratio berechnet werden.
Habe schon mehrere ansätze probiert, komme aber irgendwie nie an ein richtiges ergebnis. Entweder ist es gestreckt oder es ist zu klein...

Wäre dankbar für tips.


Zuletzt geändert von Finalspace am Di Nov 29, 2011 16:06, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Aspect ratio zu Rect
BeitragVerfasst: Di Nov 29, 2011 14:33 
Offline
DGL Member

Registriert: Sa Mär 14, 2009 17:48
Beiträge: 99
Programmiersprache: D, Java, C++
Finalspace hat geschrieben:
Serv,

ich bekomme habe eine Video Aspect Ratio von 1,7778
Damit will ich ein Rectangle berechnen, das von der Videoquelle (1280x720) auf z.b. (1000x360) projeziert wird.
[...]
Entweder ist es gestreckt oder es ist zu klein...


Könnte das daran liegen, dass 1280*720 und 1000*360 unterschiedliche Aspekt Ratios haben? Natürlich wird es gestreckt wenn du das Ratio änderst... Oder verstehe ich die Frage nicht?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Aspect ratio zu Rect
BeitragVerfasst: Di Nov 29, 2011 14:39 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
Ich nehme mal an, dass du das umgerechnete Bild in der Mitte zentriert haben willst. Dann lässt sich Left grundsätzlich immer so berechnen:
Code:
  1. Left = (Gesamtbreite - Width) / 2
  2. // z.B. (1000           - 640) / 2 = 180

Dein Ratio ist ja Breite/Höhe = 1,7778
Also einfach umstellen
Code:
  1. Ratio = Breite / Höhe                   | * Höhe
  2. Ratio * Höhe = Breite
  3.  
  4. // In deinem Fall:
  5. 1.7778 * 360 = 640

Oder habe ich das Problem falsch verstanden? Dann bitte nochmal erklären :wink:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Aspect ratio zu Rect
BeitragVerfasst: Di Nov 29, 2011 15:33 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
mrtrain hat geschrieben:
Ich nehme mal an, dass du das umgerechnete Bild in der Mitte zentriert haben willst. Dann lässt sich Left grundsätzlich immer so berechnen:
Code:
  1. Left = (Gesamtbreite - Width) / 2
  2. // z.B. (1000           - 640) / 2 = 180

Dein Ratio ist ja Breite/Höhe = 1,7778
Also einfach umstellen
Code:
  1. Ratio = Breite / Höhe                   | * Höhe
  2. Ratio * Höhe = Breite
  3.  
  4. // In deinem Fall:
  5. 1.7778 * 360 = 640

Oder habe ich das Problem falsch verstanden? Dann bitte nochmal erklären :wink:


Ja, so ähnlich habe ich das schon umgesetzt, aber es ist noch nicht ganz richtig.

Siehe folgenden code:

Code:
  1.      
  2. customRatio = 4 / 3;
  3.      
  4. // Fit on Y
  5. h = screen.Height;
  6. y = 0;
  7. w = (int)(customRatio * screen.Height);
  8. x = (screen.Width - w) / 2;
  9. return new Rectangle(x, y, w, h); // Left, Top, Width, Height
  10.  


Erstes Bild, passt sauber, Screen.Width ist größer als w:
Bild

Zweites Bild, passt auch, Screen.Width ist größer als w (Screen.Heigth wurde in der höhe verkleinert)
Bild

Drittes Bild, passt nicht, Screen.Width ist kleiner als w (In diesem Fall, müsste Width und Height sich anpassen oder?)
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Aspect ratio zu Rect
BeitragVerfasst: Di Nov 29, 2011 15:54 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
Im letzten Fall musst du, wenn du kein abgeschnittenes Bild haben willst, die Breite übernehmen und die Höhe daran anpassen. Also so:
Code:
  1. customRatio = 4 / 3;
  2.      
  3. // Fit on Y
  4. w = screen.Width;
  5. x = 0;
  6. h = (int)(screen.Width / customRatio);
  7. y = (screen.Height - h) / 2;
  8. return new Rectangle(x, y, w, h); // Left, Top, Width, Height


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Aspect ratio zu Rect
BeitragVerfasst: Di Nov 29, 2011 16:05 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
So funktioniert es.

Code:
  1.                    
  2.                     if ((int)(customRatio * screen.Height) <= screen.Width)
  3.                     {
  4.                         h = screen.Height;
  5.                         y = 0;
  6.                         w = (int)(customRatio * screen.Height);
  7.                         x = (screen.Width - w) / 2;
  8.                     }
  9.                     else
  10.                     {
  11.                         w = screen.Width;
  12.                         x = 0;
  13.                         h = (int)(customRatio * screen.Width);
  14.                         y = (screen.Height - h) / 2;
  15.                     }
  16.  


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]