Cómo dibujar elementos de ventana de estilo clásico de Windows

Creamos algunas 'ventanas' personalizadas en nuestro programa y cuandoVisualStyles Si estamos habilitados, podemos encontrar cada elemento de la ventana y su tamaño y pintarlos nosotros mismos, incluidos los botones de minimizar y cerrar con los Renderers apropiados.

Nos gustaría hacer lo mismo cuandoVisualStyles están deshabilitados y actualmente dibujan nuestras propias ventanas, pero son bastante feos. ¿Es posible en WinForms C # dibujar las ventanas de estilo Windows Classic? He encontrado elClassicBorderDecorator Pero es para WPF.

O, en su defecto, ¿cómo podemos obtener los tamaños de píxel de las decoraciones de ventanas que hacemos de la siguiente manera:

// Get the height of the window caption.
if (SetRenderer(windowElements["windowCaption"]))
{
  captionHeight = renderer.GetPartSize(graphics.Graphics, ThemeSizeType.True).Height;
}

// Get the thickness of the left, bottom, 
// and right window frame.
if (SetRenderer(windowElements["windowLeft"]))
{
  frameThickness = renderer.GetPartSize(graphics.Graphics, ThemeSizeType.True).Width;
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta