[SFML 3.0.2] Wycinanie obrazu z canvasu z przeźroczystością
Ostatnio zmodyfikowano 2026-03-16 16:35
tBane Temat założony przez niniejszego użytkownika |
[SFML 3.0.2] Wycinanie obrazu z canvasu z przeźroczystością » 2026-03-16 15:50:07 Cześć. Napisałem sobie funkcję dla wycinania obrazu z canvasu gdy kolor jest nieprzeźroczysty. Działa to w ten sposób, że kolor tła wyciętego obrazu ma wartość colorAlpha. Poniżej funkcja wycinająca z obrazu fragment. Jednakże funkcja nie działa dla koloru przeźroczystego, bo nadpisuje kolorem alpha tło. W jaki sposób poprawnie wycinać fragment obrazu z canvasu ? removeImageWithMask( getCurrentAnimation()->getCurrentLayer()->_image, _rect, * _maskImage, toolbar->_second_color->_color );
void removeImageWithMask( sf::Image & image, sf::IntRect rect, sf::Image & mask, sf::Color alphaColor ) { if( rect.size.x <= 0 || rect.size.y <= 0 ) return; if( mask.getSize().x <= 0 || mask.getSize().y <= 0 ) return; for( int y = 0; y < rect.size.y; ++y ) { for( int x = 0; x < rect.size.x; ++x ) { if( mask.getPixel( sf::Vector2u( x, y ) ) != sf::Color::White ) continue; int px = rect.position.x + x; int py = rect.position.y + y; if( px < 0 || py < 0 || px >=( int )( image.getSize().x ) || py >=( int )( image.getSize().y ) ) continue; image.setPixel( sf::Vector2u( px, py ), alphaColor ); } } }
 |
|
pekfos |
» 2026-03-16 16:33:51 Przezroczysty to też kolor. Ustaw alphaColor jako sf::Color::Transparent. |
|
tBane Temat założony przez niniejszego użytkownika |
» 2026-03-16 16:35:58 Kurde - Działa :D Dzięki :D |
|
| « 1 » |