91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#指針怎么用

發布時間:2021-12-01 11:42:41 來源:億速云 閱讀:156 作者:小新 欄目:編程語言

這篇文章主要介紹C#指針怎么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

提及.NET的指針操作,很多人并不是很了解,甚至還不知道有這么個東東,由于C#指針操作屬于unsafe操作,所以很多人對unsafe使用起來都很謹慎,其實所謂不安全代碼,其實是不受控于CLR控制下的托管執行,相當于CLR領導下的部分區域自治,當然CLR也不會去關心不安全代碼的內存分配和回收。費話少說,先體驗一下適當的C#指針操作帶來的性能提升。平時我們通過GDI+操作稍大點圖片象素時,都會有一種瀕臨崩潰的感覺,我們轉下用C#指針操作

  1. Bitmapmap=newBitmap(path);  

  2. //將圖片位圖區域進行鎖定  

  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<map.Width;i++)  

  10. {  

  11. for(intj=0;j<map.Height;j++)  

  12. {  

  13. //位圖結構存在一個字節對齊問題。  

  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. //將位圖內存區域進行解鎖  

  27. map.UnlockBits(mapdata);  

  28. map.Dispose(); 

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

再來一個中值濾波的操作

///<summary> ///中值濾波  ///</summary> ///<paramnameparamname="dgGrayValue"></param> publicvoidMedianFilter(intdgGrayValue)  {  //100M雙線空間+50M數據庫28元/年  //1G雙線空間+200M數據庫100元/年  //QQ:70975363  bytes;  byte[]p=newbyte[9];  inti,j;  intx,y;  intStride;  unsafe  {  byte*point=(byte*)this.ImageData.Scan0;  Stride=this.ImageData.Stride;  pointpoint=point+3+this.ImageData.Stride;  for(i=0;i<this.ImageData.Height-1;i++)  {  for(j=0;j<this.ImageData.Width-1;j++)  {  p[0]=*(point-Stride-1);  p[1]=*(point-Stride+2);  p[2]=*(point-Stride+5);  p[3]=*(point-1);  p[4]=*(point+2);  p[5]=*(point+5);  p[6]=*(point+Stride-1);  p[7]=*(point+Stride+2);  p[8]=*(point+Stride+5);  for(x=0;x<5;x++)  {  for(y=x+1;y<9;y++)  {  if(p[x]>p[y])  {  s=p[x];  p[x]=p[y];  p[y]=s;  }  }  }  *ppoint=p[4];  *(point-1)=p[4];  *(point-2)=p[4];  point+=3;   }  point+=Stride-this.ImageData.Width*3;  }  }  }

以上是“C#指針怎么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

榕江县| 孝感市| 灵宝市| 黑河市| 太康县| 睢宁县| 玛曲县| 名山县| 林周县| 娱乐| 元谋县| 闵行区| 吉木萨尔县| 巫溪县| 曲麻莱县| 永嘉县| 十堰市| 东城区| 开化县| 家居| 莆田市| 调兵山市| 南部县| 宜君县| 黎平县| 香河县| 克东县| 龙川县| 万载县| 华容县| 金坛市| 乌拉特后旗| 本溪市| 新田县| 曲麻莱县| 米易县| 木兰县| 理塘县| 黎川县| 华宁县| 满城县|