VisualStyleRenderer.GetBackgroundRegion(IDeviceContext, Rectangle) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает область для фона текущего элемента визуального стиля.
public:
System::Drawing::Region ^ GetBackgroundRegion(System::Drawing::IDeviceContext ^ dc, System::Drawing::Rectangle bounds);
public System.Drawing.Region GetBackgroundRegion (System.Drawing.IDeviceContext dc, System.Drawing.Rectangle bounds);
public System.Drawing.Region? GetBackgroundRegion (System.Drawing.IDeviceContext dc, System.Drawing.Rectangle bounds);
member this.GetBackgroundRegion : System.Drawing.IDeviceContext * System.Drawing.Rectangle -> System.Drawing.Region
Public Function GetBackgroundRegion (dc As IDeviceContext, bounds As Rectangle) As Region
Параметры
Объект IDeviceContext, который будет использоваться при выполнении данной операции.
Возвращаемое значение
ОбластьRegion, содержащая фон текущего элемента визуального стиля.
Исключения
dc
имеет значение null
.
Примеры
В следующем примере кода показано, как использовать GetBackgroundRegion метод в пользовательском элементе управления. В этом примере используется GetBackgroundRegion для получения Region элемента заголовка окна, возвращаемого свойством VisualStyleElement.Window.Caption.Active . Используется Region для задания Control.Region свойства элемента управления, чтобы строка заголовка окна отображалась со скругленными углами, определенными стандартным визуальным стилем Windows XP. Этот пример кода является частью более крупного примера, предоставленного VisualStyleRenderer для обзора класса.
// Calculate and set the clipping region for the control
// so that the corners of the title bar are rounded.
private:
void SetClipRegion()
{
if (!Application::RenderWithVisualStyles)
{
return;
}
Graphics^ g = this->CreateGraphics();
// Get the current region for the window caption.
if (SetRenderer(windowElements["windowCaption"]))
{
System::Drawing::Region^ clipRegion =
renderer->GetBackgroundRegion(g,
elementRectangles["windowCaption"]);
// Get the client rectangle, but exclude the region
// of the window caption.
int height = (int)clipRegion->GetBounds(g).Height;
System::Drawing::Rectangle nonCaptionRect = Rectangle(
ClientRectangle.X, ClientRectangle.Y + height,
ClientRectangle.Width, ClientRectangle.Height - height);
// Add the rectangle to the caption region, and
// make this region the form's clipping region.
clipRegion->Union(nonCaptionRect);
this->Region = clipRegion;
}
}
// Calculate and set the clipping region for the control
// so that the corners of the title bar are rounded.
private void SetClipRegion()
{
if (!Application.RenderWithVisualStyles)
{
return;
}
using (Graphics g = this.CreateGraphics())
{
// Get the current region for the window caption.
if (SetRenderer(windowElements["windowCaption"]))
{
Region clipRegion = renderer.GetBackgroundRegion(
g, elementRectangles["windowCaption"]);
// Get the client rectangle, but exclude the region
// of the window caption.
int height = (int)clipRegion.GetBounds(g).Height;
Rectangle nonCaptionRect = new Rectangle(
ClientRectangle.X,
ClientRectangle.Y + height,
ClientRectangle.Width,
ClientRectangle.Height - height);
// Add the rectangle to the caption region, and
// make this region the form's clipping region.
clipRegion.Union(nonCaptionRect);
this.Region = clipRegion;
}
}
}
' Calculate and set the clipping region for the control
' so that the corners of the title bar are rounded.
Private Sub SetClipRegion()
If Not Application.RenderWithVisualStyles Then
Return
End If
Using g As Graphics = Me.CreateGraphics()
' Get the current region for the window caption.
If SetRenderer(windowElements("windowCaption")) Then
Dim clipRegion As Region = _
renderer.GetBackgroundRegion(g, _
elementRectangles("windowCaption"))
' Get the client rectangle, but exclude the
' region of the window caption.
Dim height As Integer = _
CInt(clipRegion.GetBounds(g).Height)
Dim nonCaptionRect As _
New Rectangle(ClientRectangle.X, _
ClientRectangle.Y + height, _
ClientRectangle.Width, _
ClientRectangle.Height - height)
' Add the rectangle to the caption region, and
' make this region the form's clipping region.
clipRegion.Union(nonCaptionRect)
Me.Region = clipRegion
End If
End Using
End Sub
Комментарии
Этот метод можно использовать для получения Region элемента визуального стиля с частично прозрачными или альфа-смешанными частями в фоновом режиме.