Я меняю цвета некоторых пикселей в растровом изображении, но бывает две странные вещи:
- Использование al_lock_bitmap и al_unlock_bitmap: растровое изображение, отображаемое на экране, не изменяется, сохраненное растровое изображение сохраняется с внесенными изменениями.
- Без al_lock_bitmap и al_unlock_bitmap: работает в инверсном режиме, растровое изображение, отображаемое на экране, выполнено, но сохраненное растровое изображение не сохранило эти изменения.
См. Ниже код, который я использую:
al_lock_bitmap(grid, al_get_bitmap_format(grid), ALLEGRO_LOCK_READWRITE);
al_set_target_bitmap(grid);
for (int y = 300; y < 350; ++y) {
for (int x = 400; x < 450; ++x) {
al_put_pixel(x, y, al_map_rgb(255, 0, 0));
auto color = al_get_pixel(grid, x, y);
unsigned char r,g,b;
al_unmap_rgb(color, &r, &g, &b);
bool isColorRed = (r == 255 && g == 0 && b == 0);
}
}
al_unlock_bitmap(grid);
bool saved = al_save_bitmap("/path/to/my/image.bmp", grid);
if(saved) {
cout << "saved" << endl;
} else {
cout << "not saved" << endl;
}
al_flip_display();
Кто-нибудь знает, что происходит, или как я могу решить эту проблему?