2009-04-08 7 views
4

Je mettre en œuvre une configuration sprites CSS dans mon application ASP.NET basée sur cet article ..Mise en page Optimal algorithme

http://weblogs.asp.net/zowens/archive/2008/03/05/css-sprite-for-asp-net.aspx

Dans la section "Obtenez le sprite déjà!" ... l'auteur dit ...

"Le seul vrai inconvénient à cela est que toutes vos images sont alignées verticalement.Je ne suis pas sûr que cela compte, mais la plupart des autres générateurs ont la capacité de en quelque sorte aligner les images verticalement et horizontalement. "

Je suis sûr que cela doit être un problème déjà résolu alors ma question est, "Étant donné une collection de rectangles, pouvez-vous les présenter efficacement d'une manière optimale?" (Je suppose que cela dépend de ma définition de optimal, mais étant le plus proche possible d'un carré comme un début. (Bien que ce ne soit pas réellement le cas.)) Aussi, auriez-vous besoin de tous les rectangles ou pourrait-il être fait progressivement?

+0

Pour la plupart des ordinateurs, une disposition verticale aura un meilleur comportement de cache (voir [Pourquoi le logo animé Internet Explorer organise-t-il verticalement son cadre?] (Http://blogs.msdn.com/oldnewthing/archive/2005/08 /05/448073.aspx)). Quel est le raisonnement derrière le fait de dire qu'un carré est optimal? Pourquoi la page que vous avez liée à penser que la localité de référence est un inconvénient? –

Répondre

5

Ceci est connu sous le nom de problème d'emballage rectangle. Même dans des cas très simples, trouver la solution optimale est NP-difficile, bien qu'il y ait souvent de bonnes heuristiques. L'empaquetage de rectangle de googling donne quelques algorithmes et code intéressants.

+0

Googling va probablement arriver ici maintenant. Postez une solution pas un indice :-) – Sklivvz