如何从字体面板(NSFontPanel)和颜色中仅检索字体样式(粗体,斜体,粗斜体)?

发布于 2024-09-17 00:52:41 字数 439 浏览 3 评论 0原文

我正在从 NSFontPanel 检索一个值,它会更改字体系列和文本样式。但我只想要从 NSFontPanel 中分别选择的字体样式和颜色。

我不知道如何得到它。

NSFont *font  =[fontmanager selectedFont];
     string =[font fontName];
     st = [font pointSize];
    color =[TextEntered textColor];
  1. 在字符串变量中,我得到字体系列(例如Arial)和字体样式(例如Bold)。但我想要这些值分开。

  2. 在颜色变量中我只得到黑色。

我无法理解我在获取颜色时出错的地方,以及我使用什么函数来获取字体样式。

I am retrieving a value from NSFontPanel, which changes the font family, style of text. But I want only Font Style and color separately that I have selected from NSFontPanel.

I am not getting how to get that.

NSFont *font  =[fontmanager selectedFont];
     string =[font fontName];
     st = [font pointSize];
    color =[TextEntered textColor];
  1. In string variable I am getting Font family(e.g.Arial) and Font style(e.g. Bold). but I want these values separately.

  2. And in color variable I only get black color.

I am not able to understand where I am wrong in getting color,and what function I used for getting font style..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一笔一画续写前缘 2024-09-24 00:52:41

要获取样式,您可以使用[fontmanager TraitsOfFont: font]。至于颜色,我认为您想要获取 NSAttributedString 形式的文本,然后获取属性 NSForegroundColorAttributeName 的值。

编辑添加:假设您的 TextEntered 变量是 NSTextField*,请使用如下内容:

NSAttributedString* theText = [TextEntered attributedStringValue];
NSColor* theColor = (NSColor*)[theText attribute: NSForegroundColorAttributeName
    atIndex: 0 effectiveRange: NULL ];

对于删除线,使用 NSStrikethroughStyleAttributeName ,对于下划线,使用 NSUnderlineStyleAttributeName

To get the style, you would use [fontmanager traitsOfFont: font]. As for the color, I think you want to get the text as an NSAttributedString and then get the value for the attribute NSForegroundColorAttributeName.

Edit to add: Assuming that your TextEntered variable is NSTextField*, use something like this:

NSAttributedString* theText = [TextEntered attributedStringValue];
NSColor* theColor = (NSColor*)[theText attribute: NSForegroundColorAttributeName
    atIndex: 0 effectiveRange: NULL ];

For strikethrough, use NSStrikethroughStyleAttributeName and for underline use NSUnderlineStyleAttributeName.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文