Дайте рамка на текстурата - 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