Мне нужно прокрутить фоновое изображение больше, чем размер экрана и сделать его бесконечным циклом - PullRequest
0 голосов
/ 16 ноября 2010

Я пишу приложение для iPad, для которого заблокирована ориентация в альбомный режим. Я хочу, чтобы файл PNG имел высоту 100 пикселей, но в 4 раза больше ширины экрана ipad.

Я хочу, чтобы это фоновое изображение отображалось на экране, а затем автоматически начиналось. прокрутка по таймеру. Я убедился, что начальная и конечная части этого изображения совпадают. Как только будет достигнут конец изображения, я бы хотел, чтобы начальный бит показывался снова. Это изображение должно прокручиваться либо с шагом в один пиксель, либо с большими скачками, если это слишком медленно.

Я действительно застрял в поиске некоторого примера кода, который показал бы, как показать, как это сделать.

Это НЕ игра, которую я пишу, поэтому я не хочу использовать OpenGL или что-то необычное.

Приведенные мною примеры не совсем соответствуют тому, что я представляю.

Могу ли я упростить и точно указать, на чем я застрял ..

Допустим, я загружаю изображение в память шириной 1000 пикселей и высотой 100.

Может кто-нибудь показать мне несколько строк кода, которые позволили бы мне вырезать прямоугольник, начинающийся, скажем, 200 пикселей по оси x, в это увеличенное изображение и сам прямоугольник размером 100 на 100 пикселей.

Как я могу вырезать этот прямоугольник и показать его на экране - скорость не так важна, как указано ранее.

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

Я размышляю по типу команд типа CGContext, но, несмотря на то, что смотрю на примеры и документы, я все еще против кирпичной стены. Именно на это «вырезание прямоугольного сечения» я больше всего спотыкаюсь.

Спасибо.

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

Ответы [ 3 ]

0 голосов
/ 16 ноября 2010

Раскрытие - я вообще не разработчик iPhone. (Заимствовано из этой строки из jjnguy )

Возьмите фоновое изображение и увеличьте его на один экран, а затем скопируйте начало экрана в новую область. Теперь все, что вам нужно сделать, это обрезать нужную деталь и отобразить ее - обертывание уже выполнено.

0 голосов
/ 21 ноября 2010

Спасибо за вашу помощь и советы.

В конце концов, я решил, что самый простой способ сделать это - то, что предложил Марк Рэнсом - так как это заботится об обратном пути.использовал 4 строки кода ниже, чтобы вырезать секцию, которую я хотел шириной 200 пикселей и высотой 100.

Затем я зациклил этот изменяющийся startX на таймере.Идеальный!

// Our image rectangle is 200 pixels wide by 100 pixels high
    CGRect selectionRect = CGRectMake(startX, 0.0, 200.0, 100.0);
    CGImageRef resultImageRef = CGImageCreateWithImageInRect(masterImage.CGImage, selectionRect);
    UIImage *outputFrame = [[UIImage alloc] initWithCGImage:resultImageRef];
    [outputImageViewOutlet setImage:outputFrame];

В конце концов ... это CGRectMake и CGImageCreateWithImageInRect, и всем, кто хочет это сделать, следует изучить подробнее!Надеюсь, это кому-нибудь поможет.

0 голосов
/ 16 ноября 2010

Раскрытие - я вообще не разработчик iPhone.

Но я бы разбил изображение на куски.(Возможно, 8). Таким образом, у вас будет 8 фрагментов высотой 100 пикселей и 1/2 ширины экрана.

Затем, когда изображение прокручивается, вы можете загрузить каждое изображение до его поворота, чтобыотображается.Таким образом, когда изображения выходят за пределы экрана, вы можете заменить их следующим изображением, которое будет отображаться на другой стороне экрана.

...