/// <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)); } }
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; } }
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(); } }
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(); } } }
private void AddButton_Click(object sender, RoutedEventArgs e) { _hotSpotMode = HotSpotMode.Start; }
/// <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 } }
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; } }
private void button3_Click(object sender, EventArgs e) { _hotSpotMode = HotSpotMode.Start; }