【发布时间】:2013-02-12 21:03:20
【问题描述】:
我已经尝试了一两天来尝试在 NSTextField 的文本内绘制阴影(并使前景色透明,因此您所看到的只是文本内的阴影)。我还没有达到理想和实际的结果。我唯一的成功是将文本转换为NSBezerPath,从 NSTextFieldCell 的框架中减去它并使用setClip 方法进行裁剪(addClip 在这种情况下是不够的,它会留下背景) .不幸的是,将文本转换为NSBezerPath 会使文本的边缘看起来参差不齐且过度拉直。有没有一种有效且体面的方法可以使用 CoreGraphics 蒙版和剪辑来实现这一点,因为我无法实现这一点。
我在 Xcode IDE 中寻找的效果非常相似,如果您没有打开调试会话并转到调试器导航器,它会在子类 NSTextField 中显示“无调试会话”,它绘制里面有阴影的文本。这几乎就是我所追求的。任何关于从哪里开始以及如何做到这一点的见解都会很棒。
我当前的代码的粘贴箱(工作,但次优且不工作):http://pastebin.com/4pTv8ZWm
【问题讨论】:
-
我以为这很容易,但问题是当您绘制阴影 id 时,文本的 alpha 值为 0,阴影不会被绘制。见这里:stackoverflow.com/questions/8170678/…
-
好的,我认为有一些轻微的沟通不畅。我试图不使用 CGPath/NSBezierPath 作为路径使文本看起来呈锯齿状,因为它们的抗锯齿与文本不同。我确实使用贝塞尔路径让它工作了,但文本看起来很糟糕,这就是我寻找更好方法的原因。
标签: objective-c cocoa core-graphics shadow nstextfield