473,382 Members | 1,305 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,382 software developers and data experts.

How to center the Panel scroll bars?

I’m using the Panel control that contains a PictureBox control (for
implementing the http://www.codeproject.com/cs/miscctrl/PictureBox.asp).

The Panel is set to AutoScroll = true.

I wish to scroll the appearing vertical and horizontal scrolls bars of the
Panel to the middle of their scrolling range so the contained PictureBox will
be centered inside the Panel.
But I could not find a way to get the scrolls bars for doing that.

Can anybody tell me how can I do that?
---------
Thanks
Sharon
Dec 20 '05 #1
7 18145
You would set the AutoScrollPosition for this.

After my signature is a simple application that demonstrates the idea.

--
Bob Powell [MVP]
Visual C#, System.Drawing

Ramuseco Limited .NET consulting
http://www.ramuseco.com

Find great Windows Forms articles in Windows Forms Tips and Tricks
http://www.bobpowell.net/tipstricks.htm

Answer those GDI+ questions with the GDI+ FAQ
http://www.bobpowell.net/faqmain.htm

All new articles provide code in C# and VB.NET.
Subscribe to the RSS feeds provided and never miss a new article.

using System;

using System.Drawing;

using System.Drawing.Drawing2D;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

namespace CenterScrollPanel

{

/// <summary>

/// Summary description for Form1.

/// </summary>

public class Form1 : System.Windows.Forms.Form

{

private System.Windows.Forms.Panel panel1;

private System.Windows.Forms.Button button1;

/// <summary>

/// Required designer variable.

/// </summary>

private System.ComponentModel.Container components = null;

public Form1()

{

//

// Required for Windows Form Designer support

//

InitializeComponent();

//

// TODO: Add any constructor code after InitializeComponent call

//

}

/// <summary>

/// Clean up any resources being used.

/// </summary>

protected override void Dispose( bool disposing )

{

if( disposing )

{

if (components != null)

{

components.Dispose();

}

}

base.Dispose( disposing );

}

#region Windows Form Designer generated code

/// <summary>

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

/// </summary>

private void InitializeComponent()

{

this.panel1 = new System.Windows.Forms.Panel();

this.button1 = new System.Windows.Forms.Button();

this.SuspendLayout();

//

// panel1

//

this.panel1.AutoScroll = true;

this.panel1.AutoScrollMinSize = new System.Drawing.Size(1024, 768);

this.panel1.Location = new System.Drawing.Point(8, 8);

this.panel1.Name = "panel1";

this.panel1.Size = new System.Drawing.Size(272, 208);

this.panel1.TabIndex = 0;

this.panel1.Paint += new
System.Windows.Forms.PaintEventHandler(this.panel1 _Paint);

//

// button1

//

this.button1.Location = new System.Drawing.Point(16, 232);

this.button1.Name = "button1";

this.button1.TabIndex = 1;

this.button1.Text = "Recenter";

this.button1.Click += new System.EventHandler(this.button1_Click);

//

// Form1

//

this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);

this.ClientSize = new System.Drawing.Size(292, 266);

this.Controls.Add(this.button1);

this.Controls.Add(this.panel1);

this.Name = "Form1";

this.Text = "Form1";

this.ResumeLayout(false);

}

#endregion

/// <summary>

/// The main entry point for the application.

/// </summary>

[STAThread]

static void Main()

{

Application.Run(new Form1());

}

private void panel1_Paint(object sender, System.Windows.Forms.PaintEventArgs
e)

{

e.Graphics.Transform=new
Matrix(1,0,0,1,this.panel1.AutoScrollPosition.X,th is.panel1.AutoScrollPosition.Y);

Pen p=new Pen(Color.Red,3);

e.Graphics.DrawLine(p,512,374,512,394);

e.Graphics.DrawLine(p,502,384,522,384);

p.Dispose();

}

private void button1_Click(object sender, System.EventArgs e)

{

this.panel1.AutoScrollPosition=new Point(

this.panel1.AutoScrollMinSize.Width/2-this.panel1.ClientRectangle.Width/2,

this.panel1.AutoScrollMinSize.Height/2-this.panel1.ClientSize.Height/2);

}

}

}


"Sharon" <Sh*****@newsgroups.nospam> wrote in message
news:0B**********************************@microsof t.com...
I'm using the Panel control that contains a PictureBox control (for
implementing the http://www.codeproject.com/cs/miscctrl/PictureBox.asp).

The Panel is set to AutoScroll = true.

I wish to scroll the appearing vertical and horizontal scrolls bars of the
Panel to the middle of their scrolling range so the contained PictureBox
will
be centered inside the Panel.
But I could not find a way to get the scrolls bars for doing that.

Can anybody tell me how can I do that?
---------
Thanks
Sharon

Dec 20 '05 #2
Thanks Bob,

If I understand your sample correctly, the code that set the Panel scroll
bars to the middle is:
private void button1_Click(object sender, System.EventArgs e)
{
this.panel1.AutoScrollPosition = new Point(
this.panel1.AutoScrollMinSize.Width/2-this.panel1.ClientRectangle.Width/2,
this.panel1.AutoScrollMinSize.Height/2-this.panel1.ClientSize.Height/2);
}

But this code assume that panel1.AutoScrollMinSize is set to a value other
then zero, and by that causing the scroll bars to be visible at all time
regardless to the fact that it’s needed or not.
When I tried this code it causes my Panel to have large scrolling range that
are visible at all time. This behavior is not good for me, as it degenerate
the functionally of the zooming and auto scrolling (see
http://www.codeproject.com/cs/miscctrl/PictureBox.asp).
Did I miss something?

Is there a way to do the centering of the Panel scroll bars and to keep the
auto scroll bar sizing and auto appearance behavior?

---------
Thanks
Sharon
Dec 20 '05 #3
Hi Sharon,

I will give this issue a look some time later. I will update you ASAP.
Thanks

Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Get Secure! - www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.

Dec 22 '05 #4
I believe you can programmatically set the min and max range of the
scroll bars. If this is so, then you would just determine the size of
your image after zooming, set that to the max, set 0 to the min, and
then use Bob's method to center it. This would have to be done
everytime you zoomed in or out, but if you're using the scroll wheel to
zoom, you can tie into that event.

Dec 22 '05 #5
Hi Sharon,

Sorry for letting you wait for so long, I finally have time to look into
this issue.

I think what you want is centering the vertical and horizontal scrollbars,
yes? I think we can get this done, with the code snippet below:

private void button1_Click(object sender, System.EventArgs e)
{
Point pt=new
Point((this.pictureBox1.Location.X+this.pictureBox 1.Width-this.panel1.Client
Rectangle.Width)/2,

(this.pictureBox1.Location.Y+this.pictureBox1.Heig ht-this.panel1.ClientRecta
ngle.Height)/2);
this.panel1.AutoScrollPosition=pt;
}
It works well in my test sample project. Hope it helps

Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Get Secure! - www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.

Dec 27 '05 #6
Thanks a lot for your help.

It works almost perfectly.

The code is now:

public void CenterImage()
{
// Centering the picture inside the panel.
Point pt = m_picBox.Location;
pt.X = (m_outerPanel.ClientSize.Width / 2) - (m_picBox.Width / 2);
pt.Y = (m_outerPanel.ClientSize.Height / 2) - (m_picBox.Height / 2);
m_picBox.Location = pt;

// Setting the panel scroll bars to the center.
pt = new Point((m_picBox.Location.X +
m_picBox.Width -
m_outerPanel.ClientRectangle.Width) / 2,
(m_picBox.Location.Y +
m_picBox.Height -
m_outerPanel.ClientRectangle.Height)/ 2);
m_outerPanel.AutoScrollPosition = pt;
}

And it works, but no perfectly; the panel scrolling is not exactly centering
the image inside the panel, but it's close.
-------
Thank
Sharon
Jan 10 '06 #7
Hi Sharon,

I am glad my reply can help you.

Yes, this code only makes the scrollbars of panel scroll to the center, but
it does not keep the images to the center. Thanks

Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Get Secure! - www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.

Jan 12 '06 #8

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: Anand Ganesh | last post by:
Hi All, I am trying to draw a picture in a panel control. It is drawing up correctly. When the picture size is greater than the panel control, I am expecting horizontal and vertical scroll...
1
by: B Maxey | last post by:
I have a form with a panel. On that panel I am adding a bunch of usercontrols . I add the controls when in the forms constructor. The panel has autoscroll set, and when I resize the form the...
2
by: Jason Chu | last post by:
Simple compatibility question, I have this: <table height="100%" width="50%" border="1"> <tr height="50%"> <td> <asp:Panel id="Panel1" runat="server" Height="100%" Width="100%"...
1
by: Chris Morse | last post by:
I'm trying to figure out how to get Panel to autoscroll a picturebox that changes size. Initially, the picture box is the same size as the panel, but when I add a "zoom" function that doubles the...
4
by: Thiru .Net | last post by:
hi wagner, i have a doubt in panel control in windows application. i have a panel control wherein i have put a picturebox control. i show picture into picturbox control. now i need to zoom in...
1
by: Rob | last post by:
I am dynamically creating a FlowLayoutPanel inside of a Tab Page of a Tab Control... On the form (outside the Tab Control), there is a button that adds a user defined control into the...
2
by: shahoo | last post by:
Hi, I am trying to add some controls (say buttons) to a panel. At some stage the controls are too much to be show on the panel, so I set the Autoscroll property of the panel to true. But my...
1
by: ajishapj | last post by:
hii guys i am ajish i am having a problem with my panel controll in vb.net actually i am creating a panel user controll with out a scroll bars(auto scrolling set to false) ,and i have to...
7
by: raylopez99 | last post by:
I have a logical drawing space much bigger than the viewport (the screen) and I'd like to center the viewport (the screen) to be at the center of the logical drawing space. After following the...
1
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
0
by: ryjfgjl | last post by:
In our work, we often need to import Excel data into databases (such as MySQL, SQL Server, Oracle) for data analysis and processing. Usually, we use database tools like Navicat or the Excel import...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.