I have the following 2 functions to determine the transparency colour of a
bitmap...
// Returns the transparent color for the bitmap
function Bitmap24_TransparentColor(bitmap:TBitmap):TColor;
var
row : PRGBArray;
{$IFDEF FPC}
ScanLineImage : TLazIntfImage;
{$ENDIF}
begin
Result := clBlack;
if not IsValidBitmap( bitmap, 'Bitmap24_TransparentColor' ) then
begin
Exit;
end;
{$IFDEF FPC}
ScanLineImage := bitmap.CreateIntfImage;
{$ENDIF}
{$IFDEF FPC}
row := ScanLineImage.GetDataLineStart( bitmap.Height - 1 );
{$ELSE}
row := bitmap.ScanLine[ bitmap.Height - 1 ];
{$ENDIF}
{$IFDEF FPC}
ScanLineImage.Free;
{$ENDIF}
Result := Color_RGBtoColor(row[0]);
end;
// Transforms a RGB color into a standard color
function Color_RGBToColor(col : TRGB) : TColor;
begin
Result := $10000 * col.b + $100 * col.g + col.r; // ACCESS VIOLATION
HERE if Image greater than 640x480
end;
I'm getting an Access violation when passing the row[0] to the RGBtoColor.
Can anyone see what I might be doing wrong?
The only thing I noticed is that it seems to fail when I use images greater
than 640x480, but I'm willing to concede it may be a bit depth issue.
Smaller image sizes seem to work fine.
Would I be right in thinking that row[0] is the bottom right corner of the
image?
Thanks,
Dominique.
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus