Skip to content

(Perf) avoid saving ListView BackgroundImage to disk #5755

@weltkante

Description

@weltkante

Is your feature request related to a problem? Please describe.

ListView.BackgroundImage is stored into a temporary file when transferred to the native control. This puts pressure on the temp file namespace and produces additional IO, as well as requiring complex code to manage lifetime of the file and delete it when no longer needed.

Noted in PR #5744 while simplifying the temp file generation.

Describe the solution you'd like and alternatives you've considered

ListView supports selecting a HBITMAP as background image, so it would make sense to make use of that functionality.

While the BackgroundImage is an arbitrary Image the old code (before PR #5744) always constructed a Bitmap from it in order to generate a temp file seed. This means if we'll create a Bitmap from the Image to form a HBITMAP we do not introduce additional restrictions that didn't exist before.

Also the BackgroundImage always was saved in BMP format, meaning transparency probably never worked (transparent pixels turned out black in my tests). Note that generating a HBITMAP naively in .NET fills transparent pixels with a background color. We should investigate whether ListView is capable of rendering transparent backgrounds properly (there exist flags which seam to indiciate support).

Will this feature affect UI controls?

Yes, ListView will change how it implements BackgroundImage and needs attention to not introduce regressions.

No designer or API changes are required.

Metadata

Metadata

Assignees

Labels

api-suggestion(1) Early API idea and discussion, it is NOT ready for implementationarea-controls-ListViewenhancementProduct code improvement that does NOT require public API changes/additionstenet-performanceImprove performance, flag performance regressions across core releases

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions