2017-05-31 53 views
0

我正在WinForms应用程序中工作。在我的场景中,我需要在调整单元格矩形大小时在最后一个字符的开始位置隐藏文本。我可以通过从第一个字符中删除字符并在矩形中绘制字符来解决此问题。是否可以在单元格矩形中部分绘制字符?

现在我需要在调整单元格矩形大小时部分地绘制字符。请参阅附件图片。例如,单元格值为“20.229.88”,在调整大小后单元格值应为“0.229.88”,但“0”应显示为部分。

enter image description here

请人帮我,如果这是可能的。

在此先感谢。

+0

你可以发布你使用的代码吗?假设它是GDI绘图(来自您的标签),您可以将StringFormat设置为将文本与绘制矩形对齐。 – James

+0

如果您隐藏的文本总是采用相同的格式,您可以尝试在其前面放置某些内容以隐藏不需要的部分 - 请考虑一个窗口,在该窗口中玻璃显示您想要查看的位和框架和墙壁隐藏其余部分。无可否认,在实践中,这可能很难做到...... – Gareth

+0

嗨@詹姆斯,这里是代码,我用来隐藏开始处的文本'string text = e.DisplayText; SizeF size1 = e.Graphics.MeasureString(text,new Font(e.Style.Font.Facename,e.Style.Font.Size)); 而(!e.TextRectangle.Contains(新的Rectangle(e.TextRectangle.Location,新的大小((INT)size1.Width,(INT)size1.Height)))){ 文本 = text.Remove(0, 1); size1 = e.Graphics.MeasureString(text,new Font(e.Style.Font.Facename,e.Style.Font.Size)); } e.DisplayText = text;' – Prithiv

回答

1

您可以将StringFormat对象传递给DrawString方法,该方法将文本设置为在矩形内右对齐,然后左侧被切断。

var sf = new StringFormat(StringFormatFlags.NoWrap); 
sf.Alignment = StringAlignment.Far; 
sf.Trimming = StringTrimming.None; 

e.Graphics.DrawString("my text", this.Font, Brushes.Blue, new RectangleF(10,0,120,20), sf); 
+0

嗨@詹姆斯,非常感谢你。它的工作正常 – Prithiv