2011-06-02 4 views
1

Je plonge dans quelque chose sans avoir suffisamment de connaissances, mais j'ai l'impression qu'il peut y avoir des solutions simples qui ne nécessitent pas d'avoir une connaissance approfondie du sujet.Image Conception du système de coordonnées

Ce que j'essaie de faire est d'avoir un système de coordonnées d'image. Fondamentalement, l'utilisateur fournira une image, comme un plan de maison. Ils peuvent ensuite cliquer sur des points de l'image et créer des marqueurs (comme google maps). La prochaine fois qu'ils récupèrent la carte, tous les marqueurs qu'ils ont ajoutés auparavant sont là et ils peuvent en ajouter de nouveaux.

J'ai besoin d'identifier les points sur lesquels ces marqueurs sont situés afin que je puisse stocker cette information. Je dois également pouvoir créer une couche sur l'image qui contient les marqueurs et les restituer aux endroits précis où ils ont été placés. J'imagine que la façon la plus simple de faire cela est d'utiliser des coordonnées de pixel ... l'inconvénient est que l'image ne sera pas une taille fixe car il y a une application web et une application IPad, donc la co Le système -ordonné doit fonctionner tant que l'image est dans le même rapport de taille.

La taille du serveur est .NET et, comme mentionné précédemment, il existe une application IPad, donc la solution doit être viable étant donné cette pile technologique.

Des idées?

Répondre

1

Au lieu d'utiliser les coordonnées de pixels en termes absolus, vous pouvez utiliser la plage 0 à 1. Le coin en haut à gauche est (0,0), en bas à droite est (1,1) et le centre de l'image est (0,5,0,5). De cette façon peu importe la taille de l'image (ou le niveau de zoom) que vous avez, les marqueurs seront toujours au même endroit.

+0

J'aime cette approche en principe et cela fonctionne bien pour stocker l'information, mais comment pourrais-je identifier où l'utilisateur a cliqué avec cette méthode? – Amasuriel

+0

Cela dépend de la technologie de présentation, mais tous (Windows Forms, WPF, iOS) vous fourniront une sorte de composant pour afficher l'image. Par exemple, dans WPF vous avez le composant Image. Le composant d'image possède un événement de souris qui vous donne les coordonnées X, Y de l'endroit où la souris a été cliquée. Dans le cas simple (sans zoom), pour calculer la valeur de la plage 0-1, il suffit de diviser cette coordonnée par la largeur ou la hauteur de l'image. Par exemple, dans une image 800x600, un clic sur le pixel (100,120) se traduit par (0,125,0.2) –

+0

Cela a du sens. Je marque cela comme la réponse; Je vais poser des questions de suivi si je suis bloqué sur les détails de mise en œuvre. Merci. – Amasuriel

0

Ma suggestion est de ne pas essayer de comprendre la corrélation entre l'image réelle et les coordonnées. La seule chose que je ferais est d'utiliser la résolution de l'image, alias 800x600 et l'utiliser pour votre grille. Puis superposez vos marqueurs en utilisant cette grille sur l'image. Les points dont vous vous souvenez seraient simplement des valeurs X et Y et peut-être un nom/identifiant de tag.

+0

Le problème est que dans des applications comme celle-ci, il est très courant que le consommateur et le fournisseur aient des tailles d'image différentes. L'image dans le serveur peut avoir 800x600 pixels, mais pour l'amour de la bande passante, l'image qui va à l'iPhone sur le fil est de 400x300. –

Questions connexes