2009-08-18 8 views
4

Ich setze ein festgelegtes Symbol basierend auf einem beliebig großen Bild in eine NSOutlineView mit einer NSImageCell.Erstellen Sie ein gepolstertes, zentriertes, skaliertes NSMagier

NSImageCell wird das Bild gut skalieren, aber ich finde keinen Weg, um das skalierte Bild mit einem Padding zu versehen. Die Reihen sehen für mein Auge ohne Polsterung hässlich aus.

Mein erster Durchlauf bei der Behebung dieses Problems bestand darin, ein neues Bild mit konstanter Größe zu erstellen, seine Grenzen für die Auffüllung einzufügen und dann drawInRect zu verwenden: fromRect: operation: fraction: um eine verkleinerte Version des ursprünglichen Symbols zu zeichnen.

Das funktioniert gut für quadratische Bilder. Ich hätte gedacht, dass es eine bequeme Methode für NSImage geben würde, um eine zentrierte, skalierte Version mit konstantem Seitenverhältnis des Bildes in einem gegebenen Rect zu zeichnen, aber ich kann es nicht finden.

Natürlich kann ich eine geeignete rect mit dem gleichen Seitenverhältnis wie das Originalbild berechnen, aber ich mag lieber das Rad nicht neu erfinden ...

Antwort

2

Jeden Beispielcode ich eine Berechnung für die Polsterung verwenden sah. Es gibt einige NSImage categories on CocoaDev die das tun.

+1

Sie sind jetzt weg. Trauriges Gesicht. –

+0

Falls gewünscht, können Sie es finden in [Internet Archive] (http://web.archive.org/web/20111013161350/http://cocoadev.com/index.pl?NSImageCategory) –

Verwandte Themen