From the graphics unit:
type
TColor = TGraphicsColor;
Thus, TColor and TGraphicsColor are the same. TGraphicsColor is declared in unit GraphType which does not belong to the LCL. This way the usual colors can be used also in non-LCL applications (provided that package LazUtils is included).
As for your "if" never getting true for the same color: maybe the colors are different by a tiny amound? maybe there is a difference in the 4th byte which is used in the LCL to identify system colors. In BGRABitmap, the 4th byte, however, is used for the alpha channel.
Just set a breakpoint on the "if" and inspect the colors, ideally in hex, so that you can identify the 4th byte. If the debugger refuses to extract the values introduce two temporary variables to which you assign the colors:
var
c1, c2: string;
...
c1 := Format('%.8x', [image.Canvas.Pixels[x, y]); // Use strings for Hex presentation (or in Laz 4 switch the debugger to hex)
c2 := Format('%.8x', [form1.colorLabel1.color]);
if ((image.Canvas.Pixels[x,y ] = form1.colorLabel.color) then // <--- put a breakpoint on this line and inspect c1 and c2
If form1.colorLabel.color is a system color you could convert it to its rgb value before comparing:
if ((image.Canvas.Pixels[x,y] = ColorToRGB(form1.colorLabel.color)) then