Gráficos do edifício com Cocoa Programming

Para fazer qualquer tipo de programação gráfica em Cocoa, se familiarizar com algumas estruturas de dados importantes de cacau: NSPoint, NSRect, NSSize e NSColor. Você vai precisar deles para que eles fazer um bom ponto de partida.

Pontos

Cacau usa pontos para designar a posição em uma grade quadrada. Para trabalhar com pontos em Cocoa, você usa uma estrutura NSPoint. NSPoint é uma estrutura composta de dois flutuadores (chamada x e y, respectivamente). Cacau gráficos define o canto inferior esquerdo como a origem (0,0). As x valor aumenta à medida que você se move para a direita. Os y valor aumenta à medida que avança para cima. Este é um arranjo diferente do que a maioria de programação Macintosh e Windows, onde a origem está no canto superior esquerdo.

_NSPoint Typedef struct {
flutuar x-
flutuar y-
} NSPoint;

A parte x e y da estrutura são as coordenadas do ponto que deseja representar. Para usar uma variável NSPoint, primeiro você deve defini-lo:

NSPoint thePoint;

Em seguida, para atribuir valores aos x e y membros de uma estrutura NSPoint, você usa a função NSMakePoint. Este exemplo cria um NSPoint no local (100,100):

thePoint = NSMakePoint (100, 100);

Rects e tamanhos

Intimamente relacionado com a estrutura NSPoint é a estrutura NSRect. Um NSRect (rect é curto para retângulo) É uma estrutura composta por um NSPoint e um NSSize:

_NSRect Typedef struct {
NSPoint origem-
NSSize tamanho-
} NSRect;

Para entender o que isso significa, você também precisa saber sobre a estrutura NSSize:

_NSSize Typedef struct {
flutuar width-
flutuar em altura
} NSSize;

Assim, um NSRect é realmente uma estrutura de quatro valores de vírgula flutuante: duas para o NSPoint e dois para o NSSize. A porção NSPoint descreve onde o NSRect começa e a variável NSSize descreve as dimensões do NSRect. Para os programadores do Mac que são novos para Cocoa, isso pode demorar um pouco para se acostumar, porque a estrutura Rect usado em QuickDraw difere sutilmente a partir da estrutura NSRect. (Ret Um consiste em dois pontos.)

Para criar uma NSRect, primeiro declarar a variável NSRect:

NSRect theRect;

Em seguida, inicializar a variável utilizando a função NSMakeRect. NSMakeRect leva quatro parâmetros: x, y, largura e altura. Por exemplo, esta linha de código cria uma NSRect com uma origem em (100,100) e as dimensões de 50 x 50:

theRect = NSMakeRect (100, 100, 50, 50);

Mais tarde, se você quiser encontrar a origem ou o tamanho do theRect, use um código como este:

flutuar theOriginX, theOriginY-
flutuar theSizeW, theSizeH-
theOriginX = theRect.origin.x-
theOriginY = theRect.origin.y-
theSizeW = theRect.size.width-
theSizeH = theRect.size.height;

cores

AppKit do Cacau inclui o tipo de dados NSColor para ajudar você a trabalhar com cores em seus projetos gráficos. A maneira mais fácil de criar e definir um objeto NSColor é usar um dos componentes de cor predefinidos incorporados. Você vai reconhecer imediatamente o que cada um cria, porque eles têm nomes plain-Inglês.

Por exemplo, para criar um objeto NSColor que armazena a cor preta, use o código como este:

// Declare um ponteiro para um objeto NSColor
NSColor * theColor-
// Cria o objeto
// E atribuir a cor preta a ele
theColor = [NSColor blackColor];

Como você deve ter adivinhado, este código funciona para muitas outras cores também (blueColor, RedColor e assim por diante). A Tabela 1 apresenta a coleção inteira de componentes pré-definidos que podem ser usados ​​para criar muitas cores comuns.

Tabela 1: predefinido componentes de cor

Componente predefinido

Colorir Produz

cor preta

Preto

cor azul

Azul claro

cor marrom

Castanho

cyanColor

Azul claro

darkGrayColor

Cinza escuro

cor cinza

cinza médio

cor verde

Verde claro

lightGrayColor

Cinza claro

magentaColor

Rosa-roxo

cor laranja

laranja

cor roxa

Roxa

cor vermelha

Vermelho vivo

cor branca

Branco

cor amarela

Brilhante e amarelo ensolarado

Eventualmente, você vai querer algumas cores que os componentes pré-definidos não cobrem. Nesse caso, você tem que recorrer a alguns dos métodos de cor mais sofisticados do AppKit. O AppKit tem três tipos de espaços de cor (formas de criação de cor) que você pode usar para criar cores:

  • dependente (ou dispositivo) dispositivo
  • Dispositivo independente (ou calibrado)
  • nomeado

Quando você usa cores do dispositivo, você não pode ter certeza que você sempre verá a mesma cor em todos os dispositivos. Você provavelmente está mais familiarizado com este tipo de cor, porque a maioria dos monitores de computador em casa e impressoras exibi-lo. Não é tão bom, no entanto, para impressão profissional, correção de cor, e as tarefas de cores semelhantes.

Para contornar este problema cor, computador e impressora fabricantes começaram a criar soluções de hardware e software para calibrar seus equipamentos. A ideia era que você deve ser capaz de ver o mesmo tipo de saída, independentemente do dispositivo utilizado. A calibração é suposto para dar conta das peculiaridades de seu dispositivo específico e ajustá-lo para produzir cores precisas.

o depende do dispositivo tipo de espaço de cores tem três espaços de cores. Normalmente, você cria cores pela mistura de diferentes quantidades de cores de base específicos. Os três esquemas de mistura que você pode usar na cor dependente do dispositivo são

  • DeviceRGB: vermelho, verde, azul, e componentes alfa
  • DeviceCMYK: ciano, magenta, amarelo, preto, e componentes alfa
  • DeviceWhite: Branco e componentes alfa

Para o resto deste artigo, você tem que se preocupar única DeviceRGB, porque é a melhor escolha para a exibição de gráficos em um monitor. Depois de pegar o jeito do espaço de cor DeviceRGB, é fácil de usar os espaços de cores DeviceCMYK e DeviceWhite.

Agora, é hora de chegar ao código. Em vez de usar as cores dos componentes predefinidos, você pode definir suas próprias cores RGB usando a função colorWithDeviceRed. A função leva quatro carros alegóricos como parâmetros. Estes quatro números correspondem aos três canais de cores (vermelho, verde e azul) e o canal alfa. Cada parâmetro pode ter um valor entre 0,0 e 1,0 1.0- é cheio. O parâmetro alfa dita como opaca a cor é. Um valor de 1,0 é completamente opaca, e um valor de 0,0 é completamente transparente.

Este esquema de numeração contrasta com as cores usadas em aplicações conhecidas, como páginas da Web e documentos do Photoshop, onde a numeração normalmente tem um intervalo entre 0 e 255. Para correlacionar-se com a forma como Cacau de fazer as coisas, adicione 1 ao valor de cada componente de cor e dividir por 256. por exemplo, se você quiser converter uma cor Photoshop com valores RGB de (127,63,255) para os valores RGB para um NSColor, fazer este cálculo simples:

127 + 1 = 128/256 = 0,5
63 + 1 = 64/256 = 0,25
255 + 1 = 256/256 = 1,0

Para criar um objeto NSColor no espaço de cor DeviceRGB, use um código como este:

// Declare um ponteiro para um objeto NSColor
NSColor * theColor-
// Cria o objeto
// E atribuir a cor preta a ele
theColor = [NSColor colorWithDeviceRed: (float) 0,0
verde: (float) 0.0 azul: (float) 0.0 alpha: (float) 1.0];

Observe que os parâmetros de vermelho, verde e azul são tudo pronto para 0.0. Se você quisesse criar um objeto de cor vermelha, você pode usar um código como este:

// Cria o objeto
// E atribuir a cor vermelho para ele
theColor = [NSColor colorWithDeviceRed: (float) 1,0
verde: (float) 0.0 azul: (float) 0.0 alpha: (float) 1.0];

O parâmetro vermelha tem um valor de 1,0, e os componentes verdes e azuis tem um valor de 0,0. Ao ajustar o valor alfa, você pode criar diferentes tons da mesma cor.

Depois de criar um objeto de cor, a única outra coisa que você precisa fazer antes de trabalhar com ele é usar a função set. Isso define a caneta gráfica para a cor desejada:

[Set color];

Sim, é tão fácil como isso!

menu