Pergunta

Eu crio um círculo com uma boa sombra com este código (eu uso Monotouch.net para iPhone, as respostas Objective-C são boas, é claro)

        UIGraphics.PushContext (ctx);
        SizeF shadowSize = new SizeF (0f, -3f);
        ctx.SetRGBFillColor (194f / 255f, 212f / 255f, 238f / 255f, 1f);
        ctx.SetAllowsAntialiasing (true);
        ctx.SetShadowWithColor (shadowSize, 20, new CGColor (0.9f, 0.7f));
        RectangleF area = new RectangleF (35f, 15f, 210f, 210f);
        ctx.FillEllipseInRect (area);
        UIGraphics.PopContext ();

Então eu quero adicionar a ele um arco e linhas. Quando eu faço, as cores e as sombras etc. parecem ficar por aqui? Como faço para "começar de novo" enquanto desenho minha uiview? (Está tudo na mesma uiview; estou construindo a imagem)

Foi útil?

Solução

Se você quer limpar tudo o que é desenhado para ter uma tela em branco, tente CGContextClearRect antes de desenhar qualquer coisa.

Mas acho que você quer dizer que quer a sombra, preencher a cor etc. para se aplicar apenas a essa elipse e não às coisas que você desenha depois. Para fazer isso, você deseja chamar os mesmos métodos de definição de estado novamente, mas com argumentos diferentes. Por exemplo, CGContextSetShadowWithColor espera uma cor de sombra. Mas se você passar NULL Para esse argumento, ele desativará o sombreamento.

Veja também o CGContextSetShadow documentação, que tem uma nota sobre todas as maneiras pelas quais você pode desativar o sombreamento. Escolha o melhor para você.

Eu acho que seu principal problema é que você não está aproveitando a excelente documentação da Apple. Concluo que o Monotouch.net mapeia essencialmente as APIs Objective-C para os módulos .NET com nomes de símbolos semelhantes ou idênticos. Portanto, com uma rápida pesquisa no Google, você poderá encontrar a documentação correspondente na biblioteca de referência do iPhone OS.

Outras dicas

Antes de começarmos a desenhar, salve o estado:

CGContextSaveGState(ctx);

Depois de terminar, devolva o estado ao que era no começo:

CGContextRestoreGState(ctx);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top