FMXTBitmapStartLine (C++)

From RAD Studio XE2 Code Examples
Jump to: navigation, search

Language:

Versions:

Contents

Description

This example shows how to use the TBitmap.StartLine property. This example rotates the RGB channel color of every pixel of an image.

To build and test this example, create a FireMonkey HD Application - C++, then add the next objects to the form:

Add the following code to the OnClick event handlers of the load button.

Code

void __fastcall TForm1::Button2Click(TObject *Sender) {
        if (OpenDialog1->Execute()) {
                Image1->Bitmap->LoadFromFile(OpenDialog1->FileName);
        }
}

Add the following code to the OnClick event handlers of the other button.

Code

void __fastcall TForm1::Button1Click(TObject *Sender) {
        TBitmap *MyBitmap = new TBitmap(0, 0);
        int I;
        Byte T;
        PAlphaColorRecArray PixelRecs;
        try {
                if (Image1->Bitmap->IsEmpty()) {
                        // Display a message when there is no image loaded
                        MessageDlg("There is no image to customize:",
                                TMsgDlgType::mtWarning,
                        TMsgDlgButtons() << TMsgDlgBtn::mbOK, 0);
                }
                else {
                        // A copy of the initial bitmap
                        MyBitmap->Assign(Image1->Bitmap);
                        // Cast from 32-bit colors to color record
                        PixelRecs = PAlphaColorRecArray(MyBitmap->StartLine);
                        // Rotate RGB of every pixel
                        for (I = 0; I < MyBitmap->Width * MyBitmap->Height - 1; I++) {
                                T = (*PixelRecs)[I].R; // temp
                                (*PixelRecs)[I].R = (*PixelRecs)[I].G;
                                (*PixelRecs)[I].G = (*PixelRecs)[I].B;
                                (*PixelRecs)[I].B = T;
                        }
 
                        // Display the result
                        Image2->Bitmap = MyBitmap;
 
                }
        }
        __finally {
                delete MyBitmap;
        }
}

The result should look like in the following image:

TBitmap StartLine proprety.PNG

Uses

See Also

Personal tools
Previous Versions