本文整理汇总了C++中BitmapData::getPixelPointer方法的典型用法代码示例。如果您正苦于以下问题:C++ BitmapData::getPixelPointer方法的具体用法?C++ BitmapData::getPixelPointer怎么用?C++ BitmapData::getPixelPointer使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BitmapData
的用法示例。
在下文中一共展示了BitmapData::getPixelPointer方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: moveImageSection
void Image::moveImageSection (int dx, int dy,
int sx, int sy,
int w, int h)
{
if (dx < 0)
{
w += dx;
sx -= dx;
dx = 0;
}
if (dy < 0)
{
h += dy;
sy -= dy;
dy = 0;
}
if (sx < 0)
{
w += sx;
dx -= sx;
sx = 0;
}
if (sy < 0)
{
h += sy;
dy -= sy;
sy = 0;
}
const int minX = jmin (dx, sx);
const int minY = jmin (dy, sy);
w = jmin (w, getWidth() - jmax (sx, dx));
h = jmin (h, getHeight() - jmax (sy, dy));
if (w > 0 && h > 0)
{
const int maxX = jmax (dx, sx) + w;
const int maxY = jmax (dy, sy) + h;
const BitmapData destData (*this, minX, minY, maxX - minX, maxY - minY, BitmapData::readWrite);
uint8* dst = destData.getPixelPointer (dx - minX, dy - minY);
const uint8* src = destData.getPixelPointer (sx - minX, sy - minY);
const size_t lineSize = (size_t) (destData.pixelStride * w);
if (dy > sy)
{
while (--h >= 0)
{
const int offset = h * destData.lineStride;
memmove (dst + offset, src + offset, lineSize);
}
}
else if (dst != src)
{
while (--h >= 0)
{
memmove (dst, src, lineSize);
dst += destData.lineStride;
src += destData.lineStride;
}
}
}
}