专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
BitmapData 缩放图像(粗糙)
2019-04-15 13:47
发布
生成海报
站内文章
/
PIC单片机
17814
0
1248
///
/// 粗糙式缩放图像 /// Method - BitmapData /// Range >= 1 ///
private void ZoomPic(Bitmap pic,int _zoomsize) { if (pic == null) return; if (_zoomsize <1) return; Bitmap tmpBMP = new Bitmap(pic.Width, pic.Height, PixelFormat.Format24bppRgb); tmpBMP = pic; int lw=tmpBMP.Width,lh=tmpBMP.Height; Bitmap newBMP = new Bitmap(lw * _zoomsize, lh * _zoomsize, PixelFormat.Format24bppRgb); BitmapData data = tmpBMP.LockBits(new Rectangle(0, 0, lw, lh), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); BitmapData newdata=newBMP.LockBits(new Rectangle(0,0,lw*_zoomsize,lh*_zoomsize),ImageLockMode.ReadWrite,PixelFormat.Format24bppRgb); int Offset=data.Stride-data.Width*3; int newOffset = newdata.Stride - newdata.Width * 3; unsafe { byte* pIn = (byte*)data.Scan0; byte* pOut = (byte*)newdata.Scan0; for (int i = 0; i < data.Height; i++) { for (int j = 0; j < data.Width; j++) { for (int iz = 0; iz < _zoomsize; iz++) { for (int jz = 0; jz < _zoomsize; jz++) { pOut[0] = pIn[0]; pOut[1] = pIn[1]; pOut[2] = pIn[2]; pOut += 3; } pOut -= 3 * _zoomsize;//初始化偏移 pOut += newdata.Stride; } pOut -= newdata.Stride * _zoomsize; //初始化偏移 pOut += 3 * _zoomsize; pIn += 3; } pIn += Offset; pOut += newOffset; pOut += newdata.Stride * (_zoomsize -1); } } tmpBMP.UnlockBits(data); newBMP.UnlockBits(newdata); ZoomPicBox.Image=newBMP; }
类似mspaint的缩放 可配合pictrueBox(AutoSize) + panel(AutoScroll)
安全代码则用
GetPixel()与
SetPixel
() 但效率非常低
Ta的文章
更多
>>
BitmapData 缩放图像(粗糙)
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮