日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
全面介紹C#指針操作

提及.NET的指針操作,很多人并不是很了解,甚至還不知道有這么個(gè)東東,由于C#指針操作屬于unsafe操作,所以很多人對(duì)unsafe使用起來(lái)都很謹(jǐn)慎,其實(shí)所謂不安全代碼,其實(shí)是不受控于CLR控制下的托管執(zhí)行,相當(dāng)于CLR領(lǐng)導(dǎo)下的部分區(qū)域自治,當(dāng)然CLR也不會(huì)去關(guān)心不安全代碼的內(nèi)存分配和回收。費(fèi)話少說(shuō),先體驗(yàn)一下適當(dāng)?shù)腃#指針操作帶來(lái)的性能提升。平時(shí)我們通過(guò)GDI+操作稍大點(diǎn)圖片象素時(shí),都會(huì)有一種瀕臨崩潰的感覺(jué),我們轉(zhuǎn)下用C#指針操作

 
 
 
  1. Bitmapmap=newBitmap(path);  
  2. //將圖片位圖區(qū)域進(jìn)行鎖定  
  3. BitmapDatamapdata=map.LockBits(newRectangle(0,0,map.Width,map.Height),
    ImageLockMode.ReadWrite,PixelFormat.Format24bppRgb);  
  4. unsafe  
  5. {  
  6. byte*pixpoint;  
  7. intnewpoint;  
  8.  
  9. for(inti=0;i;i++)  
  10. {  
  11. for(intj=0;j;j++)  
  12. {  
  13. //位圖結(jié)構(gòu)存在一個(gè)字節(jié)對(duì)齊問(wèn)題。  
  14. pixpoint=(byte*)mapdata.Scan0;+i*3+j*mapdata.Stride;  
  15. newpoint=(*pixpoint*11+*(pixpoint+1)*59+*(pixpoint+2)*30)/100;  
  16. *(pixpoint++)=(byte)newpoint;  
  17. *(pixpoint++)=(byte)newpoint;  
  18. *(pixpoint++)=(byte)newpoint;  
  19.  
  20. //非指針操作  
  21. //Colorpxcl=map.GetPixel(i,j);  
  22. //map.SetPixel(i,j,(pxcl.R*11+pxcl.G*59+pxcl*30)/100);  
  23. }  
  24. }  
  25. }  
  26. //將位圖內(nèi)存區(qū)域進(jìn)行解鎖  
  27. map.UnlockBits(mapdata);  
  28. map.Dispose(); 

比較GDI+使用的GetPixel/SetPixel,讓你立馬感到這個(gè)世界多么美妙

再來(lái)一個(gè)中值濾波的操作

 
 
 
  1. /// 
  2. ///中值濾波  
  3. /// 
  4. ///<paramnameparamname="dgGrayValue"> 
  5. publicvoidMedianFilter(intdgGrayValue)  
  6. {  
  7. //100M雙線空間+50M數(shù)據(jù)庫(kù)28元/年  
  8. //1G雙線空間+200M數(shù)據(jù)庫(kù)100元/年  
  9. //QQ:70975363  
  10. bytes;  
  11. byte[]p=newbyte[9];  
  12. inti,j;  
  13. intx,y;  
  14. intStride;  
  15. unsafe  
  16. {  
  17. byte*point=(byte*)this.ImageData.Scan0;  
  18. Stride=this.ImageData.Stride;  
  19. pointpoint=point+3+this.ImageData.Stride;  
  20. for(i=0;i;i++)  
  21. {  
  22. for(j=0;j;j++)  
  23. {  
  24. p[0]=*(point-Stride-1);  
  25. p[1]=*(point-Stride+2);  
  26. p[2]=*(point-Stride+5);  
  27. p[3]=*(point-1);  
  28. p[4]=*(point+2);  
  29. p[5]=*(point+5);  
  30. p[6]=*(point+Stride-1);  
  31. p[7]=*(point+Stride+2);  
  32. p[8]=*(point+Stride+5);  
  33. for(x=0;x<5;x++)  
  34. {  
  35. for(y=x+1;y<9;y++)  
  36. {  
  37. if(p[x]>p[y])  
  38. {  
  39. s=p[x];  
  40. p[x]=p[y];  
  41. p[y]=s;  
  42. }  
  43. }  
  44. }  
  45. *ppoint=p[4];  
  46. *(point-1)=p[4];  
  47. *(point-2)=p[4];  
  48. point+=3;  
  49.  
  50. }  
  51. point+=Stride-this.ImageData.Width*3;  
  52. }  
  53. }  

當(dāng)前名稱(chēng):全面介紹C#指針操作
轉(zhuǎn)載來(lái)于:http://www.5511xx.com/article/ccdihie.html