Como colocar uma imagem de fundo num Panel?

Delphi

17/04/2007

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

Curtidas 0

Respostas

Eurismar

Eurismar

17/04/2007

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


GOSTEI 0
Rtava

Rtava

17/04/2007

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


GOSTEI 0
Cabelo

Cabelo

17/04/2007

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..


GOSTEI 0
Rtava

Rtava

17/04/2007

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?


GOSTEI 0
Carlosib

Carlosib

17/04/2007

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;



GOSTEI 0
Rtava

Rtava

17/04/2007

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.


GOSTEI 0
Cabelo

Cabelo

17/04/2007

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..


GOSTEI 0
Rtava

Rtava

17/04/2007

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...).


GOSTEI 0
Cabelo

Cabelo

17/04/2007

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


GOSTEI 0
POSTAR