BGRAControls/pt

From Lazarus wiki
Jump to navigationJump to search

Deutsch (de) English (en) português (pt) русский (ru) 中文(中国大陆) (zh_CN)

Resumo

Autores:

Dibo (mantenedor do pacote, TBGRAImageList, TBGRASpeedButton, TBGRAButton, TBGRAPanel)

Circular (TBGRAKnob, TBGRAFlashProgressBar, TBGRAVirtualScreen)

Emerson Cavalcanti (TBGRAImageManipulation)

Lainz (TBGRAImageButton)

Licença: Modified LGPL.

Como muitas pessoas sabem, Lazarus GTK não tem suporte completo a canal alfa. Eu criei um conjunto de componentes que utilizam TBGRABitmap para desenhar ícones, de modo que resolve-se parcialmente o problema com os alfa em GTK. Mas este conjunto de componentes não é apenas um patch do GTK, mas possue mais componentes legais que estão usando o poder do pacote BGRABitmap.

Artigos Relacionados

BGRAButton Gallery - Galeria de botões com código fonte para utilizar em seus projetos com BGRAButton.

Install

Download BGRABitmap

Install BGRABitmap with the file bgrabitmappack.lpk.

GitHub: https://github.com/bgrabitmap/lazpaint/

Download BGRAControls

Install BGRAControls with the file bgracontrols.lpk.

GitHub: https://github.com/bgrabitmap/bgracontrols/

Usando

Coloque um TBGRAImageList ou TBGRASpeedButton da paleta "BGRA Controls" e utilize como um componente normal. Exemplo: Adicionar ícones, coloqye TToolBar e associe BGRAImageList na barra de ferramentas. Imagens propriedade no inspetor de objetos.

TBGRAImageList

Antes:

before-TImageList.png

Depois:

after-TBGRAImageList.png

Componente herdado de TImageList. Assim, qualquer controle (testado em TToolBar e TTreeView) que utiliza o método TImageList. O método para desenhar ícones automaticamente pode ter apoio a alfa (transparência). Basta usar esse componente em vez de TImageList. Esse componente foi escrito para permitir alfa GTK, por isso no Windows (e em outras interfaces) ele funcionam normalmente como TImageList (ele não usa BGRABitmap para desenhar).

TBGRASpeedButton

BGRASpeedButton.png

Componente herdado do TSpeedButton e que desenha o glifo usando TBGRABitmap. Este componente foi escrito para habilitar GTK alpha, por isto no Windows (e outras interfaces) ele funciona normalmente como TImageList (este não usa BGRABitmap para desenhar).

TBGRAButton

bgrabutton.png

Componente gráfico customizável que utiliza apenas funções BGRABitmap para o desenho. Este componente é insensível para a chave -dGTK_ONLY. Projeto Demo incluído no pacote.

Funcionalidades:

  • Gradientes
  • Gradients duplos
  • Arredondamento
  • Estilo das bordas, espessura e cor
  • Lista Drop down
  • Grifo
  • Estados (normal, sobre, clicado)
  • Legenda com sombra
  • Suporte total a canal alfa (transparência) e suporte antialias
  • Pode trabalhar como uma imagem se nenhuma legenda é definida (não tem nenhuma função de esticar até o momento)

À fazer:

Eu queria adicionar a funcionalidade de "container" (como o TPanel) para este mesmo componente poder ser usado como uma barra de ferramentas com filhos, mas TCustomControl não tem transparência.

Eu criei uma tarefa para esta questão no fórum: http://www.lazarus.freepascal.org/index.php/topic,12933.0.html

E uma lista de email: http://lists.lazarus.freepascal.org/pipermail/lazarus/2011-April/062683.html

Eu tentei reportar isto como um bug. Em vez disso, eu criei TBGRAPanel com uma funcionalidade de gradiente semelhante (mas muito limitada).

TBGRAPanel

Simples descendente de TPanel com possibilidade de fundo com gradiente. Criado especialmente para TBGRAButton (para criar uma barra de ferramentas com visual agradável para bgrabuttons). Este componente é insensível para a chave -dGTK_ONLY.

TBGRAFlashProgressBar

BC-Bgraflashprogressbar.png

Barra de progresso criada por circular.

TBGRAImageManipulation

Componente para facilitar a importação de imagens em um aplicativo.

Na versão atual você pode importar uma imagem e cortar mantendo a proporção (ou não). Por exemplo, se você deseja importar fotos usando a proporção 3x4, ajuste a propriedade 'ratio' para 3:4. Se importar uma imagem com tamanho diferente, o componente irá garantir que a imagem cumpra as proporções das dimensões desejadas.

Você pode determinar as dimensões mínimas da imagem ajustando as propriedades 'MinWidth' e 'MinHeight'.

Você pode girar a imagem usando funções embutidas.

Veja o demo do componente:

bgraimagemanipulation.jpg

Após recuperar a imagem modificada pelo componente, simplesmente coloque em seu destino usando o esticamento. É óbvio que o destino deve ter a mesma razão de aspecto do componente para não distorcer o resultado final.

TBGRAImageButton

bgraimagebutton.png

Componente usado para criar um botão com 4 estados a partir de um Bitmap.

O bitmap precisa conter os 4 estados (a partir do topo até embaixo, com a mesma altura) na seguinte ordem: normal, dentro, pressionado, desabilitado.

Botão de Exemplo:

samplebgraimagebutton.png

Botão de Exemplo (com canal alfa (Transparência)):

samplebgraimagebuttonalpha.png

TBGRAVirtualScreen

O princípio é desenhar num bitmap em memória.

O componente tem um evento específico, OnRedraw, que é chamado quando o bitmap precisa ser inteiramente redesenhado. Isso acontece no início, quando ocorrer redimensionamento e quando o método Redraw é chamado.

Caso contrário, é possível modificar a propriedade Bitmap e chamar Invalidate ou Repaint, para evitar apagar todo o conteúdo de bitmap.