изменить размер холста и дублировать содержимое измененного размера внутри другого

Как я могу дублировать содержимое холста с измененным размером внутри другого?

Если я рисую изображение внутри холста, а затем изменяю его размер, при клонировании содержимого я дублирую первый холст в его исходном размере, даже если он изменен.

HTML:

<img id="image" src="the-image.png" width="275" height="95"/>
<canvas id="canvas-image" width="275" height="95"></canvas>
<canvas id="canvas-little" width="138" height="48"></canvas>

js:

var img = $('image');   

var cnvImage = $('canvas-image');
ctxImage = cnvImage.getContext('2d');
ctxImage.drawImage(img,0,0);

cnvImage.setStyles({ 'width': 138, 'height': 48 });

var cnvLittle= $('canvas-little');
ctxLittle = cnvLittle.getContext('2d');
ctxLittle.drawImage(cnvImage,0,0);

person Luke    schedule 02.09.2011    source источник
comment
Эй, чтобы упростить помощь, вы должны разместить свой пример на jsfiddle или что-то в этом роде. jsfiddle.net Пример: jsfiddle.net/eGjak/60   -  person ellisbben    schedule 02.09.2011
comment
@ellisbben полностью переписал вопрос, большое спасибо!   -  person Luke    schedule 02.09.2011
comment
а вот jsfiddle.net/jkXUJ   -  person Luke    schedule 02.09.2011


Ответы (1)


Изменение размера элемента холста не меняет размер лежащего в основе растра изображения. Это точно так же, как теги img, где изменение размера не меняет фактического содержимого изображения.

Если вы хотите нарисовать масштабированную версию изображения, вы должны просто использовать версию context2d.drawImage() с пятью аргументами:

context.drawImage(image, destinationX, destinationY, destinationHeight, destinationWidth);

Ваш пример обновлен

Спецификация холста отличное место для прогулок; это много читать, но, как и поедание овощей, это полезно для вас.

person ellisbben    schedule 02.09.2011
comment
если это была спецификация холста, которая сделала это за вас, вы просто заставили покраснеть моего менеджера закладок. - person ellisbben; 02.09.2011