畫布僅僅是80×80像素。 您的CSS將其擴展到640x480,這意味着您只需拉伸您正在繪製到畫布的位圖即可。 (這說明你的模糊)
訣竅實現你的比例是在這裏:
var scaleFactor = 10;
for(i = 0; i < 6400; i++)
{
d = random()*256|0;
val = array[d];
viewbmd.fillStyle = "rgb(" + val + ", " + val + ", " + val + ")";
//fillrect draws your "pixels",
viewbmd.fillRect(i%80*scaleFactor, (((i)/80)|0)*scaleFactor , scaleFactor, scaleFactor);
}
爲了模擬繪製BIX像素,乘以你用相同的繪製矩形的x/y位置確定其大小的數字(請參閱scaleFactor)。
在這個例子中,我畫的是「像素」,實際上是10x10「點」。
這樣,初始圖片繪製正確。
雖然我們遇到了麻煩,但第二個是flipSomePixels
,因爲它只是從我們之前繪製的位圖中獲取實際像素,並開始翻轉這些像素,所以我們需要一個類似的技巧來在那裏繪製更新的假像素。
::更新::
感謝肯,我上了如何在一個「更簡單」的方式實現這一點的想法。 我們可以將原始80x80的畫布從屏幕上拖出來,並在更大的畫布上展開。
雖然我們仍然需要取消調整css畫布的大小,因爲調整canvas元素的大小仍然會導致模糊縮放發生。 相反,我們讓畫布640x640,並告訴它做清晰的圖像渲染這樣的:
-CSS:
canvas{
border:1px solid black;
image-rendering: optimizeSpeed;
image-rendering: -moz-crisp-edges;
image-rendering: -webkit-optimize-contrast;
image-rendering: -o-crisp-edges;
image-rendering: optimize-contrast;
-ms-interpolation-mode: nearest-neighbor;
}
-html:
<canvas width="640" height="640"></canvas>
有關工作示例,請參閱http://jsfiddle.net/QTvpe/10/
,您好:感謝您的回覆。我感謝您的幫助。我認爲畫布是80X80,可以縮放到640X640?我嘗試添加新的腳本(使用scale = 8),但這並沒有解決模糊問題。對不起,這不是很熟練。也許,問題在於你所提到的:「我們遇到了麻煩,第二個是我們碰到了flipSomePixels,因爲它只是從我們之前繪製的位圖中獲取實際像素,並開始翻轉這些像素,所以我們需要類似的技巧來繪製更新了假象素。「不知道如何解決這個問題。請仍需要幫助。 – user1134527
對不起,也許我應該詳細闡述一下。畫布確實很小,並且被放大(看起來很可怕)。 解決這個問題的最好方法是使畫布本身更大,不要縮放畫布,只畫出更大的方塊而不是單個像素。 –
我給出的代碼示例給出瞭如何做到這一點的粗略解釋 –