1

私はhtml5キャンバスで遊び始めています。ピクセルごとのプロットを作成します。まず、ピクセルごとに 2 つの四角形を作成します。次のコードが機能します。

<html>
<head>

<%= javascript_include_tag "jquery-1.9.1" %>

<script type="text/javascript" src=""></script>

<script type="text/javaScript">

function plotCanvas2d(mean,nx,nz,canvas)
{

var context = canvas.getContext('2d');

var imageData = context.createImageData(nx,nz);

var kk=0;
var blue;

for (var jj=0; jj<nz; ++jj) {
    for (var ii=0; ii<nx; ++ii) {

        blue = mean[ii][jj]*255;

        imageData.data[kk] = 0;
        imageData.data[kk+1] = 0;
        imageData.data[kk+2] = blue;
        imageData.data[kk+3] = 255;
        kk += 4;
    }
}

context.putImageData(imageData, 0, 0);
}

$(document).ready( function plotFull()
{

var nx = 600;
var nz = 300;

var mean = new Array(nx);

for (var ii=0; ii<nx; ii++)
{
    mean[ii] = new Array(nz);
}

for (var ii=0; ii<nx; ii++) {
    for (var jj=0; jj<nz; jj++)
    {
        mean[ii][jj] = 0.0;
    }
}


// $('#canvas').height(nz);
// $('#canvas').width(nx);
var canvas = document.getElementById('canvas');

for (var jj=0; jj<nz/2; ++jj) {
    for (var ii=0; ii<nx; ++ii) { 
        mean[ii][jj] = 0; }}

for (var jj=nz/2; jj<nz; ++jj) {
    for (var ii=0; ii<nx; ++ii) {
        mean[ii][jj] = 1; }}

plotCanvas2d(mean,nx,nz,canvas)

});      

</script>

</head> 
<body>
<!-- <canvas id="canvas" width="600" height="300"></canvas> -->
<canvas id="canvas" ></canvas>
</body>
</html>

しかし、コメント化された 3 行のコメントを外し、html 本文のキャンバス定義をコメント化すると、コメント化されません。私はもっ​​と複雑なことをしていて、問題をこれに釘付けにすることができました。定義でキャンバスのサイズを設定すると、コードが機能します。jqueryを使用してサイズを設定すると、そうではありません。最初の場合、イメージは青と黒の長方形で、2 番目の場合は黒のみです。コードのより大きな部分では、2 番目のケースの動作はほとんど予測できませんでした。私は何が欠けていますか?それはばかげているに違いないのですが、私にはそれが見えません...

4

1 に答える 1

0

私があなたを正しく理解しているなら、使ってみてください

 $('#canvas').attr('width',600);
 $('#canvas').attr('height',300);

幅と高さの属性を設定する必要があるため、.attr() と思われます。

また、jquery を使用する場合は、以下を使用する必要があると思います。

var canvas = $('#canvas')[0]; 

キャンバスを jquery オブジェクトではなくメソッドに渡します。

于 2013-02-27T16:17:47.867 に答える