//Screen Size Label
if (_screenFontEnable) {
[_sfColor set];
NSString *canvasLabel = [NSString stringWithFormat:@"%@ \n W:%i/H:%i",_label,screenSizeWidth,screenSizeHeight ];
[canvasLabel drawAtPoint:NSPointFromString([NSString stringWithFormat:@"{%i,%i}",boarder+(((screenSizeWidth/2)-_screenFontSize)),boarder+((screenSizeHeight/2)-_screenFontSize)]) withAttributes:@{NSFontAttributeName:[NSFont systemFontOfSize:screensize], NSForegroundColorAttributeName:_sfColor}];
}
你好,所以我试图将我的文字居中放在用户输入的矩形中心,像素可能是100x100
或1000x1000
,因为他们喜欢来自ScreenSizeWidth
或ScreenSizeHeight
。用户输入ScreenFontSize
也打印在绘制的矩形顶部。 screenFontsize
更改,以及屏幕大小,以便在rect中打印的字符数更改。
我想出了如何将它放在垂直轴的中心,但却无法弄清楚如何水平地做到这一点。
这个想法可能会以某种方式获得屏幕尺寸标签的宽度并且以矩形宽度为中心,但是如何做到这一点超出了我的想法。
这是我在上面的当前代码上打印的内容 - enter image description here
答案 0 :(得分:1)
您可以使用NSString
方法之一:
- (NSSize)sizeWithAttributes:(NSDictionary<NSString *, id> *) attributes
- (NSRect)boundingRectWithSize:(NSSize)size
options:(NSStringDrawingOptions)options
attributes:(NSDictionary<NSString *, id> *)attributes
context:(NSStringDrawingContext *)context
确定渲染时文本的长度,然后进行中心化所需的数学运算。
HTH