Dans cet article, nous allons voir comment changer la couleur des pixels dans un Fmx::Graphics::TBitmap.
Pour cela, on va utiliser une image PNG qui possède seulement deux couleurs: du blanc et du noir.
Tout d’abord, il faut créer un projet FireMonkey dans lequel il faut ajouter un composant TImage.
Ensuite, il faut ajouter le fichier d’en-tête suivant pour utiliser TAlphaColorArray:
#include <FMX.Utils.hpp>
Par la suite, vous pouvez ajouter ce code dans le constructeur de la Form.
Fmx::Graphics::TBitmap* LBitmap = NULL;
try
{
LBitmap = new Fmx::Graphics::TBitmap("C:\\images\\heart.png");
TBitmapData LBitmapData;
if(LBitmap->Map(TMapAccess::ReadWrite, LBitmapData))
{
try
{
TAlphaColorArray* LColorArray;
for(int y = 0; y < LBitmapData.Height; ++y)
{
LColorArray = static_cast<TAlphaColorArray*>
(LBitmapData.GetScanline(y));
for(int x = 0; x < LBitmapData.Width; ++x)
{
void* LPixel = &LColorArray->data[x];
const System::Uitypes::TAlphaColor LColor =
PixelToAlphaColor(LPixel, LBitmapData.PixelFormat);
if(LColor == TAlphaColorRec::White)
{ // Change le blanc en rouge
AlphaColorToPixel(TAlphaColorRec::Red,
LPixel, LBitmapData.PixelFormat);
}
else if(LColor == TAlphaColorRec::Black)
{ // Change le noir en violet
AlphaColorToPixel(TAlphaColorRec::Violet,
LPixel, LBitmapData.PixelFormat);
}
}
}
}
__finally
{
LBitmap->Unmap(LBitmapData);
}
}
Image1->Bitmap->Assign(LBitmap);
}
__finally
{
delete LBitmap;
}
Voilà, maintenant vous devriez obtenir ceci à l’exécution:
Rétroliens : Changer une couleur dans une texture dans Unreal Engine