Ir para conteúdo
Fórum Script Brasil
  • 0

Arrastando form transparente


Aleksander

Pergunta

Olá amigos, todos os aplicativos que desenvolvo costumo criar uma pasta de ajuda com o passo a passo do uso dos mesmos com várias imagens.

Para isso uso varios recursos que simulam o PrintScreen, para facilitar meu trabalho uso um form que redimensiono sobre a área desejada para salvá-la, no entanto quando deixo esse form transparente usando o Form1.Brush.Style:=bsClear ao redimensioná-lo ele usa a área de trabalho como se fosse fundo , é horrível.

Alguém saberia me informar o que posso fazer para resolver isso? Ele salva a imagem perfeitamente, só me incomoda essa distorção visual na hora arrastar e redimensionar.

Grato a todos pela atenção.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
quando deixo esse form transparente usando o Form1.Brush.Style:=bsClear ao redimensioná-lo ele usa a área de trabalho como se fosse fundo , é horrível.

Alguém saberia me informar o que posso fazer para resolver isso? Ele salva a imagem perfeitamente, só me incomoda essa distorção visual na hora arrastar e redimensionar.

Tente este codigo para deixar o Form transparente:

Procedure TForm1.FormCreate(Sender: TObject);
const
   WS_EX_LAYERED = $00080000;
   LMA_COLORKEY = $00000001;
   LMA_ALPHA = $00000002;
   type
   TLayerFunc = function(hwnd : HWND; crKey : COLORREF; bAlpha : BYTE; dwFlags : DWORD) : boolean; stdcall;
var
   ExtStyle : LongInt;
   LayerFunc : TLayerFunc;
   LibHandle : HModule;
begin
   LibHandle := LoadLibrary(user32);
   if LibHandle > 0 then
      begin
         LayerFunc := GetProcAddress(LibHandle, 'SetLayeredWindowAttributes');
         if Assigned(LayerFunc) then
            begin
               ExtStyle := GetWindowLong(Handle, GWL_EXSTYLE);
               SetWindowLong(Handle, GWL_EXSTYLE, ExtStyle or WS_EX_LAYERED);
               LayerFunc(Handle, rgb(255,0,0), 120, LMA_ALPHA or LMA_COLORKEY);
            end;
         FreeLibrary(LibHandle);
      end;
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas, esse código que você usou pode ser resumido com:

procedure TForm1.FormCreate(Sender: TObject);
begin
  AlphaBlendValue:=120;
  AlphaBlend := True;
end;
end.

Ainda não está resolvido mas agradeço a ajuda colega.

Grande abraço.

Editado por Micheus
Incluída tag's CODE para melhorar a visualização. Utilize a identação também ;)
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...