Centralizar bitmap em celula do StringGrid
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
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
Curtidas 0
Respostas
Spider
23/04/2004
como vc tá colocando as imagens no StringGrid?
GOSTEI 0
Lucas Silva
23/04/2004
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;
GOSTEI 0
Gveggi
23/04/2004
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
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
GOSTEI 0
Lucas Silva
23/04/2004
Já tentou fazer isto dom um DrawGrid?
GOSTEI 0
Marcelo Saviski
23/04/2004
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;
GOSTEI 0
Gveggi
23/04/2004
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
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
GOSTEI 0
George Lemos
23/04/2004
Tente assim....
stringgrid.Canvas.StretchDraw(Rect,Bitmap);
stringgrid.Canvas.StretchDraw(Rect,Bitmap);
GOSTEI 0