2012-08-28 4 views
2

J'utilise le Gloss Library pour une programmation de jeux, et ont obtenu au point où je suis avoir le plus de difficulté à disposer différents éléments sur l'écran. Je me demandais s'il était possible de limiter un type Picture pour afficher uniquement une zone rectangulaire de l'écran. La bibliothèque a déjà le concept d'une zone rectangulaire du type Extent, mais il ne semble pas être un moyen de « soustraire » des images. S'il y avait une façon de faire cela, alors il semble que créer un type View ou similaire qui prend en charge une certaine zone de l'écran - qui peut également contenir des vues supplémentaires, et avec des substitutions de coordonnées appropriées entre eux, etc - serait un objectif réalisable et raisonnable. Mais sans moyen de limiter les zones de dessin, cela ne semble pas possible dans le cadre Gloss.Avec la bibliothèque graphique Haskell Gloss, est-il possible de masquer une image à afficher seulement dans une certaine mesure (par exemple dans un rectangle)

+2

Je ne crois pas (mais difficile à justifier dans une réponse appropriée). BTW, un terme commun pour cela est l'écrêtage. –

+1

Bien qu'il ne semble pas que le gloss vous permette de le faire directement, vous devriez pouvoir facilement l'émuler en construisant une forme de «frame» et en superposant le cadre sur l'image dont vous voulez limiter la taille. –

+1

Coupure! Savait qu'il y avait un mot! Si c'était juste une image que je voulais découper alors oui, elle pourrait être placée dans un cadre de couleur de fond. Mais si vous voulez une image coupée * dans un autre, alors la technique de cadrage ne fonctionnera pas, au moins, je ne peux pas imaginer comment cela se passerait. C'est une honte, parce que Gloss est si facile à utiliser, et dans tous les autres cas a tout ce dont j'ai besoin. –

Répondre

1

Il semble que l'écrêtage est pas pris en charge Gloss.

Néanmoins, le dessin récursif des vues, chacune avec son propre système de coordonnées relatives, semble toujours être un objectif viable et utile, et je suis en train d'écrire du code pour cela maintenant.

Questions connexes