2015-08-09 2 views
0

Я использовал UIBezierPath для обрезки части изображения размером 1920 * 1080, отбрасывая 1/3 его (слева). Я хочу, чтобы левый 2/3 шаг влево, чтобы выравнивание по левому краю слева на борту образа, я попробовал:как перемещать содержимое uiimage в определенном направлении

-(UIImage*)leftAlignmentLeftTrapezoided:(UIImage*) image{ 
    // extract each half as a CGImage 
    CGImageRef imageRight = CGImageCreateWithImageInRect([image CGImage],CGRectMake(self.size.width/3, 0, self.size.width,self.size.height)); 
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(self.size.width/3,self.size.height),NO, 0); 
    CGContextRef con = UIGraphicsGetCurrentContext(); 
    CGContextDrawImage(con,CGRectMake(0,0,self.size.width*2/3.0,self.size.height), imageRight); 
    UIImage* im = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return im; 
    /* 

    */ 
}; 

согласно http://www.apeth.com/iOSBook/ch15.html, но это не сработало

ответ

0

Если вы хотите отцентрировать его:

давайте пример с дефисом

6 ------

6 - (1/3) * 6 = 6 - 2 = 4

4 ----

давайте попробуем выровнять их:

первая::::: ------

второй:: x-- --x

Со словами если вы разрезаете часть (назовем ее x) сегмента и все еще хотим, чтобы она была в центре какого-то топора, вы должны вырезать x/2 сегмента с обеих сторон от вас - сегмент,

В вашем случае просто переместить его от 1/6 ширины (1920) в левой, если вы хотите, чтобы быть в центре

Если вы хотите быть слева:

в первом место помещает ваше изображение с 1/3 влево от позиции, в которой вы хотите.

Надеется, что это помогло (простите за плохой английский)

+0

большого спасибо. Я нашел метод http://iphonedevelopment.blogspot.sg/2010/11/drawing-part-of-uiimage.html. две строки кода очень важны: // Позаботьтесь о инверсии по оси Y, переведя контекст на ось y CGContextTranslateCTM (контекст, 0, drawRect.origin.y + fromRect.size.height); // Масштабирование -1.0 по оси y для перевертывания CGContextScaleCTM (контекст, 1.0, -1.0); – user3898153