2012-11-16 3 views
2

3 개의 그림이있는 자체 TextField를 그려 보겠습니다.NSTextField 사용자 정의 배경, 테두리 및 모서리

  1. input_l.png - 입력의 중간 부 - - 1 픽셀 폭 - 중간 부분을
  2. input_r.png 채우기 위해 신장 또는 다중하는데 - 우측
  3. 입력
  4. input_m.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

을이 말씀 해주십시오 : 그냥 내가없이 1 픽셀의 넓은 배경 이미지를 사용할 수 있다는 것을 나에게 발생 그릴, 더 나은 다른 방법이있는 경우 :

이보고하도록되어 어떻게 이것을 그리고 코드에서 그리는 테두리는 모서리를 둥글게 만들고 여하튼 경계를 그리게됩니다. 그러나 나는 아직도 내가 시도한 방법대로, 미래의 사용을 위해 알고 싶다.

+0

[NSBezierPath bezierPathWithRoundedRect : xRadius : yRadius]와 경계를 그리려고했는데보기 흉한 것처럼 보입니다. 조금 pixelized 같은. –

답변

1

이 할 수있는 여러 가지 방법이 될 수 있습니다

서브 클래스 NSButton을하고 또한 필요한 경우 NSButtonCell를 서브 클래스 화해, 이러한 방법을 무시

  1. - (무효)의 drawRect : (NSRect) RECT {

    }

  2. drawImage : withFrame : inView :.

+0

사용자 지정 스타일로 NSTextField를 그리려고합니다. –

+0

그래서 마침내 제대로 배경을 그릴 수있었습니다. 이제 텍스트를 그리거나 어떻게 움직여야하나요? –

+0

가로 및 세로 정렬을 확인하십시오. http://stackoverflow.com/questions/1759054/nstextfieldcell-vertical-alignment-solutions-seem-to-quash-the- horizontal-alig –

관련 문제