GARANTIR DESCONTO

Fórum Como colocar uma imagem de fundo num Panel? #340500

17/04/2007

0

Pessoal, a princípio pode parecer muito básico, mas estou com uma tremenda dificuldade de carregar uma imagem de fundo num Panel, em tempo de execução. Alías, carregar é fácil, só que ela não aparece em tempo de execução.

Já fiz das seguintes maneiras:

Primeira maneira:
Panel1.Brush.Bitmap := TBitmap.Create;
Panel1.Brush.Bitmap.LoadFromFile(´c:\temp\imagem.bmp´);


Segunda maneira:
var
xCanvas : TCanvas;
begin
xCanvas := TCanvas.Create;
xCanvas.handle := GetDC(Panel1.Handle);
ImageList1.Draw(xCanvas, 10, 10, 0);
ReleaseDC(Panel1.Handle, xCanvas.Handle);

Da segunda maneira até funciona, só que não consigo exibir uma imagem grande.

Alguém pode dar uma ajuda?
Valeu.


Rtava

Rtava

Responder

Posts

17/04/2007

Eurismar

vc pode usar o componente image sobre o panel com a propriedade align = AlClient e usar o comando: Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);


Responder

Gostei + 0

17/04/2007

Rtava

Não dá... eu preciso dos eventos de mouse do Panel.


Responder

Gostei + 0

18/04/2007

Cabelo

Colega..

Utilize a propriedade Bitmap do TPanel...

Para deixar a imagem do tamanho do Panel você pode tratá-la com o canvas..

um abraço..


Responder

Gostei + 0

18/04/2007

Rtava

Conforme já postei no início, eu usei isso só que a imagem não aparece. Aparentemente carrega a imagem normalmente, mas ela não aparece.

Você já tentou usar isso? Conseguiu que aparecesse?


Responder

Gostei + 0

18/04/2007

Carlosib

Tenta assim:

var
    Canvas : TCanvas;
    BitMap : TBitMap;
begin
    BitMap := TBitmap.Create;
    BitMap.LoadFromFile(´c:\imagem.bmp´);
    Canvas := TCanvas.Create;
    Canvas.handle := GetDC(Panel1.Handle);
    BitBlt(Canvas.Handle,0,0, BitMap.Height, BitMap.Width, BitMap.Canvas.Handle,0,0,SRCCOPY);
    ReleaseDC(Panel1.Handle, Canvas.Handle);
end;



Responder

Gostei + 0

18/04/2007

Rtava

Fala carlosib...
Agora sim!

Uma única coisa que tive que implementar é fazer a chamada dessa rotina também no evento OnPaint do formulário Parent do Panel1, pois quando a tela aplicação é sobreposta por uma tela qualquer de outro aplicativo a imagem some do Panel. Mas fora esse detalhe, funcionou blz.

Obrigado.


Responder

Gostei + 0

18/04/2007

Cabelo

Conforme já postei no início, eu usei isso só que a imagem não aparece. Aparentemente carrega a imagem normalmente, mas ela não aparece. Você já tentou usar isso? Conseguiu que aparecesse?


Já usei sim...

mas no início do post, você indica o método Brush..

O panel tem uma propriedade Bitmap que permite inserir um bitmap até em design time..

Mas pelo jeito você já resolveu o problema..

um abraço..


Responder

Gostei + 0

19/04/2007

Rtava

Então acho que estamos nos referindo a ´panels´ diferentes. O TPanel, nativo do Delphi, tem o ´Bitmap´ e pertence ao ´Brush´ (panel1.Brush.bitmap). Não existe ´Panel.Bitmap´ ou ´Panel.Canvas´ no TPanel nativo do Delphi (ao menos no Delphi7, que é o que uso...).


Responder

Gostei + 0

19/04/2007

Cabelo

Colega..

Então devemos estar falando mesmo.. pois trabalho com Delphi 7 em .CLX e uso TPanel... acho que por ser .CLX muda em alguma coisa.. acredito que na classe TControl não existe TBitmap

Realmente TCanvas não existe, pois herda de TBitmap e realmente não poderia existir num TWidgetControl.. mas o TBitmap herda de TWidgetControl, portanto existe no TPanel, que é um TWidgetControl


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar