मैंने स्क्रीन बनाने के लिए इस साइट पर कहीं और प्रदान किए गए कैनवास कोड का उपयोग किया है जहां मेरे पास गैर-पारदर्शी हिस्सों अनियमित आकार वाले कई ओवरलैपिंग पारदर्शी पीएनजी हैं। मैं कर्सर के नीचे रंग प्राप्त कर सकता हूं और यह बहुत अच्छा है। लेकिन मेरे आकार सभी एक ही रंग हैं और मुझे विशेष आकार की आईडी प्राप्त करने के लिए एक तरीका चाहिए, इसलिए मुझे पता है कि किस पर क्लिक किया गया था। देश तक पहुंचने के लिए ओवरलैपिंग पीएनजी से बने मानचित्र की कल्पना करें और आप यह जानना चाहते हैं कि किस देश पर क्लिक किया गया था। जो मैं बता सकता हूं, आईडी पहचान केवल आयताकार क्षेत्रों पर लागू होती है। कोई सुझाव?क्या एचटीएमएल 5 हिट पहचान संभव है?
$('#myCanvas').click(function(e){
var position = findPos(this);
var x = e.pageX - position.x;
var y = e.pageY - position.y;
var coordinate = "x=" + x + ", y=" + y;
var canvas = this.getContext('2d');
var p = canvas.getImageData(x, y, 1, 1).data;
var hex = "#" + ("000000" + rgbToHex(p[0], p[1], p[2])).slice(-6);
alert(hex);
});
इस कोड को हो जाता है और रंग (findPos और rgbToHex अलग कार्यों स्पष्टता के लिए दूर छोड़ दिया जाता है) प्रदर्शित करता है। मुझे एक आईडी चाहिए! मदद!
यह जटिल है लेकिन वास्तव में काफी चालाक है। मेरे क्लाइंट में एक ऐप है जिसमें कई सौ ओवरलैपिंग छवियां हैं (एक मानचित्र की तरह) और प्रत्येक छवि कम-से-कम आयताकार है इसलिए मामला # 1 अधिकतर समय काम करेगा। रंगीन मूल्य> 0 लौटने वाले केवल एक के लिए संबंधित रंगों के लिए उम्मीदवारों के माध्यम से लूपिंग एक आदर्श समाधान है। –
धन्यवाद। अक्सर मैं स्रोत कोड प्रदान करता हूं, लेकिन ऐसा करने के लिए यह थोड़ा लंबा था। –
कोई स्रोत आवश्यक नहीं है। यह पर्याप्त कस्टम है कि यह उद्देश्य को पूरा नहीं करेगा। :) मैं पहले से ही यह काम कर रहा हूं और मेरे ब्लॉग पर पोस्ट करने की सोच रहा था। यह बहुत उपयोगी है। –