Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 26856
  • Last Modified:

Display Image list inside ListView

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
bsbabu7
Asked:
bsbabu7
1 Solution
 
Gautham JanardhanCommented:
WPF ?
0
 
bsbabu7Author Commented:
Not WPF
0
 
Bob LearnedCommented:
Is the View = Tile necessary, or can you use large icon or small icon?
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
bsbabu7Author Commented:
I can use large icon , but that will give extra space around image which i dont want to..... (i mean bound space)
0
 
Bob LearnedCommented:
Are you just wanting to increase the size of an image slightly (with the image centered), to visually separate the tiled images?
0
 
bsbabu7Author Commented:
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
 
Bob LearnedCommented:
Can you attach a screen shot of what it looks like now?
0
 
bsbabu7Author Commented:
Sure. Please find attached.
sshot.jpg
0
 
Bob LearnedCommented:
I don't see anything wrong with the screen shot, and so I must be misunderstanding what you are asking for.
0
 
bsbabu7Author Commented:
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
 
Bob LearnedCommented:
So, with tiling, the images don't have as much padding between them, versus the design image, right?
0
 
bsbabu7Author Commented:
Yes
0
 
Bob LearnedCommented:
What happens if you set the TileSize to a larger size?
0
 
bsbabu7Author Commented:
If i change to LargeIcon.... its look like this....
sshot-work1.jpg
0
 
Bob LearnedCommented:
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
 
bsbabu7Author Commented:
If i increase tile size is increasing.... but not space in between tiles. I need space to create rectangle around tile.
0
 
Bob LearnedCommented:
Have you tried any owner-drawn magic?
0
 
bsbabu7Author Commented:
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
 
PacmanCommented:
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
 
John500Commented:
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

Get your Conversational Ransomware Defense e‑book

This e-book gives you an insight into the ransomware threat and reviews the fundamentals of top-notch ransomware preparedness and recovery. To help you protect yourself and your organization. The initial infection may be inevitable, so the best protection is to be fully prepared.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now