Re: More icon res in LV
- Posted by jordah at btopenworld.com Jan 09, 2003
- 492 views
----- Original Message ----- From: <cafromsw at yahoo.com> To: "EUforum" <EUforum at topica.com> Subject: Re: More icon res in LV > > Thanks for the feedback. I still can't tell if I am > the only one with this problem, or if I am using > win32lib incorrectly. I was hoping to hear from > someone involved in the project to find out. U don't have to be a win32lib programmer to understand how things work in win32lib moreso windows! > If > Windows can display a 32x32 icon properly in an > LVS_REPORT ListView it seems reasonable that I should > be able to as well. I will see if I can figure out > how to use stretchBlt() to reduce it to a 16x16 icon. > Sorry about the mangled code below but Yahoo mail > didn't take the paste properly. Chris it all depends at times on the number of colors an icon or image has. if a high quality image ie having 256 or more colors is reduced to 16 X 16. there is bound to be some color loss. Try using an icon editor and try converting a 32X32(16bit) icon to 16 X 16 and u'll see what i mean. this is not windows fault. it all boils down to resolution. there is no way u will shrink an icon by half and expect same quality. it will have to lose have the color data. eg 32 X 32 displayed as 16 X 16. will cause loss, what about the other colours of the 16 pixels. thuink about it. Jordah > cafromsw at yahoo.com > > --- jordah at btopenworld.com wrote: > > > > hi all, > > The image lists were designed to hold images of > > same dimensions ie if u > > made an image list of 16 X 16 all images larger will > > be cropped and those > > smaller will appear "as-is". Also the imagelist > > functions require a handle > > because their need to make one large > > bitmap(memory/compatible) that contains > > all the images. Using Stretchblt alone,is no use > > because it actually creates > > another memory bitmap that is identical to original > > but stretched using > > specified raster operations. The only possible way > > known to me at the moment > > is using the output memory bitmap in the output DC > > from stretchblt(). so use > > GetObjects() to obtain the handle of the bitmap from > > the outputDC. Then use > > that handle. I hope i make some sense. > > > > Jordah ferguson > > > > ----- Original Message ----- > > From: "Jonas Temple" <jktemple at yhti.net> > > To: "EUforum" <EUforum at topica.com> > > Sent: Wednesday, January 08, 2003 9:49 PM > > Subject: RE: More icon res in LV > > > > > > > I ran into this when I worked on my xpm icon > > library (available in > > > Recent Contributions). What I found was that when > > you add an icon to an > > > image list for displaying in a list view if the > > image is larger/smaller > > > than 16x16 (assuming report view) then this > > somehow messed up the images > > > in the image list. I created my list view with > > ICON style and then used > > > stretchBlt to ensure the image was 32x32. > > > > > > I thought this took care of the problem and then > > recently found out this > > > trick worked on Win2K but didn't work on Win98. > > :( Back to the drawing > > > board. > > > > > > Unless anyone else has any wisdom on this, I would > > suggest making sure > > > that all icons you add to the image list for a > > list view are 16x16. If > > > I remember correctly the image you were > > referencing in shell32.dll is > > > larger than 16x16. > > > > > > Jonas > > > cafromsw at yahoo.com wrote: > > > > I have been doing more research into my icon > > > > resolution problem, mostly because I hate it > > when I > > > > don't understand something and can't figure it > > out. I > > > > have decided to inlcude a sample program and a > > > > screenshot of the output on my computers. I > > tried it > > > > on 5 WinME systems and a dual boot laptop with > > WinXP. > > > > Here is the code I used for the screenshot: > > > > > > > > ---------------------------- > > > > include win32lib.ew > > > > > > > > constant Win1 = createEx( Window, "LV Test", 0, > > > > Default, Default, 400, 300, 0, 0) > > > > > > > > constant LV1 = createEx( ListView, {"Column 1"}, > > Win1, > > > > 4, 10, 300, 100, > > > > > > > > or_all({LVS_REPORT,LVS_SHOWSELALWAYS}), 0) > > > > > > > > constant LV2 = createEx( ListView, {"Column 1"}, > > Win1, > > > > 4, 120, 300, 100, > > > > > > > > or_all({LVS_REPORT,LVS_SHOWSELALWAYS}), 0) > > > > > > > > object OK > > > > seq ic ic = {} > > > > seq sq sq = {} > > > > > > > > ic &= addIcon(extractIcon({"shell32.dll",1})) > > > > > > > > -- disks04.ico is from win32lib\demo it > > contains, in <snip> > >