Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Графические фильтры

Автор: blackhard 10.11.2008 20:52

Задача следующая написать программу котораябы обрабатывала изображение bmp различными фильтрами как в photoshop....Нарыл на эту тему кучу материала...И вот скакой проблемой столкнулся нашел вот такую формулу P(i,j) = (
a*P(i-1,j-1)+b*P(i,j-1)+c*P(i+1,j-1)+
+ d*P(i-1,j) + e*P(i,j) + f*P(i+1,j) +
+ g*P(i-1,j+1)+h*P(i,j+1)+k*P(i+1,j+1) ) / (a+b+c+d+e+f+g+h+k) где a b c d e f g h k - элементы матрицы фильтра а P-пикскль изображения так вот как ее применить если bmp храниться как одномерный массив?...
А пока я сделал самый простой фильтр негатив)

DWORD WINAPI InvertPicture(LPVOID lpParameter)
{
int i,j;
HWND parent=(HWND)lpParameter;
for(i=0;i<Picture.bmpih.biHeight;++i){
for(j=0;j<Picture.bmpih.biWidth;++j)
{
Picture.bmp[i*Picture.bmpih.biWidth+j].rgbtBlue=~Picture.bmp[i*Picture.bmpih.biWidth+j].rgbtBlue;
Picture.bmp[i*Picture.bmpih.biWidth+j].rgbtGreen=~Picture.bmp[i*Picture.bmpih.biWidth+j].rgbtGreen;
Picture.bmp[i*Picture.bmpih.biWidth+j].rgbtRed=~Picture.bmp[i*Picture.bmpih.biWidth+j].rgbtRed;
}
InvalidateRect(parent,0,TRUE);
if(i%9==0)Sleep(50);
}
return 0;
}

Автор: volvo 10.11.2008 21:03

Цитата
если bmp храниться как одномерный массив
Как одномерный массив чего хранится BMP? Цветов пикселов? Тогда, зная ширину изображения, элементарно из P[i,j] делаешь P[i*width+j]... Что ты и сделал в своем самом простом фильтре.

Автор: blackhard 12.11.2008 22:11

Может ктонить подсказать...можноли сделать toolbar не сверху окна а с боку как в Paint или PhotoShop и если можно то как?

Автор: volvo 12.11.2008 22:40

Можно, в MSDN написано, как: http://msdn.microsoft.com/en-us/library/bb760446(VS.85).aspx#Creating_Vertical_Toolbar