var $canvasDiv = $('#canvasdiv');
var canvas = document.getElementById("mycanvas");
var c = canvas.getContext("2d");
var c1 = canvas.getContext("2d");
canvas.height = $canvasDiv.innerHeight();
canvas.width = $canvasDiv.innerWidth();
c.font = "15px Arial";
function degToRad(angle){
var pi = Math.PI;
return angle * (pi/180);
}
function crtanjeGrede(l)
{
var oslonac1 = parseInt(l) + 30;
c.beginPath();
c.fillRect(30,30,l,5); //pravougaonik koji pocinje na x30 y30, duzine l koja je unos i debljine 5
c.beginPath();
c.moveTo(oslonac1,35);
c.lineTo(oslonac1 + 25,45);
c.lineTo(oslonac1 - 25,45);
c.lineTo(oslonac1,35);
c.moveTo(oslonac1 + 25, 50);
c.lineTo(oslonac1 - 25, 50);
c.stroke();
c.beginPath();
c.moveTo(30,35);
c.lineTo(55,45);
c.lineTo(5,45);
c.lineTo(30,35);
c.moveTo(30, 70);
c.lineTo(30, 400);
c.moveTo(oslonac1 , 70);
c.lineTo(oslonac1 , 400);
c.moveTo(30, 120);
c.lineTo(oslonac1, 120);
c.fillText("Fa",5,124);
c.moveTo(30, 190);
c.lineTo(oslonac1,190);
c.fillText("Ft",5,194);
c.moveTo(30, 270);
c.lineTo(oslonac1, 270);
c.fillText("Ma",5,274);
c.closePath();
c.strokeStyle = 'black';
c.stroke();
}
// ako je pravac true znaci da je po Y, false je po x
// ako je smer true znaci da je na poz stranu, false je na negativnu
function crtanjeSile(n, pravac, smer)
{
//pravac
if (pravac){
var naptka = parseInt(n) + 30;
if (smer){
c.beginPath();
c.moveTo(naptka , 24);
c.lineTo(naptka + 3, 16);
c.lineTo(naptka - 3 , 16);
c.lineTo(naptka , 24);
c.fillStyle ="#000000";
c.fill();
c.beginPath();
c.moveTo(naptka , 0);
c.lineTo(naptka , 25);
c.stroke();
c.closePath();
} else {
c.beginPath();
c.moveTo(naptka , 41);
c.lineTo(naptka + 3, 49);
c.lineTo(naptka - 3 , 49);
c.lineTo(naptka , 41);
c.fillStyle ="#000000";
c.fill();
c.beginPath();
c.moveTo(naptka, 41);
c.lineTo(naptka, 66);
c.stroke();
c.closePath();
}
}else{
}}
function crtanjeSile1(b, pravac1, smer1){
if(pravac1){
var naptka = parseInt(b) + 30;
if(smer1 == false){ //treba samodorada da li se sila crta iznad ili ispod X ose
//var naptka = parseInt(n) + 30;
c.beginPath(); //strelica nadesno
c.moveTo(naptka - 1, 25);
c.lineTo(naptka - 9, 22);
c.lineTo(naptka - 9, 28);
c.lineTo(naptka - 1, 25);
c.fillStyle ="#000000";
c.fill();
c.beginPath();
c.moveTo(naptka - 1, 25);
c.lineTo(naptka - 26, 25);
c.strokeStyle = 'black';
c.stroke();
c.closePath()
}else{
c.beginPath(); //strelica u levo
c.moveTo(naptka + 1 , 40);
c.lineTo(naptka + 9 , 37);
c.lineTo(naptka + 9 , 43);
c.lineTo(naptka + 1 , 40);
c.fillStyle ="#000000";
c.fill();
c.beginPath();
c.moveTo(naptka + 1, 40);
c.lineTo(naptka + 26, 40);
c.stroke();
c.closePath();
}
}else{
c.beginPath();
c.closePath();
}
}
//crtanje gerbera je bilo ovde
function aksijalnesile(l, a, intX, X){ //crtanje aksijalnih sila
var polaznatka = parseInt(l) + 30;
var duzina = parseInt(a) + 30;
if(pravac1){
if(smer1){
c.beginPath();
c.moveTo(polaznatka, 120);
//c.fillRect(polaznatka,120,duzina - polaznatka, -10); ova funkcija radi isto
c.lineTo(polaznatka, 110);
c.lineTo(duzina, 110);
c.lineTo(duzina, 120);
c.closePath();
c.fill();
c.textAlign = 'center';
c.fillText(intX.toFixed(2), polaznatka, 105);
c.textAlign = 'end';
c.fillText(intX.toFixed(2), duzina - 2, 105);
c.stroke();
}else{
c.beginPath();
c.moveTo(polaznatka, 120);
c.lineTo(polaznatka, 130);
c.lineTo(30, 130);
c.lineTo(30, 120);
c.closePath();
c.fill();
c.textAlign = 'center';
c.fillText(intX.toFixed(2), polaznatka, 145);
c.textAlign = 'start';
//c.fillText(intX.toFixed(2), 30 + 1, 135);
c.stroke();
}
}else{
}
}
function transverzalnesile(l, a, intY, Y){ //crtanje transverzalnih sila
var polaznatka = parseInt(l) + 30;
var duzina = parseInt(a) + 30;
if(pravac){
if(smer){
c.beginPath();
c.moveTo(polaznatka, 190);
c.lineTo(polaznatka, 180);
c.lineTo(30, 180);
c.lineTo(30, 190);
c.closePath();
c.fill();
c.textAlign = 'center';
c.fillText(intY.toFixed(2), polaznatka, 215);
c.textAlign = 'start';
//c.fillText(intX.toFixed(2), 30 + 1, 135);
c.stroke();
}else{
c.beginPath();
c.moveTo(polaznatka, 190);
//c.fillRect(); ova funkcija radi isto
c.lineTo(polaznatka, 180);
c.lineTo(duzina, 180);
c.lineTo(duzina, 190);
c.closePath();
c.fill();
c.textAlign = 'center';
c.fillText(intY.toFixed(2), polaznatka, 175);
c.textAlign = 'end';
c.fillText(intY.toFixed(2), duzina - 2, 175);
c.stroke();
}
}else{
}
}
$("#sub").click(function() {
//debugger;
var duzina = $("#Duzina").val();
var inten = $("#inten").val();
var naptka = $("#naptka").val();
var napugao = $("#napugao").val();
var gerber1 = $("#gerber1").val();
var gerber2 = $("#gerber2").val();
var inten = parseInt(inten , 10);
var napugao = parseInt(napugao, 10 );
var intX = inten * Math.cos(degToRad(napugao)).toFixed(3); // funkcija .toFixed() zaokruzuije na 3 decimale da bi sin 0 bio 0, a ne !=0
if (intX !== 0){
pravac1 = true;
if (intX > 0){
smer1 = true;
}else{
smer1 = false;
}
}else{
pravac1 = false;
}
crtanjeSile1(naptka, pravac1, ); //skinut parametar smer1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
var intY = inten * Math.sin(degToRad(napugao)).toFixed(3); // funkcija .toFixed() zaokruzuije na 3 decimale da bi sin 0 bio 0, a ne !=0
if (intY !== 0){
pravac = true;
if (intY > 0){
smer = true;
}else{
smer = false;
}
//crtanjeSile(naptka, pravac, smer);
}else{
pravac = false;
}
crtanjeSile(naptka, pravac, smer);
var Y = inten * Math.sin(degToRad(napugao)).toFixed(3);
var X = inten * Math.cos(degToRad(napugao)).toFixed(3);
var a = parseInt(naptka) + 30;
function move(y, naptka)
{
c.beginPath();
c.moveTo(naptka + 30, y + 50);
c.lineTo(naptka + 50, y + 50);
c.stroke();
}
crtanjeGrede(duzina);
move(Y, naptka);
aksijalnesile(naptka, duzina, intX, X);
transverzalnesile(naptka, duzina, intY, Y);
});
* {
margin: 0;
padding: 0;
}
#logo{
border-radius: 10px;
padding: 1px;
}
.gore{
background-color: black;
width: 100%;
padding: 3px;
color: white;
margin: 0;
margin-top: 0;
}
.unos{
margin-top: 20px;
padding: 3px;
width: 80%;
margin: 0 auto;
height: auto;
}
.unos2{
margin-top: 20px;
}
form{
width: 500px;
margin: 0 auto;
}
.imput{
width= 100%;
}
.forma{
padding: 3px;
}
input{
margin-top: 4px;
}
.floutleft{
display: block;
margin: 0 auto;
}
.sire{
width: 300px;
}
.tr{
width: 150px;
}
canvas {
padding-left: 0;
padding-right: 0;
margin-left: auto;
margin-right: auto;
display: block;
width: 100%;
}
<head>
<link rel="stylesheet" href="css.css">
</head>
<body>
<div class="gore">
<img src="logo.jpg" id="logo" alt="logo masinca" width="60" height="60">
</div>
<center>
<form action="" class="unos">
<table class="unos2">
<tr><td style>duzina grede [mm]:</td> <td><input type="text" name="Duzina" id="Duzina" placeholder="duzina grede" ></td></tr>
<tr><td>intenzitet sile [N]:</td> <td><input type="text" name="inten" id="inten" placeholder="intenzitet sile"></td></tr>
<tr><td>napadna tacka [mm]:</td> <td><input type="text" name="naptka" id="naptka" placeholder="napadna tacka" ></td></tr>
<tr><td>napadni ugao [°]:</td> <td><input type="text" name="napugao" id="napugao" placeholder="napadni ugao" ></td></tr>
</table>
<table>
<td><input class="" type="button" name="sub" id="sub" value="Draw" class="imput"></td>
</table>
</form>
<div id="canvasdiv" class="unos3" style="margin: 5px; height: 80%; width: 80%;">
<canvas id="mycanvas" style="border: none;"></canvas>
</div>
</center>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script type="text/javascript" src="script.js"></script>
</body>
我需要有关HTML页面画布宽度的图像拟合的帮助。 我定义了画布宽度100%,但div宽度80%(请参见图片),并且画布内部的图像由用户在HTML中定义。
该图形的宽度可能为10px,但也可能为1000px,我想将其放入所需的画布内,以便可以在任何定义的宽度上看到它(不要太小,但又不能超过所需的宽度)如第二张图片所示
如果我可以单独进行缩放,那是最好的,这样我就可以固定侧面元素的大小(在第三张图片上用红色四舍五入),而只用蓝色元素进行操作(请参见第三张图片)。