wooriele Ответов: 1

[Справка] преобразование Obj-C в C#


- (float) getVerticalOffset:(CGPoint)point1 point2:(CGPoint)point2 point3:(CGPoint)point3 point4:(CGPoint)point4 magnetLen:(float)length{
    float result = length;
    if (point1.x > point2.x){
        float t = point1.x; point1.x = point2.x; point2.x = t;
    }
    point1.x -= length;
    point2.x += length;
    if (point3.x > point4.x){
        float t = point3.x; point3.x = point4.x; point4.x = t;
    }
    if ((point1.x < point3.x && point3.x < point2.x)
        || (point1.x < point4.x && point4.x < point2.x)
        || (point3.x < point1.x && point1.x < point4.x)
        || (point3.x < point2.x && point2.x < point4.x)){
        if (fabs(point3.y-point1.y) < length){
            result = point3.y-point1.y;
        }
    }
    return result;
}

- (float) getHorizonOffset:(CGPoint)point1 point2:(CGPoint)point2 point3:(CGPoint)point3 point4:(CGPoint)point4 magnetLen:(float)length{
    float result = length;
    if (point1.y > point2.y){
        float t = point1.y; point1.y = point2.y; point2.y = t;
    }
    point1.y -= length;
    point2.y += length;
    if (point3.y > point4.y){
        float t = point3.y; point3.y = point4.y; point4.y = t;
    }
    if ((point1.y < point3.y && point3.y < point2.y)
        || (point1.y < point4.y && point4.y < point2.y)
        || (point3.y < point1.y && point1.y < point4.y)
        || (point3.y < point2.y && point2.y < point4.y)){
        if (fabs(point3.x-point1.x) < length){
            result = point3.x-point1.x;
        }
    }
    return result;
}

- (CGSize) magnetProccess:(CGRect)rect1 top:(bool)top bottom:(bool)bottom left:(bool)left right:(bool)right{
    float magnetLength = 20;
    CGRect parentRect = self.view.superview.frame;
    NSMutableArray* arrView = [delegate getAllMDIView];
    
    float minHorOffset = magnetLength, minVerOffset = magnetLength;
    NSInteger count = arrView.count;
    
    for (int k=0;k <= count;k ++){
        CGRect rect2;
        if (k < count){
            MovableViewCtr* view = arrView[k];
            if (view != self){
                rect2 = view.view.frame;
            }else{
                continue;
            }
        }else{
            rect2 = parentRect;
        }
        
        float arr1[4][2] = {{0, 0}, {rect1.size.width, 0}, {rect1.size.width, rect1.size.height}, {0, rect1.size.height}};
        float arr2[4][2] = {{0, 0}, {rect2.size.width, 0}, {rect2.size.width, rect2.size.height}, {0, rect2.size.height}};
        
        CGPoint basePoint1 = rect1.origin;
        CGPoint basePoint2 = rect2.origin;
        
        for (int i=0;i < 4;i ++){
            if ((!top && i == 0) || (!right && i == 1) || (!bottom && i == 2) || (!left && i == 3)){
                continue;
            }
            CGPoint point1 = CGPointMake(basePoint1.x+arr1[i][0], basePoint1.y+arr1[i][1]);
            CGPoint point2 = CGPointMake(basePoint1.x+arr1[(i+1)%4][0], basePoint1.y+arr1[(i+1)%4][1]);
            for (int j=0;j < 4;j ++){
                if (i%2 == j%2){
                    CGPoint point3 = CGPointMake(basePoint2.x+arr2[j][0], basePoint2.y+arr2[j][1]);
                    CGPoint point4 = CGPointMake(basePoint2.x+arr2[(j+1)%4][0], basePoint2.y+arr2[(j+1)%4][1]);
                    if (i%2 == 0){
                        float vOffset = [self getVerticalOffset:point1 point2:point2 point3:point3 point4:point4 magnetLen:magnetLength];
                        if (fabs(vOffset) < fabs(minVerOffset)){
                            minVerOffset = vOffset;
                        }
                    }else{
                        float hOffset = [self getHorizonOffset:point1 point2:point2 point3:point3 point4:point4 magnetLen:magnetLength];
                        if (fabs(hOffset) < fabs(minHorOffset)){
                            minHorOffset = hOffset;
                        }
                    }
                }
            }
        }
    }
    
    minHorOffset = minHorOffset!=magnetLength?minHorOffset:0;
    minVerOffset = minVerOffset!=magnetLength?minVerOffset:0;
    return CGSizeMake(minHorOffset, minVerOffset);
}

пожалуйста, помогите мне преобразовать этот код в C#, tks

1 Ответов

Рейтинг:
5

macrose

Пожалуйста, смотрите ссылку ниже..

http://www.cocoabuilder.com/archive/cocoa/108318-converting-objective-to.html#108318

Надеюсь, это поможет.