【问题标题】:NSTextField custom background, border and cornersNSTextField 自定义背景、边框和角
【发布时间】:2012-11-16 23:26:21
【问题描述】:

我想用 3 张图片绘制我自己的 TextField。

  1. input_l.png - 输入的左侧
  2. input_m.png - 输入的中间部分 - 1px 宽 - 应该拉伸或相乘以填充中间部分
  3. input_r.png - 右侧

所有图像都包含边框、背景、阴影,只是我需要用这些图片绘制它的所有内容。

但我无法使用 NSTextField 的子类和这些方法来绘制它:

- (void)awakeFromNib
{
    [self setDrawsBackground:NO];
}

- (void)drawRect:(NSRect)rect
{
    NSDrawThreePartImage(rect, [NSImage imageNamed:@"input_l.png"], [NSImage imageNamed:@"input_m.png"], [NSImage imageNamed:@"input_r.png"], NO, NSCompositeSourceOut, 1.0, NO);

    [super drawRect:rect];
}

它用文本/占位符绘制黑色背景。

它应该是这样的: http://d.pr/i/VLEN

如果有其他更好的方法来绘制这个,请告诉我 :) 我突然想到我可以使用 1px 宽的不带边框的背景图像来绘制这个,并且在代码中使角变圆并以某种方式绘制均匀的边框。但是我仍然想知道如何按照我尝试的方式进行操作,以备将来使用。

【问题讨论】:

  • 所以我尝试用 [NSBezierPath bezierPathWithRoundedRect:xRadius:yRadius] 绘制边框,它看起来有点难看。有点像素化了。

标签: objective-c macos cocoa


【解决方案1】:

有很多方法可以做到:

子类 NSButton,如果需要,子类 NSButtonCell 并覆盖这些方法

  1. -(void)drawRect:(NSRect)rect {

    }

  2. drawText:withFrame:inView:

  3. drawImage:withFrame:inView:.

【讨论】:

  • 我正在尝试使用自定义样式绘制 NSTextField。
  • 所以我终于设法正确地绘制了背景。现在我如何绘制或以某种方式将文本向下移动一点?
  • 检查水平和垂直对齐。 stackoverflow.com/questions/1759054/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 2019-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多