Дайте границу текстуре - SetPixel

Я пытаюсь динамически добавить границу к моей текстуре. Пока у меня есть граница вверху и внизу. Но изо всех сил пытаясь получить левую и правую границу. Это то, что у меня есть до сих пор:

var i = image;
var pixels : Color[] = i.GetPixels(0, 0, i.width, i.height, 0); 
var br : int = 1;

for(var p = 0; p < pixels.Length; p++){

    var b : int = 30;

    //Bottom
    if(p < i.width * b)
        pixels[p] = new Color(1,0,0,1);

    //Top
    if(p > (i.height * i.width) - (i.width * b))
        pixels[p] = new Color(1,0,0,1);


    //int when a new row of pixels has began
    if(p > i.width * br)
        br++;

}

Пиксели считываются снизу слева направо вверх. Я просто не могу разобраться в математике.

Спасибо


person Oliver Jones    schedule 25.02.2015    source источник


Ответы (1)


Вероятно, самый простой способ получить позицию x пикселя — это использовать модульный оператор (%), который возвращает остаток.

Вот код, вычисляющий положение x и устанавливающий границу на основе этого:

// Left
if(p % i.width < b)
    pixels[p] = new Color(1,0,0,1);

// right
if(p % i.width > i.width - b)
    pixels[p] = new Color(1,0,0,1);
person maZZZu    schedule 25.02.2015
comment
Спасибо, а как теперь добавить размер границы в пикселях (b)? - person Oliver Jones; 25.02.2015
comment
Кроме того, это на самом деле не помогает. В итоге получается странный эффект перевернутого треугольника. - person Oliver Jones; 25.02.2015
comment
Я не знаю, мой ли это 'if(p › i.width * br) br++;' что вызывает это. - person Oliver Jones; 25.02.2015
comment
Извините, моя опечатка. br должна была быть шириной границы. В вашем случае b. Я отредактировал ответ соответственно. - person maZZZu; 25.02.2015