我下载了个小程序,但是不知道怎么把它原来 向左滚动改为向上滚动,请各位大侠救救小弟//循环移动
public void MoveStep()
{
//根据srcBitmap绘制desBitmap
BitmapData desData = m_Desmap.LockBits(
new Rectangle(0, 0, m_Desmap.Width, m_Desmap.Height),
ImageLockMode.ReadWrite,
PixelFormat.Format24bppRgb);
//获取源图的bmdata
BitmapData srcData = m_Srcmap.LockBits(
new Rectangle(0, 0, m_Srcmap.Width, m_Srcmap.Height),
ImageLockMode.ReadWrite,
PixelFormat.Format24bppRgb
);
//扫描行宽度
int desStride = desData.Stride; int srcStride = srcData.Stride; unsafe
{ byte* pDest = (byte*)(void*)desData.Scan0;
byte* pSrc = (byte*)(void*)srcData.Scan0; //源图 //循环向前移动
for (int j = 0; j < m_Srcmap.Height; ++j)
{
for (int i = 0; i < m_Srcmap.Width; ++i)
{
pSrc[srcStride * j + i * 3] = pSrc[srcStride * j + ((i + 1) % m_Srcmap.Width) * 3]; //B
pSrc[srcStride * j + i * 3 + 1] = pSrc[srcStride * j + ((i + 1) % m_Srcmap.Width) * 3 + 1]; //G
pSrc[srcStride * j + i * 3 + 2] = pSrc[srcStride * j + ((i + 1) % m_Srcmap.Width) * 3 + 2]; //R
}
} for (int i = 0; i < m_Srcmap.Width; ++i)
{
for (int j = 0; j < m_Srcmap.Height; ++j)
{
int widthStart = i * (m_iCellSize + m_iBorderSize);
int widthEnd = i * (m_iCellSize + m_iBorderSize) + m_iCellSize;
int heightStart = j * (m_iCellSize + m_iBorderSize);
int heightEnd = j * (m_iCellSize + m_iBorderSize) + m_iCellSize; for (int l = heightStart; (l < heightEnd && l < m_Desmap.Height); ++l)
{
for (int k = widthStart; (k < widthEnd && k < m_Desmap.Width); ++k)
{
pDest[desStride * l + k * 3] = pSrc[srcStride * j + i * 3]; //B
pDest[desStride * l + k * 3 + 1] = pSrc[srcStride * j + i * 3 + 1]; //G
pDest[desStride * l + k * 3 + 2] = pSrc[srcStride * j + i * 3 + 2]; //R
}
}
}
} m_Srcmap.UnlockBits(srcData);
m_Desmap.UnlockBits(desData);
}
}
public void MoveStep()
{
//根据srcBitmap绘制desBitmap
BitmapData desData = m_Desmap.LockBits(
new Rectangle(0, 0, m_Desmap.Width, m_Desmap.Height),
ImageLockMode.ReadWrite,
PixelFormat.Format24bppRgb);
//获取源图的bmdata
BitmapData srcData = m_Srcmap.LockBits(
new Rectangle(0, 0, m_Srcmap.Width, m_Srcmap.Height),
ImageLockMode.ReadWrite,
PixelFormat.Format24bppRgb
);
//扫描行宽度
int desStride = desData.Stride; int srcStride = srcData.Stride; unsafe
{ byte* pDest = (byte*)(void*)desData.Scan0;
byte* pSrc = (byte*)(void*)srcData.Scan0; //源图 //循环向前移动
for (int j = 0; j < m_Srcmap.Height; ++j)
{
for (int i = 0; i < m_Srcmap.Width; ++i)
{
pSrc[srcStride * j + i * 3] = pSrc[srcStride * j + ((i + 1) % m_Srcmap.Width) * 3]; //B
pSrc[srcStride * j + i * 3 + 1] = pSrc[srcStride * j + ((i + 1) % m_Srcmap.Width) * 3 + 1]; //G
pSrc[srcStride * j + i * 3 + 2] = pSrc[srcStride * j + ((i + 1) % m_Srcmap.Width) * 3 + 2]; //R
}
} for (int i = 0; i < m_Srcmap.Width; ++i)
{
for (int j = 0; j < m_Srcmap.Height; ++j)
{
int widthStart = i * (m_iCellSize + m_iBorderSize);
int widthEnd = i * (m_iCellSize + m_iBorderSize) + m_iCellSize;
int heightStart = j * (m_iCellSize + m_iBorderSize);
int heightEnd = j * (m_iCellSize + m_iBorderSize) + m_iCellSize; for (int l = heightStart; (l < heightEnd && l < m_Desmap.Height); ++l)
{
for (int k = widthStart; (k < widthEnd && k < m_Desmap.Width); ++k)
{
pDest[desStride * l + k * 3] = pSrc[srcStride * j + i * 3]; //B
pDest[desStride * l + k * 3 + 1] = pSrc[srcStride * j + i * 3 + 1]; //G
pDest[desStride * l + k * 3 + 2] = pSrc[srcStride * j + i * 3 + 2]; //R
}
}
}
} m_Srcmap.UnlockBits(srcData);
m_Desmap.UnlockBits(desData);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货