The "controlstyle" thingy is only useful if you're writing your own components, you see. You can try directly adding a line somewhere (e.g. the form's OnCreate) such as this: "SomeObject.ControlStyle := SomeObject.ControlStyle + [csOpaque];"

In the case of the TImage though, that's not the problem. Try this:

1) start a new project
2) dump down a TImage of a reasonable size
3) put a button down
4) put this code in the button's OnClick event handler:

[pascal]procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
for i := 0 to 1000 do
Image1.Canvas.LineTo(Random(Image1.Width), Random(Image1.Height));
end;[/pascal]

Run the program and hold down return for a while with the button selected - you'll see the flicker.

5) Now, set the image's Stretch property to True and repeat.

Notice anything different? .

Seriously, though, I can't recommend Graphics32 enough. I still remember the time when I was trying to help someone reduce the flicker in an email conversation. We got somewhere, but a little while later he cheerfully announced "I've found a great library called Graphics32". He attached a beautiful, alpha-blended, dozens of sprites thingy. With no flicker.

Try it try it try it .