//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void BiInterp (int newX, int newY)//збільшення | зменшення картинки newX - нова довга, newY - нова висота
{= Resample (colorOfPixel, colorOfPixel.Length, colorOfPixel [0] .Length, newX, newY); ();
} [] [] Resample (int [] [] colorOfPixel, int width, int height, int newX, int newY)//білінійна інтерполяція
{i, j; h, w; t; u; tmp;
float d1, d2, d3, d4;//коефіціентиp1, p2, p3, p4;/* Навколишні пікселі */p1Col, p2Col, p3Col, p4Col;// для відбору становила цвіт
int red, green, blue; [] [] newMatrix=new int [newX] []; (i=0; i lt; newX; i ++)
{[i]=new int [newY];
} (j=0; j lt; newY; j ++)
{= (float) (j)/(newY - 1) * (height - 1);=(int) Math.Floor (tmp); (h lt; 0)
{= 0;
}
{(h gt;=height - 1)
{= height - 2;
}
}=tmp - h; (i=0; i lt; newX; i ++)
{= (float) (i)/(newX - 1) * (width - 1);=(int) Math.Floor (tmp); (w lt; 0)
{= 0;
}
{(w gt;=width - 1)
{= width - 2;
}
}=tmp - w;
/* Коефіцієнти * /=(1 - t) * (1 - u);=t * (1 - u);=t * u;=(1 - t) * u;
/* Навколишні пікселі: a [i] [j] */
p1=colorOfPixel [w] [h];=colorOfPixel [w + 1] [h];=colorOfPixel [w + 1] [h + 1];=colorOfPixel [w] [h + 1]; Col= p1 amp; 255;// Відбираємо значення blueCol=p2 amp; 255; Col=p3 amp; 255; Col=p4 amp; 255;=(byte) (p1Col * d1 + p2Col * d2 + p3Col * d3 + p4Col * d4);
p1Col=p1 amp; 65280;/* Відбираємо значення green */p1Col gt; gt;=8;//зрушуємо в початок змінної
p2Col=p2 amp; 65280; p2Col gt; gt;=8; Col=p3 amp; 65280; p3Col gt; gt;=8; Col=p4 amp; 65280; p4Col gt; gt;=8;=(byte) (p1Col * d1 + p2Col * d2 + p3Col * d3 + p4Col * d4);
p1Col=p1 amp; 16711680;/* Відбираємо значення red */p1Col gt; gt;=16;// Зрушуємо в початок змінної
p2Col=p2 amp; 16711680; p2Col gt; gt;=16; Col=p3 amp; 16711680; p3Col gt; gt;=16; Col=p4 amp; 16711680; p4Col gt; gt;=16;=(byte) (p1Col * d1 + p2Col * d2 + p3Col * d3 + p4Col * d4); [i] [j]=(255 lt; lt; 24) | (red lt; lt; 16) | (green lt; lt; 8) | blue;//складання кольору 255 - значення альфа каналу
}
} newMatrix;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//РОБОТА З повернення на крок НАЗАД
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void ResetBitmap ()//Повернення на крок назад
{(beforeProcessing!=null amp; amp; colorOfPixel!=null)//якщо поточне зображення не дорівнює нулю і зображення до виконання процесу не дорівнює нулю
{[] [] arry=colorOfPixel;=beforeProcessing;=arry; ();=null;
}
} void SaveBitmap (string saveFilePath)//функція збереження зображення
{
_bitmapPath=saveFilePath; (System.IO.File.Exists (saveFilePath)). IO.File.Delete (saveFilePath);
GetBitmap (). Save (saveFilePath);
} void RestorePrevious ()//функція збереження зображення до виконання виділення області
{= (int [] []) colorOfPixel.Clone ();//зображення до виконання виділення=поточним зображення
}}}