我了解与表单/控件有关的“客户矩形”的概念,
但我不明白两者之间有什么区别Control.ClientRectangle
和Control.DisplayRectangle
..
在阅读了这两个属性的MSDN页面后,不清楚其中一个何时返回另一个值。.ClientRectangle
的MSDN页面显示:
很清楚
但是.DisplayRectangle
的MSDN页面显示:
现在还不清楚。
在继承控件中,我想在哪里使.DisplayRectangle
值不同于.ClientRectangle
?
Control.ClientRectangle:
https://msdn.microsoft.com/en-us/library/system.windows.forms.control.clientrectangle.aspx
Control.DisplayRectangle:
https://msdn.microsoft.com/en-us/library/system.windows.forms.control.displayrectangle.aspx
最佳答案
DisplayRectangle是控件的内部 Canvas ,因此当您具有滚动控件时,DisplayRectangle会大于ClientRectangle,后者仅是您在屏幕上看到的区域:
panel1.AutoScrollMinSize = new Size(0, panel1.Height * 2);
panel1.Paint += panel1_Paint;
void panel1_Paint(object sender, PaintEventArgs e) {
e.Graphics.FillEllipse(Brushes.Red, panel1.DisplayRectangle);
e.Graphics.DrawEllipse(Pens.Green, panel1.ClientRectangle);
}