[Lazarus] TImage - Getting image properties in 'canvas space'

Marc Weustink marc.weustink at cuperus.nl
Thu Apr 19 10:46:20 CEST 2012


Mattias Gaertner wrote:
> On Tue, 17 Apr 2012 17:06:47 +0200
> Marc Weustink<marc.weustink at cuperus.nl>  wrote:
>
>> Mattias Gaertner wrote:
>>> On Tue, 17 Apr 2012 12:12:21 +0200
>>> Marc Weustink<marc.weustink at cuperus.nl>   wrote:
>>>
>>>> Mattias Gaertner wrote:
>>>>>
>>>>> Reimar Grabowski<reimgrab at web.de>   hat am 16. April 2012 um 16:42
>>>>> geschrieben:
>>>>>
>>>>>    >   Hi,
>>>>>    >
>>>>>    >   I load a TLazIntfImage from disk, manipulate it and show it on my
>>>>> form in a TImage. Center, Proportional and Stretch properties of the
>>>>> TImage are set to true.
>>>>>    >   Now I want to draw some overlays onto it (drawing to the canvas in
>>>>> the OnPaint event). Therefor I obviously need the origin and dimensions
>>>>> of the loaded image in 'canvas space', but I did not find a way to
>>>>> retrieve this information. Do I have to calculate them myself or can the
>>>>> TImage give me the needed information?
>>>>>
>>>>> The image is painted to the area defined by the protected method DestRect.
>>>>>
>>>>> Maybe this can be made public.
>>>>>
>>>>> At the moment you have to descend your own TImage class to access it or
>>>>> write a hack class (e.g. via a class helper).
>>>>
>>>> TImage is not meant to draw to. If you want to custom paint your image,
>>>> use a TPaintbox
>>>>
>>>> A TImage is for display only.
>>>
>>> TImage has a published OnPaint event. Painting some overlays makes
>>> sense. And for this you need to know where the image is on the canvas.
>>
>> Who has added this ? Delphi has no OnPaint event.
>>
>> Yes, if we have an event, we should provide a way to paint.
>> But to me this is a can of worms, since stretching is handled internally
>> while the user event draws on the canvas, independent of the stretching.
>> If you ask me, I wouldn't have added it.
>
> I don't see many worms in the can, so I made it public.
> It's a useful feature that costs us not much.

On scaled images there is no way to tell which source pixel corresponds 
to a destination pixel.

Marc




More information about the Lazarus mailing list