[All]
FireMonkey TBitmap StartLine Property C++ Code Sample
By: Tim DelChiaro
Abstract: This example shows how to use the TBitmap.StartLine property. This example rotates the RGB channel color of every pixel of an image.
FMXTBitmapStartLine (C++)
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:

Uses
See Also
Connect with Us