Solved

Zoom out

Posted on 2009-05-08
3
627 Views
Last Modified: 2013-12-17
I have a app in which a panel contains roughly 100 picture boxes all with varying size pictures which you can scroll using the panel to see them all. Is there any way that i can zoom out so you can see more of these picture boxes. And also then be able to zoom back in :)

Cheers!
0
Comment
Question by:mike_pro
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 12

Expert Comment

by:wht1986
ID: 24335630
how about setting the image mode of the picture box to Stretch Image. and then having a zoom slider to set the zoom level. at which point just change the size of the picture box and the image inside will scale automatically.
0
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 24335660
I believe you will have to loop through the panel's controls collection and set the size of each picture box to something smaller. You may then have to do some shuffling of the pb's (e.g. put 5 on one row instead of 4).
0
 
LVL 12

Accepted Solution

by:
wht1986 earned 500 total points
ID: 24335810
I made a quick example.  I took a form and docked a trackbar at the bottom with min and max to be 1 to 20.  This will be my zoom factor divided by 10.  I docked a flow layout panel in the rest of the form.  ON form load,  I created a bunch of picture boxes from images and stored the original image size in tag.  Then as the value changed in the trackback i adjust the size of the picture boxes.
  private void Form1_Load(object sender, EventArgs e)
    {
        Assembly assm = Assembly.GetExecutingAssembly();
        string ResourceName = "WinForm_C_Sharp.Graphics.bulb_off.png";
        System.IO.Stream str = assm.GetManifestResourceStream(ResourceName);
        Image img = Bitmap.FromStream(str);
 
        for (int i = 0; i < 20; i++)
        {
            PictureBox pb = new PictureBox();
            pb.SizeMode = PictureBoxSizeMode.StretchImage;
            pb.Width = img.Width;
            pb.Height = img.Height;
            pb.Image = img;
            pb.Tag = new Point(img.Width, img.Height);
            this.flowLayoutPanel1.Controls.Add(pb);
        }
    }
 
    private void trackBar1_ValueChanged(object sender, EventArgs e)
    {
        double scale = this.trackBar1.Value / 10.0;
 
        foreach (PictureBox pb in this.flowLayoutPanel1.Controls)
        {
            Point p = (Point)pb.Tag;
            pb.Height = (int)(p.X * scale);
            pb.Width = (int)(p.Y * scale);
        }
    }

Open in new window

0

Featured Post

Guide to Performance: Optimization & Monitoring

Nowadays, monitoring is a mixture of tools, systems, and codes—making it a very complex process. And with this complexity, comes variables for failure. Get DZone’s new Guide to Performance to learn how to proactively find these variables and solve them before a disruption occurs.

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…
The article shows the basic steps of integrating an HTML theme template into an ASP.NET MVC project
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …
Finding and deleting duplicate (picture) files can be a time consuming task. My wife and I, our three kids and their families all share one dilemma: Managing our pictures. Between desktops, laptops, phones, tablets, and cameras; over the last decade…

730 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