Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML 3.0.2] Wycinanie obrazu z canvasu z przeźroczystością

Ostatnio zmodyfikowano 2026-03-16 16:35
Autor Wiadomość
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 ?

C/C++
removeImageWithMask( getCurrentAnimation()->getCurrentLayer()->_image, _rect, * _maskImage, toolbar->_second_color->_color );

C/C++
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 );
       
}
    }
}

P-183926
pekfos
» 2026-03-16 16:33:51
Przezroczysty to też kolor. Ustaw alphaColor jako sf::Color::Transparent.
P-183928
tBane
Temat założony przez niniejszego użytkownika
» 2026-03-16 16:35:58
Kurde - Działa :D Dzięki :D
P-183929
« 1 »
  Strona 1 z 1