Comment modifier C# Tableau de contrôle chartArea pourcentages
Si j'ai un tableau de contrôle avec 2 chartAreas
, le contrôle de graphique par défaut met le chartAreas sur le dessus de chaque autre fait de chaque région à prendre 50% de la taille de la carte de contrôle.
Est-il un moyen de changer le chartAreas' pour cent de sorte que je pourrais dire, ont le diagramme du haut prendre 75% de la superficie, et le diagramme inférieur à 25%?
Code, s'il vous plaît...
Pour cette partie, je suis en utilisant le concepteur de générer le graphique. Alors que je pouvais copier ce code, je ne suis pas sûr qu'il serait très utile. C'est juste une norme graphique avec 2 chartAreas. Il n'y a pas de code de mon propre qui affecte cela, il suffit de le designer. Je suis en train de voir si quelqu'un connaît le code pour faire cela.
Pour cette partie, je suis en utilisant le concepteur de générer le graphique. Alors que je pouvais copier ce code, je ne suis pas sûr qu'il serait très utile. C'est juste une norme graphique avec 2 chartAreas. Il n'y a pas de code de mon propre qui affecte cela, il suffit de le designer. Je suis en train de voir si quelqu'un connaît le code pour faire cela.
OriginalL'auteur Xantham | 2013-03-15
Vous devez vous connecter pour publier un commentaire.
Donc, j'ai finalement trouvé ça, mais je ne pense pas qu'il est très bien documenté. Il y a chaque
chartArea
a la propriété ChartArea.Position. Cette propriété de type ElementPosition, et contient 4 propriétés qui sont pertinentes à ce problème.Hauteur: Obtient ou définit la hauteur d'un élément de graphique.
Largeur: Obtient ou définit la largeur d'un élément de graphique.
X: Obtient ou définit la relative coordonnée X du coin supérieur gauche d'un élément de graphique.
Y: Obtient ou définit la relative coordonnée Y du coin supérieur gauche d'un élément de graphique.
Quand vous creusez plus profond, le
Height
etWidth
propriétés sont aussi déclaré en coordonnées relatives, de sorte que vous ne pouvez entrée 0 - 100.Fondamentalement, vous devez modifier la hauteur de chaque, et chaque Y déplacer shift. Après la création initiale, il ne sera pas automatiquement ajuster les autres numéros.
Par exemple, si je viens de changer la
Height
de chartArea[1] à quelque chose de plus petit, il sera toujours ancré à l'endroit où il était auparavant, comme il serait logique, en laissant beaucoup d'espace blanc en dessous.Si je puis augmenter la
Height
de chartArea[0], il peut attirer plus de chartArea[1] que nous venons de redimensionnée. Alors je dois mettre leY
de chartArea[1] pour vous déplacer vers le bas, de sorte qu'il n'est pas tiré dessus, et le blanc de l'espace a disparu.Donc, pour obtenir quelque chose de similaire à ce que j'ai demandé dans la question, je l'ai mis à:
Pour faire de cette explication un peu plus claire, je vais consulter le schéma de contrôle que ces chartAreas sont dans "la mère".
Ce sont les pourcentages, mais pour cet exemple, nous supposons que le parent de la taille est de 100 pixels.
Cette établit le premier chartArea commencer à afficher à 10 px, et il est sur 60px de haut. Puis, il commence l'affichage de la deuxième chartArea à 70px, et il est à propos de 20px de hauteur.
Si ce tableau a été 200px de hauteur, les proportions seraient les mêmes, mais le fait de pixels serait double (la première zone de graphique à 60 rendrait 120px de haut).
Je n'ai pad de cela un peu plus dans mon programme, car cela a des titres d'écraser les étiquettes de l'axe, mais j'ai senti que ces numéros ont aidé à expliquer mieux.
Le seul endroit adéquat (produisant le résultat correct) pour mettre ce que j'ai pu trouver jusqu'à présent est la chart_Paint gestionnaire d'événement (mais pas PrePaint/PostPaint ou n'importe où ailleurs). Mais elle produit visible corbeille lors de l'agrandissement de la fenêtre.
Donc, je suis vraiment très curieux de savoir comment résoudre ce problème...
Le meilleur résultat que je pouvais faire était par le mettre à la Peinture gestionnaire d'événement d'un autre contrôle sur le même objet tabpage, mais il n'est pas encore parfait et semble aussi sale hack.
OriginalL'auteur Xantham
Vous pouvez également définir le deuxième graphique .Position sur l'axe Y vers le bas de la première carte. De cette façon, vous ne devez vous soucier de l'endroit où le premier tableau est situé à. Le code ressemble à ceci:
Vous pouvez également tablette .Position Y, bien sûr, en fonction de la quantité de blanc d'espace entre les cartes. J'ai utilisé cette approche pour une application que j'ai intégré qui utilise plusieurs graphiques et des garanties de chaque graphique sera bien situé, indépendamment de ce qui est fait avec un graphique.
OriginalL'auteur user1750310