本帖最后由 taroxd 于 2014-12-21 18:32 编辑
不常使用的话,一个一个 get_pixel 即可
想要直接操作内存的话,Bitmap 在内存中的位置如下(感谢远古的大神):
// 每个 pixel 都是 0xaarrggbb 格式的。这里偷懒都用 DWORD class Bitmap { public: Bitmap(const DWORD object_id) { m_pixel = ((DWORD ****)(object_id * 2))[4][2][4]; m_size = ((DWORD ****)(object_id * 2))[4][2][2]; } ~Bitmap() { } DWORD width() const { return m_size[1]; } DWORD height() const { return m_size[2]; } DWORD * pixel(const int x, const int y) const { return m_pixel + (height() - y - 1) * width() + x; } DWORD * begin() const { return m_pixel; } DWORD * end() const { return m_pixel + width() * height(); } private: DWORD * m_size; DWORD * m_pixel; };
// 每个 pixel 都是 0xaarrggbb 格式的。这里偷懒都用 DWORD
class Bitmap
{
public:
Bitmap(const DWORD object_id)
{
m_pixel = ((DWORD ****)(object_id * 2))[4][2][4];
m_size = ((DWORD ****)(object_id * 2))[4][2][2];
}
~Bitmap()
{
}
DWORD width() const { return m_size[1]; }
DWORD height() const { return m_size[2]; }
DWORD * pixel(const int x, const int y) const { return m_pixel + (height() - y - 1) * width() + x; }
DWORD * begin() const { return m_pixel; }
DWORD * end() const { return m_pixel + width() * height(); }
private:
DWORD * m_size;
DWORD * m_pixel;
};
|