2011-12-02 16 views

Respuesta

6

Debe establecer la anchura y altura de forma manual.

Esto se puede hacer a través de JavaScript onresize event, que está bien porque casi siempre es necesario volver a dibujar la superficie del lienzo en todos los aspectos.

EDIT:

De especificación W3, aquí es la interfaz DOM lienzo:

http://www.w3.org/TR/html5/the-canvas-element.html

interface HTMLCanvasElement : HTMLElement { 
      attribute unsigned long width; 
      attribute unsigned long height; 

    DOMString toDataURL(in optional DOMString type, in any... args); 
    void toBlob(in FileCallback, in optional DOMString type, in any... args); 

    object getContext(in DOMString contextId, in any... args); 
}; 

El elemento canvas tiene dos atributos para controlar el tamaño de la espacio de coordenadas : anchura y altura. Estos atributos, cuando se especifique, deben tener valores que sean enteros válidos no negativos. Las reglas para que analizan números enteros no negativos se deben utilizar para obtener sus valores numéricos . Si falta un atributo, o si el análisis de su valor devuelve un error , se debe usar el valor predeterminado en su lugar. Los valores predeterminados de anchura de atributos a 300, y la altura de atributos por defecto a 150.

+0

por lo que quiere decir 'lienzo', ¿tiene que hacerlo manualmente, pero para 'div' no? – user1027167

+0

El lienzo correcto requiere alto y ancho. No se puede hacer a través de la derecha y abajo. – Steve

+0

así que probé este: http://jsfiddle.net/733zs/4/ Tengo que establecer el ancho y la altura manualmente, pero el lienzo tiene estos valores en offsetwidth y offsetheight – user1027167

0

El posicionamiento funciona correctamente. Solo dibuja la caja negra en la esquina inferior derecha del lienzo.

+0

también, no puede hacer arriba y abajo, o hacia la derecha y la izquierda: http://jsfiddle.net/Ptgga/ – circusdei

+0

por qué no queda y justo al mismo tiempo? para div's está funcionando. – user1027167

+0

La respuesta de steve parece correcta. – circusdei

1

El rectángulo está siendo recortado porque el elemento de lienzo tiene solo 300.150 píxeles de ancho.

http://jsfiddle.net/733zs/3/

+0

Lo sé, pero ¿por qué no es tan grande como la página? Mi CSS dice 0px a la izquierda 0px a la derecha 0px a la parte superior y 0 px a la parte inferior. – user1027167

+1

Esta respuesta no responde a la pregunta del OP. – Steve