Foxtable(狐表)用户栏目专家坐堂 → [求助]转换代码


  共有1929人关注过本帖树形打印复制链接

主题:[求助]转换代码

帅哥哟,离线,有人找我吗?
pcxjxjhkw
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1791 积分:12764 威望:0 精华:1 注册:2013/7/18 15:51:00
[求助]转换代码  发帖心情 Post By:2015/6/20 3:57:00 [显示全部帖子]

如何将下面代码转换成狐表的代码,谢谢
  1. //---------------------------------------------------------------------------  
  2.   
  3. FORCEINLINE  
  4. INT CheckValue(INT value)  
  5. {  
  6.     return (value & ~0xff) == 0? value : value > 255? 255 : 0;  
  7. }  
  8. //---------------------------------------------------------------------------  
  9.   
  10. // 线性亮度/对比度调整  
  11. VOID LineBrightAndContrast(BitmapData *data, INT bright, INT contrast, BYTE threshold)  
  12. {  
  13.     if (bright == 0 && contrast == 0)  
  14.         return;  
  15.   
  16.     FLOAT bv = bright <= -255? -1.0f : bright / 255.0f;  
  17.     if (bright > 0 && bright < 255)  
  18.         bv = 1.0f / (1.0f - bv) - 1.0f;  
  19.   
  20.     FLOAT cv = contrast <= -255? -1.0f : contrast / 255.0f;  
  21.     if (contrast > 0 && contrast < 255)  
  22.         cv = 1.0f / (1.0f - cv) - 1.0f;  
  23.   
  24.     BYTE values[256];  
  25.     for (INT i = 0; i < 256; i ++)  
  26.     {  
  27.         INT v = contrast > 0? CheckValue(i + (INT)(i * bv + 0.5f)) : i;  
  28.         if (contrast >= 255)  
  29.             v = v >= threshold? 255 : 0;  
  30.         else  
  31.             v = CheckValue(v + (INT)((v - threshold) * cv + 0.5f));  
  32.         values[i] = contrast <= 0? CheckValue(v + (INT)(v * bv + 0.5f)) : v;  
  33.     }  
  34.   
  35.     PARGBQuad p = (PARGBQuad)data->Scan0;  
  36.     INT offset = data->Stride - data->Width * sizeof(ARGBQuad);  
  37.   
  38.     for (UINT y = 0; y < data->Height; y ++, (BYTE*)p += offset)  
  39.     {  
  40.         for (UINT x = 0; x < data->Width; x ++, p ++)  
  41.         {  
  42.             p->Blue      = values[p->Blue];  
  43.             p->Green = values[p->Green];  
  44.             p->Red       = values[p->Red];  
  45.         }  
  46.     }  
  47. }  
  48. //---------------------------------------------------------------------------  
  49.   
  50. void __fastcall TForm1::Button2Click(TObject *Sender)  
  51. {  
  52.     Gdiplus::Bitmap *bmp =  new Gdiplus::Bitmap(L"..\\..\\media\\source1.jpg");  
  53.   
  54.     Gdiplus::Graphics *g = new Gdiplus::Graphics(Canvas->Handle);  
  55.     g->DrawImage(bmp, 0, 0);  
  56.   
  57.     BitmapData data;  
  58.     LockBitmap(bmp, &data);  
  59.     LineBrightAndContrast(&data, 20, 0, 121);  
  60.     UnlockBitmap(bmp, &data);  
  61.   
  62.     g->DrawImage(bmp, data.Width, 0);  
  63.   
  64.     delete g;  
  65.     delete bmp;  
  66. }  
  67. //---------------------------------------------------------------------------  

 回到顶部