Esempio n. 1
0
        /// <summary>
        /// When Metadata.xml is downloaded, let's parse it and create a list of ImageMetadata objects. ZOrder can be used to uniquely identify an image. So let's use it as the key of our dictionary for faster searching.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            XDocument doc = XDocument.Parse(e.Result);

            this._imageMetadatas = new Dictionary <int, ImageMetadata>();
            this._conversations  = new Dictionary <int, ConversationControl>();
            var imageElements = doc.Root.Elements("Image");

            foreach (XElement imageElement in imageElements)
            {
                int           zOrder   = int.Parse(imageElement.Element("ZOrder").Value);
                ImageMetadata metadata = new ImageMetadata()
                {
                    FileName = imageElement.Element("FileName").Value,
                    X        = double.Parse(imageElement.Element("x").Value),
                    Y        = double.Parse(imageElement.Element("y").Value),
                    Width    = double.Parse(imageElement.Element("Width").Value),
                    Height   = double.Parse(imageElement.Element("Height").Value),
                    ZOrder   = zOrder,
                    Tag      = imageElement.Element("Tag").Value
                };
                this._imageMetadatas.Add(zOrder, metadata);
                ConversationControl conversationControl = new ConversationControl()
                {
                    ConversationText = metadata.Tag, Visibility = Visibility.Collapsed
                };
                this.LayoutRoot.Children.Add(conversationControl);
                this._conversations.Add(zOrder, conversationControl);
            }
        }
Esempio n. 2
0
 /// <summary>
 /// Display the tag for a sub image that hit tested.
 /// </summary>
 private void HitTestImage()
 {
     for (int i = 0; i < this.msi.SubImages.Count; i++)
     {
         MultiScaleSubImage subImage = this.msi.SubImages[i];
         if (HitTest(subImage))
         {
             //ZOrder starts from 1 rather than 0.
             ImageMetadata       metadata            = this._imageMetadatas[i + 1];
             ConversationControl conversationControl = this._conversations[i + 1];
             Point topLeft = this.msi.LogicalToElementPoint(new Point(-subImage.ViewportOrigin.X / subImage.ViewportWidth, -subImage.ViewportOrigin.Y / subImage.ViewportWidth + 1 / subImage.ViewportWidth / subImage.AspectRatio));
             conversationControl.translate.X = topLeft.X;
             conversationControl.translate.Y = topLeft.Y;
             conversationControl.Visibility  = Visibility.Visible;
         }
         else
         {
             ConversationControl conversationControl = this._conversations[i + 1];
             conversationControl.Visibility = Visibility.Collapsed;
         }
     }
 }