473,566 Members | 3,309 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

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 18181
You would set the AutoScrollPosit ion 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.Collecti ons;

using System.Componen tModel;

using System.Windows. Forms;

using System.Data;

namespace CenterScrollPan el

{

/// <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.Componen tModel.Containe r components = null;

public Form1()

{

//

// Required for Windows Form Designer support

//

InitializeCompo nent();

//

// TODO: Add any constructor code after InitializeCompo nent call

//

}

/// <summary>

/// Clean up any resources being used.

/// </summary>

protected override void Dispose( bool disposing )

{

if( disposing )

{

if (components != null)

{

components.Disp ose();

}

}

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 InitializeCompo nent()

{

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

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

this.SuspendLay out();

//

// panel1

//

this.panel1.Aut oScroll = true;

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

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

this.panel1.Nam e = "panel1";

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

this.panel1.Tab Index = 0;

this.panel1.Pai nt += new
System.Windows. Forms.PaintEven tHandler(this.p anel1_Paint);

//

// button1

//

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

this.button1.Na me = "button1";

this.button1.Ta bIndex = 1;

this.button1.Te xt = "Recenter";

this.button1.Cl ick += new System.EventHan dler(this.butto n1_Click);

//

// Form1

//

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

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

this.Controls.A dd(this.button1 );

this.Controls.A dd(this.panel1) ;

this.Name = "Form1";

this.Text = "Form1";

this.ResumeLayo ut(false);

}

#endregion

/// <summary>

/// The main entry point for the application.

/// </summary>

[STAThread]

static void Main()

{

Application.Run (new Form1());

}

private void panel1_Paint(ob ject sender, System.Windows. Forms.PaintEven tArgs
e)

{

e.Graphics.Tran sform=new
Matrix(1,0,0,1, this.panel1.Aut oScrollPosition .X,this.panel1. AutoScrollPosit ion.Y);

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

e.Graphics.Draw Line(p,512,374, 512,394);

e.Graphics.Draw Line(p,502,384, 522,384);

p.Dispose();

}

private void button1_Click(o bject sender, System.EventArg s e)

{

this.panel1.Aut oScrollPosition =new Point(

this.panel1.Aut oScrollMinSize. Width/2-this.panel1.Cli entRectangle.Wi dth/2,

this.panel1.Aut oScrollMinSize. Height/2-this.panel1.Cli entSize.Height/2);

}

}

}


"Sharon" <Sh*****@newsgr oups.nospam> wrote in message
news:0B******** *************** ***********@mic rosoft.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(o bject sender, System.EventArg s e)
{
this.panel1.Aut oScrollPosition = new Point(
this.panel1.Aut oScrollMinSize. Width/2-this.panel1.Cli entRectangle.Wi dth/2,
this.panel1.Aut oScrollMinSize. Height/2-this.panel1.Cli entSize.Height/2);
}

But this code assume that panel1.AutoScro llMinSize 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 programmaticall y 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(o bject sender, System.EventArg s e)
{
Point pt=new
Point((this.pic tureBox1.Locati on.X+this.pictu reBox1.Width-this.panel1.Cli ent
Rectangle.Width )/2,

(this.pictureBo x1.Location.Y+t his.pictureBox1 .Height-this.panel1.Cli entRecta
ngle.Height)/2);
this.panel1.Aut oScrollPosition =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.Locati on;
pt.X = (m_outerPanel.C lientSize.Width / 2) - (m_picBox.Width / 2);
pt.Y = (m_outerPanel.C lientSize.Heigh t / 2) - (m_picBox.Heigh t / 2);
m_picBox.Locati on = pt;

// Setting the panel scroll bars to the center.
pt = new Point((m_picBox .Location.X +
m_picBox.Width -
m_outerPanel.Cl ientRectangle.W idth) / 2,
(m_picBox.Locat ion.Y +
m_picBox.Height -
m_outerPanel.Cl ientRectangle.H eight)/ 2);
m_outerPanel.Au toScrollPositio n = 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
7895
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 bars to draw up but for some reason it is not appearing. I have set Autoscroll = true and even the margin values for scroll but the
1
2175
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 panel scroll shows up. But when I first show the form, there is no scrollbar on the panel. How do I make the panel show the scroll bar when the...
2
8338
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%" CssClass="scroll"> <asp:Label id="Label1" runat="server">Label</asp:Label></asp:Panel> </td> </tr> <tr height="50%">
1
3242
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 picturebox's size, the panel does not display any scroll bars. Now, even in the IDE designer, I cann't get scroll bars to appear. I've set the...
4
10549
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 and zoom out the picture in the picturebox control. the picturebox control is within panel(autoscroll is enabled true) scroll bars are enabled.
1
5334
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 FlowLayoutPanel within the Selected Tab. This is working fine, except that when over five of the user defined controls get added to the FlowLayoutPanel,...
2
1786
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 problem is that I don't want the user to use the scroll bars of the panel, I want to add two custom buttons to scroll the panel. When I set the Visible...
1
1343
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 scroll the panel using an external button
7
3547
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 excellent transforms specified on Bob Powell's site, I still wonder if there's an easier way of centering it than the following procedure? Here is...
0
7673
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main...
0
8109
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that...
0
7953
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the...
0
6263
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then...
1
5485
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes...
0
5213
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert...
0
3643
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in...
1
2085
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
1
1202
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

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.