2010-10-05 3 views
3

Я создал CGBitmapContext из 256 x 256 и у меня есть CGImageRef, который я хочу использовать в этом контексте. Моя цель - обрезать изображение (и в конечном итоге создавать фрагменты изображения), но если я использую CGContextDrawImage, Core Graphics масштабирует изображение в соответствии с контекстом.Рисовать часть изображения в CGBitmapContext

Итак, вопрос в том, как я могу убедиться, что только часть CGImageRef втягивается в CGBitmapContext (без масштабирования)?

ответ

4

CGContextDrawImage принимает параметр CGRect. Похоже, вы проходите границы своего контекста. Вместо этого попробуйте передать границы изображения, соответствующим образом смещайте его, чтобы нарисовать нужную его часть.

+0

Например, чтобы нарисовать кусок 32x32 исходного изображения, начиная с (10, 20), вы должны: 'CGContextDrawImage (theContext, CGRectMake (10, 20, 32, 32), theImage);' –

+1

@ Джонатан Гринспан: нет, это уменьшит изображение. Предположим, что исходное изображение 1024x1024, и вы хотите, чтобы нижний правый угол 256x256 заполнил контекст. Тогда я думаю, что вы скажете 'CGContextDrawImage (контекст, CGRectMake (-768, 0, 1024, 1024), theImage)'. – JWWalker

+1

Эмм ... да. О чем я только думал? Я использую кварц каждый день! Для обрезки вам нужно сначала установить область отсечения контекста с помощью 'CGContextClipToRect()'. –

Смежные вопросы