Editar: estoy usando VB.NET en Visual Studio 2019
Tengo un gráfico en un formulario modal con un solo ChartArea que muestra un gráfico de líneas. Necesito que los ejes del gráfico estén escalados 1:1 entre sí. En otras palabras, sin distorsión/estiramiento. Necesito el mismo número de píxeles por unidad en cada eje.
Puedo obtener los valores mínimo y máximo de los ejes de los gráficos (y usar un algoritmo para forzarlos a ser números "bonitos"). Entonces, todo lo que necesito hacer es establecer el tamaño del área trazada en píxeles según la relación de los rangos de valores de los ejes.
Sé que el tamaño del área trazada depende de las propiedades de tamaño ChartArea.Position y ChartArea.InnerPlotPosition (que son valores de 0 a 100 que describen su tamaño porcentual en relación con sus contenedores). El problema es este: cuando sondeo estas propiedades durante la carga del formulario, ambas aparecen como cero. El gráfico muestra los datos y todo funciona, simplemente no puedo cambiar su tamaño como quiero durante la carga porque aparentemente estos valores de tamaño aún no están establecidos.
Si cierro el formulario modal y lo vuelvo a abrir, las propiedades se completan con valores distintos de cero. Pero realmente necesito que funcione la primera vez.
Intenté usar .Refresh() , .Invalidate y .PerformLayout .PerformLayout() tanto en el gráfico como en el formulario durante el evento de carga. También intenté lanzar el formulario mediante programación dos veces en rápida sucesión. Intenté mover la verificación de esas propiedades a una subrutina que se ejecuta al final de la carga del formulario. Nada funciona.
¿Hay alguna forma de saber esos porcentajes de tamaño durante el evento de carga? Gracias por tu ayuda.