コード例 #1
0
        /// <internalonly/>
        /// <devdoc>
        /// <para>Notifies the server control that caused the postback that
        /// it should handle an incoming post back event.
        /// Implements IPostBackEventHandler.</para>
        /// </devdoc>
        protected virtual void RaisePostBackEvent(string eventArgument)
        {
            ValidateEvent(UniqueID, eventArgument);

            string postBackValue = null;

            if (eventArgument != null && _hotSpots != null)
            {
                int hotSpotIndex = Int32.Parse(eventArgument, CultureInfo.InvariantCulture);

                if (hotSpotIndex >= 0 && hotSpotIndex < _hotSpots.Count)
                {
                    HotSpot     hotSpot = _hotSpots[hotSpotIndex];
                    HotSpotMode mode    = hotSpot.HotSpotMode;
                    if (mode == HotSpotMode.NotSet)
                    {
                        mode = HotSpotMode;
                    }
                    if (mode == HotSpotMode.PostBack)
                    {
                        postBackValue = hotSpot.PostBackValue;
                    }
                }
            }
            // Ignore invalid indexes silently(VSWhidbey 185738)
            if (postBackValue != null)
            {
                OnClick(new ImageMapEventArgs(postBackValue));
            }
        }
コード例 #2
0
ファイル: MainWindow.xaml.cs プロジェクト: Shujee/WebCam2
        private void MainCanvas_MouseDown(object sender, MouseButtonEventArgs e)
        {
            if (_hotSpotMode == HotSpotMode.Start)
            {
                _hotSpotStartPoint    = e.GetPosition(MainCanvas);
                _hotSpotMode          = HotSpotMode.End;
                _tempRectangle        = new System.Windows.Shapes.Rectangle();
                _tempRectangle.Stroke = Brushes.Red;
                MainCanvas.Children.Add(_tempRectangle);
                return;
            }

            if (_hotSpotMode == HotSpotMode.End)
            {
                Point   point   = e.GetPosition(MainCanvas);
                int     x       = Convert.ToInt32(Math.Truncate(Math.Min(_hotSpotStartPoint.X, point.X)));
                int     y       = Convert.ToInt32(Math.Truncate(Math.Min(_hotSpotStartPoint.Y, point.Y)));
                int     width   = Convert.ToInt32(Math.Truncate(Math.Abs(_hotSpotStartPoint.X - point.X)));
                int     height  = Convert.ToInt32(Math.Truncate(Math.Abs(_hotSpotStartPoint.Y - point.Y)));
                HotSpot hotSpot = new HotSpot(new Rect(x, y, width, height));
                MainCanvas.Children.Remove(_tempRectangle);
                _tempRectangle = null;
                AddHotSpot(hotSpot);
                _hotSpotMode = HotSpotMode.None;
                return;
            }
        }
コード例 #3
0
        protected internal override void Render(HtmlTextWriter writer)
        {
            base.Render(writer);

            if (spots != null && spots.Count > 0)
            {
                bool enabled = Enabled;
                writer.AddAttribute(HtmlTextWriterAttribute.Id, "ImageMap" + ClientID);
                writer.AddAttribute(HtmlTextWriterAttribute.Name, "ImageMap" + ClientID);
                writer.RenderBeginTag(HtmlTextWriterTag.Map);
                for (int n = 0; n < spots.Count; n++)
                {
                    HotSpot spot = spots [n];
                    writer.AddAttribute(HtmlTextWriterAttribute.Shape, spot.MarkupName);
                    writer.AddAttribute(HtmlTextWriterAttribute.Coords, spot.GetCoordinates());
                    writer.AddAttribute(HtmlTextWriterAttribute.Title, spot.AlternateText);
                    writer.AddAttribute(HtmlTextWriterAttribute.Alt, spot.AlternateText);
                    if (spot.AccessKey.Length > 0)
                    {
                        writer.AddAttribute(HtmlTextWriterAttribute.Accesskey, spot.AccessKey);
                    }
                    if (spot.TabIndex != 0)
                    {
                        writer.AddAttribute(HtmlTextWriterAttribute.Tabindex, spot.TabIndex.ToString());
                    }

                    HotSpotMode mode = spot.HotSpotMode != HotSpotMode.NotSet ? spot.HotSpotMode : HotSpotMode;
                    switch (mode)
                    {
                    case HotSpotMode.Inactive:
                        writer.AddAttribute("nohref", "true", false);
                        break;

                    case HotSpotMode.Navigate:
                        string target = spot.Target.Length > 0 ? spot.Target : Target;
                        if (!String.IsNullOrEmpty(target))
                        {
                            writer.AddAttribute(HtmlTextWriterAttribute.Target, target);
                        }
                        if (enabled)
                        {
                            string navUrl = ResolveClientUrl(spot.NavigateUrl);
                            writer.AddAttribute(HtmlTextWriterAttribute.Href, navUrl);
                        }
                        break;

                    case HotSpotMode.PostBack:
                        writer.AddAttribute(HtmlTextWriterAttribute.Href, Page.ClientScript.GetPostBackClientHyperlink(this, n.ToString(), true));
                        break;
                    }

                    writer.RenderBeginTag(HtmlTextWriterTag.Area);
                    writer.RenderEndTag();
                }
                writer.RenderEndTag();
            }
        }
コード例 #4
0
 protected internal override void Render(HtmlTextWriter writer)
 {
     if (Control.HotSpots.Count > 0)
     {
         HotSpotMode mapMode = Control.HotSpotMode;
         if (mapMode == HotSpotMode.NotSet)
         {
             mapMode = HotSpotMode.Navigate;
         }
         HotSpotMode spotMode;
         int         hotSpotIndex = 0;
         string      targetURL;
         string      text;
         foreach (HotSpot item in Control.HotSpots)
         {
             text = item.AlternateText;
             if (text != null && text.Length == 0)
             {
                 text = item.NavigateUrl;
             }
             spotMode = item.HotSpotMode;
             if (spotMode == HotSpotMode.NotSet)
             {
                 spotMode = mapMode;
             }
             if (spotMode == HotSpotMode.PostBack)
             {
                 PageAdapter.RenderPostBackEvent(writer, Control.ClientID, hotSpotIndex.ToString(CultureInfo.InvariantCulture),
                                                 null, text);
             }
             else if (spotMode == HotSpotMode.Navigate)
             {
                 targetURL = Control.ResolveClientUrl(item.NavigateUrl);
                 targetURL = Control.GetCountClickUrl(targetURL);
                 PageAdapter.RenderBeginHyperlink(writer, targetURL, true /* encode */, null, Control.AccessKey);
                 writer.Write(text);
                 PageAdapter.RenderEndHyperlink(writer);
             }
             else   //HotSpotMode.Inactive
             {
                 writer.Write(LiteralControlAdapterUtility.ProcessWmlLiteralText(text));
             }
             ++hotSpotIndex;
             writer.WriteBreak();
         }
     }
 }
コード例 #5
0
ファイル: MainWindow.xaml.cs プロジェクト: Shujee/WebCam2
 private void AddButton_Click(object sender, RoutedEventArgs e)
 {
     _hotSpotMode = HotSpotMode.Start;
 }
コード例 #6
0
        /// <internalonly/>
        /// <devdoc>
        /// <para>Sends server control content to a provided HtmlTextWriter, which writes the content
        /// to be rendered to the client.
        /// Overrides Control.Render.</para>
        /// </devdoc>
        protected internal override void Render(HtmlTextWriter writer)
        {
            if (Enabled && !IsEnabled && SupportsDisabledAttribute)
            {
                // We need to do the cascade effect on the server, because the browser
                // only renders as disabled, but doesn't disable the functionality.
                writer.AddAttribute(HtmlTextWriterAttribute.Disabled, "disabled");
            }

            _hasHotSpots = ((_hotSpots != null) && (_hotSpots.Count > 0));

            base.Render(writer);

            if (_hasHotSpots)
            {
                string fullClientID = "ImageMap" + ClientID;
                writer.AddAttribute(HtmlTextWriterAttribute.Name, fullClientID);
                writer.AddAttribute(HtmlTextWriterAttribute.Id, fullClientID);
                writer.RenderBeginTag(HtmlTextWriterTag.Map);

                HotSpotMode mapMode = HotSpotMode;
                if (mapMode == HotSpotMode.NotSet)
                {
                    mapMode = HotSpotMode.Navigate;
                }
                HotSpotMode spotMode;
                int         hotSpotIndex  = 0;
                string      controlTarget = Target;
                foreach (HotSpot item in _hotSpots)
                {
                    writer.AddAttribute(HtmlTextWriterAttribute.Shape, item.MarkupName, false);
                    writer.AddAttribute(HtmlTextWriterAttribute.Coords, item.GetCoordinates());
                    spotMode = item.HotSpotMode;
                    if (spotMode == HotSpotMode.NotSet)
                    {
                        spotMode = mapMode;
                    }
                    if (spotMode == HotSpotMode.PostBack)
                    {
                        // Make sure the page has a server side form if we are posting back
                        if (Page != null)
                        {
                            Page.VerifyRenderingInServerForm(this);
                        }
                        if ((RenderingCompatibility < VersionUtil.Framework40) || IsEnabled)
                        {
                            string eventArgument = hotSpotIndex.ToString(CultureInfo.InvariantCulture);
                            writer.AddAttribute(HtmlTextWriterAttribute.Href,
                                                Page.ClientScript.GetPostBackClientHyperlink(this, eventArgument, true));
                        }
                    }
                    else if (spotMode == HotSpotMode.Navigate)
                    {
                        if ((RenderingCompatibility < VersionUtil.Framework40) || IsEnabled)
                        {
                            String resolvedUrl = ResolveClientUrl(item.NavigateUrl);
                            writer.AddAttribute(HtmlTextWriterAttribute.Href, resolvedUrl);
                        }
                        // Use HotSpot target first, if not specified, use ImageMap's target
                        string target = item.Target;
                        if (target.Length == 0)
                        {
                            target = controlTarget;
                        }
                        if (target.Length > 0)
                        {
                            writer.AddAttribute(HtmlTextWriterAttribute.Target, target);
                        }
                    }
                    else if (spotMode == HotSpotMode.Inactive)
                    {
                        writer.AddAttribute("nohref", "true");
                    }
                    writer.AddAttribute(HtmlTextWriterAttribute.Title, item.AlternateText);
                    writer.AddAttribute(HtmlTextWriterAttribute.Alt, item.AlternateText);
                    string s = item.AccessKey;
                    if (s.Length > 0)
                    {
                        writer.AddAttribute(HtmlTextWriterAttribute.Accesskey, s);
                    }
                    int n = item.TabIndex;
                    if (n != 0)
                    {
                        writer.AddAttribute(HtmlTextWriterAttribute.Tabindex, n.ToString(NumberFormatInfo.InvariantInfo));
                    }

                    writer.RenderBeginTag(HtmlTextWriterTag.Area);
                    writer.RenderEndTag();
                    ++hotSpotIndex;
                }
                writer.RenderEndTag();  // Map
            }
        }
コード例 #7
0
ファイル: MainForm.cs プロジェクト: saintsola/WebCam
        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            if (_hotSpotMode == HotSpotMode.Start)
              {
            _hotSpotStartPoint = new Point(e.X, e.Y);
            _hotSpotMode = HotSpotMode.End;
            return;
              }

              if (_hotSpotMode == HotSpotMode.End)
              {
            int x = Math.Min(_hotSpotStartPoint.X, e.X);
            int y = Math.Min(_hotSpotStartPoint.Y, e.Y);
            int width = Math.Abs(_hotSpotStartPoint.X - e.X);
            int height = Math.Abs(_hotSpotStartPoint.Y - e.Y);
            HotSpot hotSpot = new HotSpot(new Rectangle(x, y, width, height));
            _hotSpots.Add(hotSpot);
            listView1.Items.Add(hotSpot.ToString());
            _hotSpotMode = HotSpotMode.None;
            return;
              }
        }
コード例 #8
0
ファイル: MainForm.cs プロジェクト: saintsola/WebCam
 private void button3_Click(object sender, EventArgs e)
 {
     _hotSpotMode = HotSpotMode.Start;
 }