Fórum Centralizar bitmap em celula do StringGrid #227790

23/04/2004

0

Alguem pode me dizer como faco para centralizar um bitmap dentro das coordenadas de uma celula do stringgrid.
Eu ja consigo desenhar o bitmap, que esta armazenado em um componente TImage, porem, ele fica desfocado de tamanho dentro da celula do stringgrid, ele e mostrado com 4 imagens dentro de cada celula.

Obrigado,
Giovanni


Gveggi

Gveggi

Responder

Posts

23/04/2004

Spider

como vc tá colocando as imagens no StringGrid?


Responder

Gostei + 0

23/04/2004

Lucas Silva

Dê uma olhada no codigo.


procedure TForm1.StringGrid1DrawCell(Sender: 
TObject; ACol, 
ARow: Integer; Rect: TRect; State: TGridDrawState); 
var 
strTemp: string; 
Format: integer; 
begin 
strTemp := StringGrid1.Cells[ACol,ARow]; 
StringGrid1.Canvas.FillRect(Rect); 

if (ACol = 0) then // se coluna = 0 alinha ao centro 
Format := DT_CENTER 
else if (ARow = 0) then se linha=0 alinha ao centro 
Format := DT_CENTER 
else // caso contrario a esquerda 
Format := DT_LEFT; //DT_RIGHT alinha a direita 

if (ARow = 0) then 
StringGrid1.Canvas.Font.Style := [fsBold]; 

DrawText(StringGrid1.Canvas.Handle,PChar(strTemp),-1,Rect,Format); 
end;



Responder

Gostei + 0

23/04/2004

Gveggi

Eu agradeco Lucas, mas o que preciso era centralizar o bitmap ne celula do stringgrid e nao de escrever texto.

eu desenho o bitmap atraves do Canvas.Brush.Bitmap := Bitmap,

porem o Bitmap fica dividido dentro da celula do stringgrid, aparecendo 2 ou 3 vezes a imagem.
Preciso que ele fique alinhado centralizado na celula, aparecendo 1 unica imagem.

Continuo contando com a ajuda dos companheiros,
Obrigado


Responder

Gostei + 0

23/04/2004

Lucas Silva

Já tentou fazer isto dom um DrawGrid?


Responder

Gostei + 0

26/04/2004

Marcelo Saviski

Em vez de [color=green:62e3583a55]Canvas.Brush.Bitmap := Bitmap[/color:62e3583a55]

var
  BX, BY: Integer;
begin
  BX := (Width_da_celula - Bitmap.Width) div 2;
  BY := (Height_da_celula - Bitmap.Height) div 2;
  Canvas.Draw(BX, BY, Bitmap);
end;



Responder

Gostei + 0

26/04/2004

Gveggi

Amigo Marcelo, agradeco o help mas nao funcionou ou estou fazendo algo errado.
Veja o meu codigo, deste modo ele criou a imagem em um unico local somente do stringGrid e mesmo assim fora do local desejado.

imgW := (StringGrid1.DefaultColWidth - Image1.Width);
imgH := (StringGrid1.DefaultRowHeight - Image1.Height);
Canvas.Draw(imgW, imgH, Image1.Picture.Bitmap);

Se o codigo esta correto, ele nao funciona conforme o desejado.
Por enquando o
StringGrid1.Canvas.Brush.Bitmap := Image1.Picture.Bitmap;

funciona melhor, so nao entendo porque ele repete o desenho do bitmap dentro da celula, ao invez de deixa-lo centralizado e unico.
Voce testou este codigo que me passou ?

Obrigado,
Giovanni


Responder

Gostei + 0

22/05/2012

George Lemos

Tente assim....

stringgrid.Canvas.StretchDraw(Rect,Bitmap);
Responder

Gostei + 0

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

Aceitar