ImageEn, unit iexBitmaps

TIEBitmap.MergeWithAlpha

TIEBitmap.MergeWithAlpha


Declaration

procedure MergeWithAlpha(Bitmap: TIEBitmap; DstX: integer = 0; DstY: integer = 0; DstWidth: integer = -1; DstHeight: integer = -1; Transparency: integer = 255;
                         ResampleFilter: TResampleFilter = rfNone; Operation: TIERenderOperation = ielNormal; Resample: boolean = true;
                         SrcX: integer = 0; SrcY: integer = 0; Opacity: double = 1.0);


Description

Merges the color and alpha channels of Bitmap (source) with the current image.
The Bitmap PixelFormat must be ie24RGB or ie32RGB.
If AlphaLocation is iaRGBA, the A channel of 32bit RGBA will be used (rather than the AlphaChannel).

Parameter Description
Bitmap Source image with alpha channel to merge with the current image
DstX Horizontal destination position
DstY Vertical destination position
DstWidth Destination width (Bitmap will be resampled/cropped to this value). -1 = the same width of source bitmap
DstHeight Destination height (Bitmap will be resampled/cropped to this value). -1 = the same height of source bitmap
Transparency Transparency of source bitmap. 0 = fully transparent, 255 = fully opaque
ResampleFilter Interpolation filter used when source bitmap needs to be resampled
Operation Blender operation to perform
Resample If true Bitmap is resampled, otherwise it is cropped
SrcX Source bitmap left position
SrcY Source bitmap top position
Opacity Specifies the opacity (0 to 1.0), which can be used as an alternative to setting transparency


Opacity vs Transparency

Both the Opacity and Transparency parameters provide the same functionality. Transparency is the traditional ImageEn value, whereas Opacity provides easier PSD compatibility.
While they can be used in combination, generally only one will be used, i.e. leave Opacity=1 and make use of transparency, or alternatively, leave Transparency=255 and make use of Opacity. For example, for 50% opacity: Transparency = 255 and Opacity = 0.5, or Transparency = 128 and Opacity = 1.0




TIEBitmap Assignment and Drawing Methods

TIEBitmap Methods
Method Mode Purpose
Assign From TIEBitmap/TBitmap/TGraphic/TIcon Copy whole image
AssignImage From TIEBitmap Like assign, but does not copy the alpha channel
AssignRect From TIEBitmap/TBitmap Copy a specified rect
CopyAndConvertFormat From TIEBitmap Copy whole image
CopyRectTo To TIEBitmap Copy rect to another image (without scaling)
CopyWithMask1 To TIEBitmap Copy image using a mask to specify what is copied from the source
CopyWithMask2 To TIEBitmap Copy image using a mask to specify what is replaced in the destintation
DrawToTIEBitmap To TIEBitmap Copies all or part of the image to a specified position and/or size
JoinBitmaps From two TIEBitmaps Draws two bitmaps to a single bitmap
MergeAlphaRectTo With TIEBitmap Merges the alpha channels of two TIEBitmaps using merge rules
MergeWithAlpha With TIEBitmap Merges all or part of two TIEBitmaps with alpha channels to a specified position
RenderToTIEBitmapEx To TIEBitmap Extended drawing of content to a TIEBitmap
StretchRectTo To TIEBitmap Copy rect to dest rect in another image (with scaling)
SwitchTo To TIEBitmap Move content from one TIEBitmap to another

TBitmap Methods
Method Mode Purpose
Assign From TIEBitmap/TBitmap/TGraphic/TIcon Copy whole image
AssignTo To TIEBitmap/TBitmap Copy whole image with optional scaling
AssignRect From TIEBitmap/TBitmap Copy a specified rect
CopyFromTBitmap From TBitmap Copy whole image
CopyToTBitmap To TBitmap Copy whole image
RenderToTBitmapEx To TBitmap Extended drawing of content to a TBitmap

TCanvas Methods
Method Mode Purpose
DrawToCanvas To TCanvas Copies whole image to canvas at specified position (ignoring the alpha channel)
DrawToCanvasWithAlpha To TCanvas Copies whole image to canvas at specified position (honoring the alpha channel)
RenderToCanvas To TCanvas Extended drawing of content to a TCanvas (ignoring the alpha channel)
RenderToCanvasWithAlpha To TCanvas Extended drawing of content to a TCanvas (honoring the alpha channel)


Example

// Merge uplayer.png over background.png
ImageEnView1.IO.LoadFromFile('background.png');
ImageEnView2.IO.LoadFromFile('uplayer.png');
ImageEnView1.IEBitmap.MergeWithAlpha(ImageEnView2.IEBitmap);
ImageEnView1.Update();
ImageEnView1.IO.SaveToFile('output.png');