Stellen Sie sich vor, ich habe ein Array von Elementen, die aus einer normalisierten Position (t) und einer Breite bestehen.Beste Anpassung für Objekte fester Größe, aber mit normalisierten Positionen
struct Entity
{
float t; // left position as a percentage of the parent's size
float width; // width of the entity in absolute values
}
Sobald ich auf eine Größe für die Eltern entscheiden, kann ich einfach alle Entitäten wie folgt machen:
void Draw(Entity[] entities, float size)
{
foreach(var entity in entities)
{
var x = entity.t * size;
Draw(x, entity.width); // x corresponds to left side, not center
}
}
Ich habe eine harte Zeit, herauszufinden, wie das Minimum zu berechnen size
, die es für einen gegebenen Satz von Elementen erlaubt, dass sie gerendert werden, ohne dass ihre Grenzen sich schneiden.
Wenn Sie über den Anwendungsfall für diese neugierig sind, ist es eine Hilfefunktion, die ich brauche ein paar Kanten Fälle auf einem Noten Rendering-System zu lösen. Akkord-Labels werden am Ende des Layout-Zyklus oben auf den Noten platziert, und ihre Positionen müssen richtig mit dem entsprechenden musikalischen Inhalt ausgerichtet sein. Es gibt jedoch Fälle, in denen das Erfüllen dieser Einschränkung bedeutet, dass nicht genügend Platz auf der Kennzahl vorhanden ist, um den Kennzeichnungen zu entsprechen. Ich brauche diese Funktion, um herauszufinden, ob im Voraus nicht genug Platz ist, und wenn nicht, frage das Maß um den fehlenden Betrag.
bekommen Welche Größe Schriftarten verwenden Sie. Sie sollten mit der Größe des Textes beginnen, da Sie die Beschriftungen lesen möchten. – jdweng