Как я могу выделить только определенные области изображения? - PullRequest
6 голосов
/ 10 августа 2011

У меня есть изображение человеческого скелета с приблизительно 60 областями, которые я хочу выделить и сделать кликабельными.Они расположены по кругу и пронумерованы от 1 до 60.

Вся идея в том, что я хочу щелкнуть по нумерации (на изображении) и выделить эту часть изображения.

Я использовал JQuery для наведения над цифрами / областью и выделения (при наведении курсора мышью), а когда пользователь нажимает на номер, я получаю нажатый номер и обрабатываю код на стороне сервера.(.NET C #)

Но я хочу, чтобы место, где я щелкаю, оставало цвет ... При наведении курсора на число и изменении цвета все в порядке ... Но я хочу, чтобы при нажатии цвет менялсяизображение / сохранено ...

Ниже приведены примеры, которые изменяют цвет при наведении курсора мышью, но при нажатии цвет не меняется.

http://davidlynch.org/js/maphilight/docs/

http://davidlynch.org/js/maphilight/docs/demo_simple.html

есть идеи, как выделить некоторые области на изображении?

пример кода ниже:

 <img class="map" src="Images/Figure_Human_Image1.png" alt="" usemap="#Skeleton17"  / >
 <map name="Skeleton17" >
 <area title="1" alt="1" href="#" shape="circle" coords="13,174,7" / >
 <area title="2" alt="2" href="#" shape="circle" coords="27,159,7" / >

How to PERMANENT highlight on the image

Ответы [ 3 ]

3 голосов
/ 10 августа 2011

Ответы об обмене изображениями будут работать. Тем не менее, делая это в изображениях, вы в конечном итоге используете большую полосу пропускания, чем вам действительно нужно использовать для этого. Произойдет одно из двух: либо люди загрузят кучу изображений, которые они никогда не загрузят, либо им придется ждать загрузки нового изображения при каждом нажатии. Для пользователей с высокоскоростным соединением это не будет проблемой, но пользователи медленных соединений (или, возможно, мобильных устройств) определенно могут испытать это как негатив.

Лучше было бы иметь только одну версию изображения, как это выглядит при первой загрузке. Хитрость заключается в том, чтобы сделать цифры на изображении прозрачными. Тогда вы можете просто сделать так, чтобы браузер пользователя изменил цвет фона при нажатии. И в качестве бонуса, если вы когда-нибудь захотите добавить другие цвета для обозначения других вещей, это тоже просто! И вы можете выделить любую комбинацию чисел.

После некоторых экспериментов я обнаружил, что атрибут style в <area> не может быть использован для установки цветов фона, поэтому вам нужно что-то еще для принудительного применения цветов. Я предлагаю <div>, расположенный в том же месте, что и каждый круг, через что-то вроде: <div id='div1' style='position:relative; top:-400px; left:5px; height:30px; width:30px; z-index:-1'>&nbsp;</div> где вы бы отрегулировали верхние / левые значения, чтобы разместить их там, где вам это нужно. Значение z-index:-1 важно, чтобы оно отображалось за изображением. Чтобы поэкспериментировать с размещением этих элементов, вы можете захотеть установить цвет фона на что-нибудь, чтобы вы могли их видеть.

Как только у вас появится прозрачное изображение и все элементы div будут размещены, вам просто понадобится немного jQuery для его активации. Примерно так:

$('area').click(function(){
    var number = $(this).attr('title');
    $('#div'+number).css('background-color', 'red');
})
1 голос
/ 10 августа 2011

Как предложил Грег Б, вы можете создавать изображения скелетов, просто изменяя выделенный номер, например:

Images/Figure_Human_Image1.png    : this is your original image with no highlight
Images/Figure_Human_Image1_h1.png : this is the skeleton image with number 1 highlighted
Images/Figure_Human_Image1_h2.png : this is the skeleton image with number 2 highlighted
and so on...

Затем вы используете jquery для переключения источника изображения с заменой правильного изображения, выделенного.Если пользователь нажал на цифру 1, вы заменяете src изображением 'Images / Figure_Human_Image1_h1.png'

. Это можно сделать, добавив событие click в area через jquery.В вашем случае атрибут заголовка области тега соответствует нажатому номеру, поэтому он будет выглядеть примерно так:

$('area').click(function(){
    var number = $(this).attr('title');
    $('img').attr('src','Images/Figure_Human_Image1_h'+number+'.png');
})
0 голосов
/ 10 августа 2011

Не думаю, что вам нужен какой-либо серверный код.

Вы можете создать 60 изображений различных выделенных скелетов, а затем, используя JavaScript, переключить источник изображения на изображение с правильным выделением

...