1

我正在为VS2012编辑器扩展,我需要在编辑器中找到任何字符的逻辑像素宽度。在Visual Studio编辑器中获取任何字符的逻辑像素宽度?

我认为所有字符共享相同的宽度,但共享宽度随着编辑器缩放量的变化而变化;当变焦率为100%时,所有字符都是7个逻辑像素宽,否则它们都是7.33个逻辑像素宽。

我可以写找到任何字符的宽度:
// textview is an ITextView
textview.Caret.ContainingTextViewLine.TextWidth /
textview.Caret.ContainingTextViewLine.Length

然而,问题是当插入符号是上线是空的,因为这将是一个除数为零。

+0

难道你只是模拟一个空间,获取宽度,并模拟删除空间,当你想要的宽度? – SimpleVar 2013-05-06 00:52:36

+0

是的,我可以,但它似乎是一个黑客。这是我最后的手段。 – daniel1426 2013-05-06 00:55:08

+0

使用textwidth函数.. – matzone 2013-05-06 00:55:10

回答

1

我没有找到一个回答我的问题,但我找到了解决我的问题:

VirtualSnapshotPoint Get_point(ITextCaret caret) 
    { 
    caret.ContainingTextViewLine.GetInsertionBufferPositionFromXCoordinate(...); 
    } 

这种方法,也就没有必要对我来说,任何字符的逻辑像素宽度的工作。

相关问题