我必须实现一个我不确定如何继续的解决方案,因为我不太了解这种语言(C#)。
让我解释一下: 目标是让某些东西允许用户从项目中选择一个区域(具有圆形形式)。 因此,想法是在区域上放置带有数字的图像(所以最后它看起来像一个时钟),并从用户点击的数字中获取区域。
所以我的问题是:是否可以在图像中创建可点击区域? (或者如果你有另一个解决这个功能的解决方案,我是开放的)
提前致谢!
编辑>>这适用于WinForm应用程序,而不是网站。
答案 0 :(得分:2)
你为什么不实施这样的东西?
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
public class Zone
{
public Region Region { get; private set; }
public Action<MouseEventArgs> Click { get; private set; }
public Zone(Region zoneRegion, Action<MouseEventArgs> click)
{
this.Region = zoneRegion;
this.Click = click;
}
}
public class PictureBoxWithClickableZones : PictureBox
{
private readonly List<Zone> zones = new List<Zone>();
public void AddZone(Zone zone)
{
if (zone == null)
throw new ArgumentNullException("zone");
this.zones.Add(zone);
}
protected override void OnMouseClick(MouseEventArgs e)
{
base.OnMouseClick(e);
foreach (var zone in this.zones.Where(zone => zone.Region.IsVisible(e.Location)))
zone.Click(e);
}
}
如果你有时间,你可以制作适当的组件,即使在Visual Studio的WinForms Designer中也可以使用。
答案 1 :(得分:2)
感谢大家的回答,其中有一些有趣的东西。
不幸的是,由于我必须非常快地开发它,我只是创建了一个图像,我将在其上捕获onclick事件,然后使用Cursor.Position捕获用户单击的区域,如下所示:
int X = pictureBox.PointToClient(Cursor.Position).X;
int Y = pictureBox.PointToClient(Cursor.Position).Y;
也许不是“清洁”的方式,但它的工作原理! 不管怎样,谢谢!
答案 2 :(得分:1)
虽然不再那么受欢迎,you can use the <map>
tag要做到这一点。
<img src="planets.gif" width="145" height="126" alt="Planets" usemap="#planetmap" />
<map name="planetmap">
<area shape="rect" coords="0,0,82,126" href="sun.htm" alt="Sun" />
<area shape="circle" coords="90,58,3" href="mercur.htm" alt="Mercury" />
<area shape="circle" coords="124,58,8" href="venus.htm" alt="Venus" />
</map>
修改强>
由于这需要WinForms解决方案,或许本文可以为您提供帮助。
答案 3 :(得分:0)
查看Html图像地图。
将花费您大约5分钟来学习如何使用。
在标签中,您可以应用并映射属性 比定义你的地图区域和链接
这是一个快速的谷歌回复 http://www.javascriptkit.com/howto/imagemap.shtml