il progetto è ancora in fase di sviluppo, quindi per adesso è ancora piuttosto leggero. Vi posto comunque tutto il codice, anche se per esempio la palette( e altro ) non dovrebbe interessarvi.

html:
codice:
<!DOCTYPE html>
<html>
  <head>
    <link href="stylesheet.css" rel="stylesheet" type="text/css">
    <script src="ExternJava.js" type="text/javascript"></script> 
  <title> PAINT </title>
  </head>
  <body style="margin: 0px; padding: 0px; background-color: grey;" onload="setDrawing();">  
      <div id="IDmain_menu">
        <div class="menu_option" id="IDmenu_file" align="center" onmouseover="menu_option_over('IDmenu_file');" onmouseout="menu_option_out('dyn_menu');">
          File
        </div>
      </div>
      
      <div id="IDpalette">
      	<div class="palette_element" id="pencil" onclick="setTool(0);" onmouseover="change_to_pointer('pencil');"> <img src="images/pencil.jpg" class="imageElPalette"/> </div>
      	<div class="palette_element" id="rubber" onclick="setTool(1);" onmouseover="change_to_pointer('rubber');"> <img src="images/rubber.jpg" class="imageElPalette"/> </div>
      	<div class="palette_element" id="circle" onclick="setTool(2);" onmouseover="change_to_pointer('circle');"> <img src="images/circle.jpg" class="imageElPalette"/> </div>
      	<div class="palette_element" id="square" onclick="setTool(3);" onmouseover="change_to_pointer('square');"> <img src="images/square.jpg" class="imageElPalette"/> </div>
      	
      	<select id="IDcolor" name="Color_pen" style="width: 80%; position: absolute; top: 50%; left: 10%;">
      		<option value="red"> Rosso </option>
      		<option value="yellow"> Giallo </option>
      		<option value="red"> Verde </option>
      		<option value="red"> Nero </option>
      		<option value="red"> Blu </option>
      		<option value="custom"> Personalizzato </option>
      	</select>
      	
      	<input type="text" id="IDwidth" style="position: absolute; width: 80%; left: 10%; top: 55%; "/>
      </div>
      <div id="expandButton" onclick="click_expand_button();" onmouseover="expand_button_hover();" onmouseout="window.document.getElementById('expandButton').style.opacity= 1;"> < </div>
      
      <div id="sheet">
      	<canvas id="IDcanvas"> </canvas>
  	  </div>	
  </body>
</html>
javascript:
codice:
const MAX_OPTION= 2;
var btnExpand= 1;
var menu_exist= 0;


var penStyle= {
	Color: "black",
	Width: 1
}


var Tools= {
	Pencil: 0,
	Rubber: 0,
	Circle: 0,
	Square: 0
}


function setDrawing()
{
	var elPalette= window.document.getElementsByClassName("palette_element");
	var IDpalette= window.document.getElementById("IDpalette");
	var Ecanvas= window.document.getElementById("IDcanvas");
	var index= 0;
	
	for( var r= 0; r < (elPalette.length/2 + elPalette.length%2); ++r )
	{
		for( var c= 0; c < 2; ++c )
		{
			index= r*2 + c;
			elPalette[index].style.height= Math.floor(elPalette[index].offsetWidth) + "px";
			elPalette[index].style.top= Math.floor(0.05*IDpalette.offsetHeight*(r+1) + elPalette[index].offsetHeight*r) + "px";
			elPalette[index].style.left= Math.floor(0.12*IDpalette.offsetWidth*(c+1) + elPalette[index].offsetWidth*c) + "px";
		}	
	}
	
	var canvHeight= window.innerHeight - 60;
	var canvWidth= window.innerWidth - 60;
	
	Ecanvas.setAttribute("width", canvWidth );
	Ecanvas.setAttribute("height", canvHeight );
	
	var new_sheet= Ecanvas.getContext("2d");
	
	new_sheet.fillStyle= "#FF0000";
	new_sheet.fillRect( 20, 30, 400, 500 );
	
	//Ecanvas.onclick= draw_Down();
}


function menu_option_over( elementID )
{	
	var option_menu= window.document.getElementById( elementID );
	var submenu= window.document.createElement("div");
	window.document.body.appendChild(submenu);
	submenu.setAttribute("id", "dyn_menu");
	submenu.setAttribute("onmouseover", "setMenu_exist(1);");
	submenu.setAttribute("onmouseout", "setMenu_exist(0);");
	//submenu.addEventListener("mouseover", setMenu_exist(1), false);
	//submenu.addEventListener("mouseout", setMenu_exist(0), false);


	submenu.style.position= "absolute";
	submenu.style.width= option_menu.clientWidth * MAX_OPTION + "px";
	submenu.style.height= option_menu.clientHeight * MAX_OPTION + "px";
	submenu.style.top= option_menu.clientHeight + "px";
	submenu.style.left= window.document.getElementById("IDpalette").offsetWidth + window.document.getElementById("IDpalette").offsetLeft + "px";
	submenu.style.border= "2px solid white";
	submenu.style.background= "black";
	
	create_menu_items("dyn_menu", "Nuovo", "salva");
}	


function setMenu_exist( setter )
{ menu_exist= setter; }


function create_menu_items()
{
	const SIZE_ARG= arguments.length-1;
	var current_menu= window.document.getElementById( arguments[0] );
	var items= new Array(SIZE_ARG);
	
	for( var i= 0; i < SIZE_ARG; ++i )
	{
		items[i]= window.document.createElement("div");
		current_menu.appendChild(items[i]);
		items[i].setAttribute("id", "option" + i );
		items[i].setAttribute("align", "center");
		items[i].setAttribute("onmouseover", "setMenu_exist(1);");
		items[i].setAttribute("onmouseout", "setMenu_exist(0);");
		//items[i].addEventListener("mouseover", setMenu_exist(1), false);
		//items[i].addEventListener("mouseout", setMenu_exist(0), false);
		
		items[i].style.position= "absolute";
		items[i].style.width= "100%";
		items[i].style.height= "30px";
		items[i].style.top= i*30 + "px";
		items[i].style.fontSize= "20px";
		items[i].style.color= "white";
		window.document.getElementById("option" + i).innerHTML= arguments[i+1];
		
	}
}


/*function option_hover( elementID )
{
	var cur_opt= window.document.getElementById(elementID);
	cur_opt.style.background= "rgba(255, 255, 255, 0.4)";
}*/


/*function check_dyn_menu_hover( elementID )
{
	window.alert(event.offsetX);
	
	var checking= true;		
	var cur_menu= window.document.getElementById( elementID );
	
	if (event.offsetX < 0 || event.offsetX > cur_menu.offsetWidth)
		checking= false;
		
	if (event.offsetY < 30 || event.offsetY > (30 + MAX_OPTION*30))	
		checking= false;
	
	return checking;
}*/


function menu_option_out( elementID )
{
	var del_menu= window.document.getElementById( elementID );
	
	if( /*del_menu!= null ||*/ menu_exist== 0 )
		window.document.body.removeChild(del_menu);
}


var IDinterval= 0;


function click_expand_button()
{
	IDinterval= window.setInterval(palette_expand, 1 );
}


function expand_button_hover()
{
	var btn= window.document.getElementById("expandButton");
	
	btn.style.cursor= 'pointer';
	btn.style.opacity= 0.8;
}


function change_to_pointer( elementID )
{
	window.document.getElementById(elementID).style.cursor= "pointer";
}


function palette_expand()
{
	var palette= window.document.getElementById("IDpalette");
	var button_expand= window.document.getElementById("expandButton");
	var first_menu= window.document.getElementById("IDmain_menu");
	
	if( btnExpand== 1)
	{
		palette.style.left= (palette.offsetLeft - 1) + "px";
		button_expand.style.left= (button_expand.offsetLeft - 1) + "px";
		first_menu.style.left=  (first_menu.offsetLeft - 1) + "px";
	}
	
	if( btnExpand== -1)
	{
		palette.style.left= ( palette.offsetLeft + 1 ) + "px";
		button_expand.style.left= ( button_expand.offsetLeft + 1 ) + "px";
		first_menu.style.left=  (first_menu.offsetLeft + 1) + "px";
	}
	
	if( palette.offsetLeft== -(palette.clientWidth) )
	{
		window.clearInterval(IDinterval);
		button_expand.innerText= ">";
		btnExpand= -1;
	}
	
	if ( palette.offsetLeft== 0 ) 
	{
		window.clearInterval(IDinterval);
		button_expand.innerText= "<";
		btnExpand= 1;
	}
}


function setTool( mod )
{
	Tools.Pencil= 0; Tools.Rubber= 0; Tools.Circle= 0; Tools.Square= 0;
	
	switch( mod )
	{
		case 0: Tools.Pencil= 1; break;
		case 1: Tools.Rubber= 1; break;
		case 2: Tools.Circle= 1; break;
		case 3: Tools.Square= 1; break;
	}
}


function draw_Down()
{
	//penStyle.Color= window.getElementById("IDcolor").value;
	window.alert("ciao");
	//penStyle.Width= 
}
css:
codice:
html, body{
    width: 100%;
    height: 100%;
    margin: 0px;
    overflow: hidden;
}


#IDpalette{
    position: absolute;
    background-color: red;
    width: 10%;
    top: 0px;
    height: 100%;
    z-index: 0;
}


#expandButton{
	position: absolute;
	width: 30px;
	height: 60px;
	bottom: 0px;
	left: 10%;
	background-color: red;
	text-align: center;
	line-height: 65px;
	font-size: 40px;
	font-weight: bold;
}


#sheet{
	width: 100%;
	height: 100%;
	position: absolute; 
	background-color: grey;
	z-index: -1;
}


#IDmain_menu{
    position: absolute;
    background-color: black;
    height: 30px;
    width: 100%;
    left: 10%;
}


#IDcanvas{
	position: absolute;
	top: 40px;
	left: 40px;
	background-color: white;
}


.menu_option{
    position: relative;
    height: 100%;
    width: 5%;
    border: 2px solid white;
    border-bottom-width: 0px;
    border-top-width: 0px;
    color: white;
    font-size: 20px;
}


.palette_element{
	position: absolute;
	width: 32%;
	border: 1px solid black;
	margin: 0px;
}


.imageElPalette{
	position: absolute;
	width: 100%;
	height: 100%;
}
ringrazio chiunque abbia voglia di darci un occhiata