2010-05-19 6 views
2

Итак, у меня есть спрайт в формате png, и я уже разработал координаты для того, что я хочу отобразить. Я пытаюсь создать метод, который вернет UIImage при передаче информации о местоположении на спрайте. Я просто не знаю, как использовать материал CGContext вместе с координатами, чтобы вернуть UIImage.Использование CGContext для отображения спрайт-листа iPhone

Я искал CGContextClipToRect, потому что я думаю, что это способ сделать это, но я просто не могу заставить его работать.

Что-то вроде этого

CGSize size = CGSizeMake(xSize, ySize);
UIGraphicsBeginImageContext(size);
//CGContextClipToRect(spriteSheet.size, imageRect);
[spriteSheet drawAtPoint:CGPointMake(xPos, yPos)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;

возвращается только то, что в контексте размера. Мне нужно иметь возможность «переместить» это окно размера вокруг спрайта, если это имеет смысл.

Любая помощь будет оценена по достоинству.

Спасибо, Майк

ответ

9

Я думаю, что вызов вы хотите использовать CGImageCreateWithImageInRect

newImage = [UIImage imageWithCGImage:CGImageCreateWithImageInRect([spriteSheet CGImage] , imageRect)]; 
+0

Спасибо вам большое! Я искал все, и все, что мне было нужно, это одна строка. Отлично работает – Mike

+0

Вот как я это сделал, но я столкнулся с некоторыми проблемами производительности из-за размера размера и количества используемых спрайтов. Используя CGImageCreateWithImageInRect, а затем копируя это изображение, улучшена производительность анимации за счет более длительного времени загрузки. – Saltymule

0

вы должны думать о ваших координат в обратном направлении. CGSize фиксирован. Переведите xPos, yPos, чтобы ваш спрайт появился под окном.