Это, казалось бы, как простая проблема только отображения полного изображения карты, и отображения координат курсора при перемещении над этим образом, чтобы соответствующими координатами изображения маски. Здесь вы могли бы сделать две вещи. Сохраняйте изображение маски черно-белым и создавайте карту каждой области, связанную с чем-то, что определяет, что вы хотите делать, когда эта область зависает. Или, измените маску на многоцветное изображение и просто сопоставьте каждый цветовой код с тем, что определяет, что вы хотите делать, когда эта область зависает. Я лично выбрал бы последнее, поскольку это намного проще, и у вас будет примерно 16 миллионов возможных зон, которые можно было бы использовать (учитывая 24-битные цвета).
Учитывая простой тип отображения:
class ZoneMap
{
public Color MappedColor { get; set; }
public Action OnHover { get; set; }
}
Вы могли бы посмотреть отображенный зону путем перевода координат мыши исходного изображения с соответствующими координатами многоцветной карты зоны изображения на, посмотрите вверх по ZoneMap введите цвет и вызовите его действие OnHover:
var spainZones = new ZoneMap[]
{
new ZoneMap { MappedColor = Color.Red, OnHover = new Action(RedHandler) },
new ZoneMap { MappedColor = Color.Blue, OnHover = new Action(BlueHandler) }
}
var color = getZoneColor(Mouse.X, Mouse.Y); // translate source mouse coords to colored zone map coords and get color
var zone = spainZones.FirstOrDefault(zm => zm.MappedColor == color);
zone.OnHover();
Я знаю, что это очень грубо. Если бы у меня появилось больше информации о том, что вы хотите делать при наведении определенной зоны, я мог бы предоставить больше.
Это близко к тому, что я хочу, я думаю. Основная идея состоит в том, чтобы обработать отдельные области отчетливо (подумайте над головоломками). Конечный результат - это то, что делает warfish.net с их игровыми картами. Я хочу представить пользователю исходное изображение, обнаружить щелчок и сделать что-то со всеми соседними пикселями одного цвета (например, заполнить область цветом) – Chris
Используя соседние пиксели того же цвета в соответствии с наложением, я имею в виду. Исходное исходное изображение предназначено только для презентаций - целью является наложение для определения областей действия изображения. – Chris
@ Крис: Правильно, будет отображаться только исходное исходное изображение. Однако, пока изображение исходного изображения и изображение карты зоны имеют одинаковый размер, вы можете легко сопоставить координаты мыши при наведении на исходное изображение на изображение карты зоны. Когда у вас будет цвет зоны, поиск правильной записи ZoneMap по цвету и вызов ее действия OnHover будет довольно тривиальным. – jrista