gpt4 book ai didi

cocoa - NSTextField 内阴影

转载 作者:行者123 更新时间:2023-12-03 16:18:42 24 4
gpt4 key购买 nike

我正在尝试在 Mac 应用程序中的标签上添加内部阴影。

我正在尝试匹配我的设计师发送过来的 Photoshop 设计。我想要匹配的外观是: Photoshop Design

在 Photoshop 中完成此操作的方法是使用以下设置设置内部阴影: Photoshop Settings

我在其他网站上看到过针对此类问题的几种不同解决方案,但没有一个能正常工作。

例如每个人都说使用:

[[myNSTextField cell] setBackgroundStyle:NSBackgroundStyleRaised];

我发现了很多关于在 NSBezierPath 或类似的东西上做内部阴影但没有标签的东西。

这个问题的答案说使用上面的setBackgroundStyle,然后说

Your gradient background then could be reached for example by using a custom view with a NSGradient

但是这个 View 去哪里了呢?答案引用的链接讨论了再次在窗口上制作内部阴影,而不是文本。

谁能帮我解决这个问题吗?

谢谢

最佳答案

这种效果在 Photoshop 中很容易制作。不幸的是,在 Cocoa 应用程序中,事情并不是那么简单。我不知道使用标准控件来完成此操作的简单方法,但我会告诉您我将如何处理该问题。

问题是阴影必须落在物体上。换句话说,阴影总是模态的,不能只画阴影而没有实际物体。在核心图形中,阴影是绘图上下文的一个属性。当我们渲染一个对象时,我们可以在过程中添加阴影效果。

现在,当我们知道真正的问题时,解决方案就是小菜一碟了:)

假设这是根据您的文本生成的图像。您可以在互联网上找到如何将文本渲染到位图上下文的示例。

enter image description here

您只需:

反转它。

enter image description here

将其渲染为图像(位图上下文)的阴影。

enter image description here

通过排除反转图像来 mask 图像。

enter image description here

在您拥有的背景纹理上渲染结果图像。

enter image description here

我会创建一个 NSView 子类并在图层上绘制所有这些内容。您可以找到有关如何创建自己的位图上下文并在其上绘图的示例。以下是如何使用蒙版 https://developer.apple.com/library/mac/#documentation/graphicsimaging/conceptual/drawingwithquartz2d/dq_images/dq_images.html

我希望这会有所帮助。

关于cocoa - NSTextField 内阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13277593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com