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++)

 

    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:

File:TBitmap StartLine proprety.PNG

    Uses

    See Also

Server Response from: ETNASC04