Solved

Display Image list inside ListView

Posted on 2008-06-17
22
26,686 Views
Last Modified: 2011-10-19
Hi All,

I have to display thumbnail images in ListView control. How to give space in between thumb image in List View? (like padding to images)

I have tried:
lstDPView.Margin = new Padding(10, 10, 10, 10);   //// Doesn't work... :-(

This is my code:

            lstDPView = new ListView();
            ImageList imageList = new ImageList();
            imageList.ImageSize = new System.Drawing.Size(67, 95);
            String strDir = "";
            strDir = Environment.CurrentDirectory;
            imageList.Images.Add(Bitmap.FromFile(strDir + @"\img_DP1.jpg"));
            imageList.Images.Add(Bitmap.FromFile(strDir + @"\img_DP2.jpg"));
            imageList.Images.Add(Bitmap.FromFile(strDir + @"\img_DP3.jpg"));
            lstDPView.LargeImageList = imageList;
            ListViewItem item1 = new ListViewItem("");
            item1.ImageIndex = 0;
            ListViewItem item2 = new ListViewItem("");
            item2.ImageIndex = 2;
            ListViewItem item3 = new ListViewItem("");
            item3.ImageIndex = 1;
            // Add the items to the ListView.
            lstDPView.Items.AddRange(new ListViewItem[] {item1,item2,item3});
            lstDPView.Location = new System.Drawing.Point(6, 15);
            lstDPView.Name = "lstDPView";
            lstDPView.Size = new System.Drawing.Size(185, 230);
            lstDPView.ShowItemToolTips = true;
            lstDPView.TabIndex = 0;
            lstDPView.TileSize = new System.Drawing.Size(82, 100);
            lstDPView.UseCompatibleStateImageBehavior = false;
            lstDPView.View = View.Tile;
            lstDPView.ItemSelectionChanged += new ListViewItemSelectionChangedEventHandler(this.lstDPView_ItemSelectionChanged);
            lstDPView.UseCompatibleStateImageBehavior = false;

Thanks in advance.
Babu
0
Comment
Question by:bsbabu7
22 Comments
 
LVL 29

Expert Comment

by:Gautham Janardhan
ID: 21810604
WPF ?
0
 

Author Comment

by:bsbabu7
ID: 21812090
Not WPF
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 21812220
Is the View = Tile necessary, or can you use large icon or small icon?
0
 

Author Comment

by:bsbabu7
ID: 21816068
I can use large icon , but that will give extra space around image which i dont want to..... (i mean bound space)
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 21816211
Are you just wanting to increase the size of an image slightly (with the image centered), to visually separate the tiled images?
0
 

Author Comment

by:bsbabu7
ID: 21817193
This is my requirement: I need to display images(50px X 60px) in thumbnail view with in 200 X 250 px area (doesn't matter if i get vertical scrool)... and i need 10px gap around each thumbnail image.
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 21817206
Can you attach a screen shot of what it looks like now?
0
 

Author Comment

by:bsbabu7
ID: 21817278
Sure. Please find attached.
sshot.jpg
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 21817425
I don't see anything wrong with the screen shot, and so I must be misunderstanding what you are asking for.
0
 

Author Comment

by:bsbabu7
ID: 21821573
Hi, that is my design screenshot, here i'm attaching my current development screenshot. I exactly like in my design file ...

Thanks.
sshot-work.jpg
0
DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

 
LVL 96

Expert Comment

by:Bob Learned
ID: 21821654
So, with tiling, the images don't have as much padding between them, versus the design image, right?
0
 

Author Comment

by:bsbabu7
ID: 21821671
Yes
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 21821722
What happens if you set the TileSize to a larger size?
0
 

Author Comment

by:bsbabu7
ID: 21821892
If i change to LargeIcon.... its look like this....
sshot-work1.jpg
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 21821936
No, I was asking if you have View=Tile, and TileSize larger than (82, 100) what it looks like?

lstDPView.TileSize = new System.Drawing.Size(82, 100);
0
 

Author Comment

by:bsbabu7
ID: 21822097
If i increase tile size is increasing.... but not space in between tiles. I need space to create rectangle around tile.
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 21822250
Have you tried any owner-drawn magic?
0
 

Author Comment

by:bsbabu7
ID: 21822327
This is how i'm creating rectangle around image.
private void lstDPView_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)

        {

          

            ListView lstDP = sender as ListView;

            Graphics g = lstDP.CreateGraphics();

            Rectangle rec = new Rectangle(e.Item.Bounds.X , e.Item.Bounds.Y , e.Item.Bounds.Width , e.Item.Bounds.Height );

            Pen p;

 

            if (e.Item.Selected)

            {

                p = new Pen(Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(127)))), ((int)(((byte)(192))))), 5);

            }

            else

            {

                p = new Pen(lstDP.BackColor, 5);

            }

                g.DrawRectangle(p, rec);

                patientDPInit();

        }

Open in new window

0
 
LVL 9

Accepted Solution

by:
Pacman earned 500 total points
ID: 21961054
I would recommend to insert a margin into your bitmaps.
You can do this directly in your source bitmap files, or use following code snippet to copy your existing bitmap (no margins) to a new bitmap, centered with fixed size.
So you get margins around your bitmaps. Use the new bitmap for you listview.

var bigBmp = new Bitmap(200, 200);
 

Graphics gfx = Graphics.FromImage(bigBmp);

//-- copy your bitmap centerd
 

//## todo: here comes your Bitmap

Bitmap yourBmp = null;
 

//## insert here wanted size (with margins)

int nWantedWidth  = 200;

int nWantedHeight = 200;
 

int x = nWantedWidth/2 - yourBmp.Width/2;

int y = nWantedHeight/2 - yourBmp.Height/2;
 

gfx.DrawImage(yourBmp, 

   new Rectangle(x, y, yourBmp.Width, yourBmp.Height), // dest rect

   new Rectangle(0, 0, yourBmp.Width, yourBmp.Height), // source rect

   GraphicsUnit.Pixel);
 

// now you can use "bigBmp" for your listview.

Open in new window

0
 

Expert Comment

by:John500
ID: 32714197
Can any of you take a look at this question:

http://www.experts-exchange.com/Programming/Languages/.NET/Visual_Basic.NET/Q_26185859.html

It's simple solution I'm sure  -   when you know how to do it.

Thanks
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In my previous two articles we discussed Binary Serialization (http://www.experts-exchange.com/A_4362.html) and XML Serialization (http://www.experts-exchange.com/A_4425.html). In this article we will try to know more about SOAP (Simple Object Acces…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
This Micro Tutorial will teach you how to censor certain areas of your screen. The example in this video will show a little boy's face being blurred. This will be demonstrated using Adobe Premiere Pro CS6.
This tutorial gives a high-level tour of the interface of Marketo (a marketing automation tool to help businesses track and engage prospective customers and drive them to purchase). You will see the main areas including Marketing Activities, Design …

867 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now