Je réalise un dessin personnalisé dans des cellules datagridview et j'ai des éléments qui peuvent s'étendre verticalement sur plusieurs cellules. Un élément affiche du texte et le problème est de savoir comment puis-je dessiner uniquement la partie du texte de la cellule? J'ai le rectangle de l'objet et les cellules.Comment dessiner une sous-section de texte à l'aide de graphiques .net
Actuellement, je dessine tous le texte sur chaque peinture cellulaire, c'est-à-dire que je dessine sur des cellules autres que celle à partir de laquelle je suis en train de peindre. Cela m'oblige à effacer le texte précédent (afin qu'il ne soit pas flou et gras) ... donc je dessine la corde deux fois par cellule. Pas très efficace.
//get the actual bounds of this entire item spanning across multiple cells
RectangleF sRectF = GetItemRectF(startX + leftMargin + 2, widthForItem, cellBounds, calItem);
//we clear it out first, otherwise the text looks bolded if we keep drawing a black string over and over
//todo should figure out how to only draw this cells section? cellBounds subsection of sRectF somehow
graphics.DrawString(calItem.Description, new Font("Tahoma", 8), new SolidBrush(itemBackColor), sRectf);
graphics.DrawString(calItem.Description, new Font("Tahoma", 8), new SolidBrush(Color.Black), sRectF);
ce que je pourrais tirer la corde sur quelques graphiques temp puis arracher les bornes cellulaires partie et d'en tirer que sur les graphiques réels? Y a-t-il un meilleur moyen?
Merci
Réponse
Region tempRegion = graphics.Clip;
graphics.Clip = new Region(cellBounds);
graphics.DrawString(calItem.Description, new Font("Tahoma", 8), new SolidBrush(Color.Black), sRectF);
graphics.Clip = tempRegion;
Ahh le Clip est ce que je voulais ... merci. – dotjoe