當前位置:編程學習大全網 - 編程語言 - bcb都有什麽處理bmp圖片的方法?最好把代碼也給我 謝謝

bcb都有什麽處理bmp圖片的方法?最好把代碼也給我 謝謝

BCB顯示bmp顯示圖像基本自帶GUI控件都可以支持,但要處理bmp,比如格式轉化,圖像模糊、銳化等特效,有兩種常規方法:

1、使用第三方組建(格式轉化),這些網上可以找到,如下參考資料。

2、自己解析bmp數據格式,通過RGB運算,將圖形圖像模糊、銳化、雕刻

如下代碼片段

void S_Filter(Graphics::TBitmap *Source,Graphics::TBitmap *NewPic,int Div,int xg)//圖片效果

{

//0:模糊1:銳化3:雕刻

int flt[9];

switch (xg)

{

case 0:

{

flt[0]=5;flt[1]=5;flt[2]=5;

flt[3]=5;flt[4]=60;flt[5]=5;

flt[6]=5;flt[7]=5;flt[8]=5;

};

break;

case 1:

{

flt[0]=0;flt[1]=-5;flt[2]=0;

flt[3]=-5;flt[4]=30;flt[5]=-5;

flt[6]=0;flt[7]=-5;flt[8]=0;

};

break;

default:

{

flt[0]=-15;flt[1]=-15;flt[2]=0;

flt[3]=-15;flt[4]=15;flt[5]=15;

flt[6]=0;flt[7]=15;flt[8]=0;

};

}

int XX[3];

BYTE *ptr,*ptru,*ptrd,*ptr1;

NewPic->Assign(Source);

for (int y = 1; y < NewPic->Height-1; y++)

{

ptr=(BYTE *)NewPic->ScanLine[y];

ptr1=(BYTE *)Source->ScanLine[y];

ptru=(BYTE *)Source->ScanLine[y-1];

ptrd=(BYTE *)Source->ScanLine[y+1];

for(int x=3;x<(Source->Width-1)*3;x+=3)

{

XX[0]=0;XX[1]=0;XX[2]=0;

for(int i=-1;i<=1;i++)

for(int j=0;j<3;j++)

// 本文轉自 C++Builder研究 - /article.asp?i=390&d=c3q44m

XX[j]+=ptr1[x+3*i+j]*flt[4+i];

for(int i=-1;i<=1;i++)

for(int j=0;j<3;j++)

XX[j]+=ptru[x+3*i+j]*flt[1+i];

for(int i=-1;i<=1;i++)

for(int j=0;j<3;j++)

XX[j]+=ptrd[x+3*i+j]*flt[7+i];

for (int i=0;i<3;i++)

{

XX[i]=XX[i]/Div;

XX[i]=MAX(XX[i],0);

XX[i]=MIN(XX[i],255);

ptr[x+i]=XX[i];

}

}

}

}

BCB的,建議去:www.ccrun.com 老牌子BCB資料網。

  • 上一篇:享受完美駕控-汽車刷ecu的基礎知識
  • 下一篇:計算機壹級考試題目類型
  • copyright 2024編程學習大全網