Trucsweb.com

Forum de discussion

 Forum « Programmation Javascript » (archives)

Re: Dessiner un rectangle sur une image

Envoyé: 26 août 2004, 10h26 par jackboy


salut !

J'ai trouvé une méthode de dessiner un rectangle sur une image voici le script :

<html>
<head>
<style type='text/css'>
#mask
{
position: absolute;
border: solid 1px #000000;
}
</style>

<!-- **********************************************************-->
<!-- Permettre ici de ne pas afficher les bug explorer -->
<!-- car un erreur est crée lorsque l'usager tente un rectangle-->
<!-- vers le haut et vers la gauche -->
<!-- **********************************************************-->
<SCRIPT LANGUAGE="JavaScript">
function NoError()
{
return true;
}
window.onerror=NoError;
</SCRIPT>


<!--*********************************************-->
<!-- Permettre le dessin d'un rectangle -->
<!--*********************************************-->
<script language="JavaScript" type="text/JavaScript">
<!--
/*****************************/
var curElement = null;
var startPos = new Array(0,0);
/*****************************/
/*
* startDraw : initialise du "drag&drop"
**/
function startDraw(evt)
{
var e = null;
var newX=0;
var newY=0;
// IE
if(document.all)
{
e = window.event;
newX = e.x;
newY = e.y;
curElement = e.srcElement;
}
// Mozilla
else
{
e = evt;
newX = e.clientX;
newY = e.clientY;
curElement = e.currentTarget;
}
// placement du calque
document.getElementById("mask").style.top = newY+"px";
document.getElementById("mask").style.left = newX+"px";
document.getElementById("mask").style.width = "0px";
document.getElementById("mask").style.height = "0px";
startPos = new Array(newX, newY);
return false;
}
/*****************************/
/*
* runDraw : "drag&drop" (+/-?)
**/
function runDraw(evt)
{
var e = null;
var newX=0;
var newY=0;
// IE
if(document.all)
{
e = window.event;
newX = e.x;
newY = e.y;
}
// Mozilla
else
{
e = evt;
newX = e.clientX;
newY = e.clientY;
}
// resize du calque
if(curElement!=null)
{
document.getElementById("mask").style.width = newX - startPos[0];
document.getElementById("mask").style.height = newY - startPos[1];
}
return false;
}
/*
* endDraw : fin du drag&drop
**/
function endDraw(evt)
{
curElement = null;
return false;
}
/*
* init : initialise les gestionnaires d'évènements
**/
function init()
{
document.images.obj.onmousedown=startDraw;
document.images.obj.onmousemove=runDraw;
document.images.obj.onmouseup=endDraw;
document.getElementById("mask").onmousemove=runDraw;
document.getElementById("mask").onmouseup=endDraw;
}
/*
* getPosX : retourne la position horizontale de l'objet
**/
function GetRealOffsetLeft(inOBJ)
{
var oObj = inOBJ;
var iVal = 0;
while (oObj && oObj.tagName != "BODY") {
iVal += oObj.offsetLeft;
oObj = oObj.offsetParent;
}
return iVal;
}

function GetRealOffsetTop(inOBJ)
{
var oObj = inOBJ;
var iVal = 0;
while (oObj && oObj.tagName != "BODY") {
iVal += oObj.offsetTop;
oObj = oObj.offsetParent;
}
return iVal;
}

/*
* getZone : retourne les coordonnées relatives
* à l'image de la zone selectionnée
**/
function getZone( img, mask )
{

var src = document.images[img];
var target = document.getElementById(mask);

/* Ne pas oublier ici que le 420 est la valeur de la hauteur de l'image */
/* donc ont doit les modifiés selon les valeurs de l'image */

var hauteur = (document.getElementById(mask).offsetHeight);
var largeur = (document.getElementById(mask).offsetWidth);
var x1 = (GetRealOffsetLeft(target)-GetRealOffsetLeft(src));
var x2 = (x1 + largeur);
var y2 = (420 - (GetRealOffsetTop(target)-GetRealOffsetTop(src)));
var y1 = (y2 - hauteur);

var str = "X1 = "+ x1;
str += "\nX2 = "+ x2;
str += "\nY1 = "+ y1;
str += "\nY2 = "+ y2;
str += "\n";

str += "\n(X1,Y1) = ("+ x1;
str += ","+ y1;
str += ")";

str += "\n(X2,Y1) = ("+ x2;
str += ","+ y1;
str += ")";

str += "\n(X1,Y2) = ("+ x1;
str += ","+ y2;
str += ")";

str += "\n(X2,Y2) = ("+ x2;
str += ","+ y2;
str += ")";

str += "\n";
str += "\nHauteur = "+ (document.getElementById(mask).offsetHeight);
str += "\nLargeur = "+ (document.getElementById(mask).offsetWidth);
alert(str);
}

/*****************************/
window.onload=init;
/*****************************/
//-->
</script>
<!--*********************************************-->
<!-- Fin du dessin d'un rectangle -->
<!--*********************************************-->

</head>
<body>
<img src='test.jpg' name='obj' id='obj' width='520' height='420' border='1'>
<a href='#' onclick="getZone( 'obj', 'mask');">coordonnées</a>
<div id='mask'></div>
</body>
</html>


Réponses

 Aucune réponse à ce message... 
Aucun médias sociaux
X

Trucsweb.com Connexion

Connexion

X

Trucsweb.com Mot de passe perdu

Connexion

X

Trucsweb.com Conditions générales

Conditions

Responsabilité

La responsabilité des Trucsweb.com ne pourra être engagée en cas de faits indépendants de sa volonté. Les informations mises à disposition sur ce site le sont uniquement à titre purement informatif et ne sauraient constituer en aucun cas un conseil ou une recommandation de quelque nature que ce soit.

Aucun contrôle n'est exercé sur les références et ressources externes, l'utilisateur reconnaît que les Trucsweb.com n'assume aucune responsabilité relative à la mise à disposition de ces ressources, et ne peut être tenue responsable quant à leur contenu.

Droit applicable et juridiction compétente

Les règles en matière de droit, applicables aux contenus et aux transmissions de données sur et autour du site, sont déterminées par la loi canadienne. En cas de litige, n'ayant pu faire l'objet d'un accord à l'amiable, seuls les tribunaux canadien sont compétents.

X

Trucsweb.com Trucsweb

X

Trucsweb.com Glossaire

X

Trucsweb.com Trucsweb

X

Trucsweb.com Trucsweb

Conditions

Aucun message!

Merci.

X
Aucun message!
X

Trucsweb.com Créer un compte

Créer un compte

.
@