2

我想用 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 宽的没有边框的背景图像来绘制这个,并且在代码中使角变圆并以某种方式绘制甚至边框。但是,我仍然想知道如何按照我尝试的方式进行操作,以备将来使用。

4

1 回答 1

1

可以有很多方法:

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

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

    }

  2. drawText:withFrame:inView:

  3. 绘制图像:withFrame:inView:。

于 2012-11-17T03:10:57.563 回答