[Lazarus] High-DPI TImageList

Leandro Diaz leandrodiazoe at gmail.com
Thu Feb 8 22:03:10 CET 2018


Thanks. If transparency works fine the best should be deprecate the
component.

El feb 8, 2018 5:08 PM, "Ondrej Pokorny via Lazarus" <
lazarus at lists.lazarus-ide.org> escribió:

> First of all, the image list became multi-resolution. You have the new
> class TCustomImageListResolution that is the new "TCustomImageList". You
> have to move your custom code there.
>
> On 08.02.2018 16:02, lainz via Lazarus wrote:
>
>> Hi, I have a component BGRAImageList that fixes basically the alpha
>> channels
>> of the regular ImageList on Linux using BGRABitmap.
>>
>> I did not code that component, but I'm the one that updates the package.
>>
>> Sources:
>> https://github.com/bgrabitmap/bgracontrols/blob/master/bgraimagelist.pas
>>
>> It works fine in 1.8, but in trunk there are changes like:
>>
>> 1.8
>> TCustomImageList = class(TLCLReferenceComponent)
>>
>> 1.9 is TCustomImageList = class(TLCLComponent), so the method
>> ReferenceNeeded is not available.
>>
>> Questions:
>> - *What does ReferenceNeeded, and if it is necessary on 1.9*.
>>
>
> On win32 you need a handle for WinAPI native controls. The real imagelist
> code (along with ReferenceNeeded method) was moved into
> TCustomImageListResolution.
>
> You have to move all your code into a TCustomImageListResolution
> descendant and register it in TCustomImageList.GetResolutionClass.
>
> Another is this:
>>
>> 1.8
>> procedure Draw(ACanvas: TCanvas; AX, AY, AIndex: Integer; ADrawingStyle:
>> TDrawingStyle; AImageType: TImageType;
>>        ADrawEffect: TGraphicsDrawEffect); overload; virtual;
>>
>> 1.9
>> procedure Draw(ACanvas: TCanvas; AX, AY, AIndex: Integer; ADrawingStyle:
>> TDrawingStyle; AImageType: TImageType;
>>        ADrawEffect: TGraphicsDrawEffect); overload;
>>
>> In 1.9 the virtual was removed and I can't use override anymore.
>>
>
> Again, override TCustomImageListResolution.Draw
>
> My question is *if the method still will be called instead of the LCL one
>> in
>> 1.9 without using override*. I know this is a basic of OOP but I need a
>> bit
>> of help because I never use virtual and overload.
>>
>
> Override TCustomImageListResolution.Draw
>
> Another question: If I remove override to compile in 1.9, what happens in
>> 1.8?
>>
>
> The new image list from 1.9 is not compatible with 1.8. You have to
> release a new version for 1.9+ only.
>
> I never use IFDEF LCL_FULLVERSION and don't know how to use it, any chances
>> to have 2 different methods, one with override and other without, one for
>> 1.8 and one for 1.9 or newer?
>>
>> And the big question:
>>
>> *Transparency is now or will be fixed on linux, so I don't need this
>> component anymore and I can archive it?*
>>
>
> I didn't change anything about transparency but for me transparency works
> fine on both Gtk2 and Qt Linux. (I don't know any other details.)
>
> Ondrej
> --
> _______________________________________________
> Lazarus mailing list
> Lazarus at lists.lazarus-ide.org
> https://lists.lazarus-ide.org/listinfo/lazarus
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20180208/313de8a2/attachment-0001.html>


More information about the Lazarus mailing list