Problema ao rotacionar imagem TBitMap
Olá!
Estou com um problema muito serio em manipular figuras no Delphi, utilizando TBitMap. O que eu quero é rotacionar a figura em 90 graus. Para figuras quadradas, funciona perfeitamente. Para figuras retangulares, o que acontece é que ele não exibe a figura rotacionada com suas novas dimensoes, apesar de rotacionar o seu conteudo. É como se eu obtesse uma figura rotacionada, mas com as bordas, as dimensoes da original. Por exemplo, eu tenho uma figura com largura 40 e altura 21. Se eu rotacionar ela 90 graus, ela deveria ficar com largura 21 e altura 40, certo? Pois é, se eu acessar as propriedades da figura, ela realmente está com estas dimensoes, mas na tela, ela é exibida com as dimensões antigas... Já tentei dois algoritmos de rotacionar bitmaps, e todos apresentaram o mesmo problema... A seguir, o ultimo codigo que eu utilizei... Ele é ineficiente para figuras grandes, mas como eu estou rotacionando apenas figuras do tamanho de icones, entao pra mim já está otimo. Alguem pode me explicar porque nao dá certo isso??
function Rotaciona(imagem : TBitmap) : TBitmap;
var
i,j : integer;
begin
RESULT := TBitmap.Create;
RESULT.Width := imagem.Height;
RESULT.Height := imagem.Width;
RESULT.PixelFormat := pf24bit;
with imagem.Canvas.ClipRect do
begin
for i := Left to Right do
begin
for j := Top to Bottom do
begin
RESULT.Canvas.Pixels[j,Right-i-1] := imagem.Canvas.Pixels[i,j];
end
end
end
end;
Agradeço a ajuda de todos!
Até mais!
José Gustavo
[b:24992dd86d][color=green:24992dd86d]Título Editado(Saviski)[/color:24992dd86d] - removido ´Urgente´ - leia as [url=http://forum.clubedelphi.net/viewtopic.php?t=6689]regras de conduta do fórum[/url][/b:24992dd86d]
Estou com um problema muito serio em manipular figuras no Delphi, utilizando TBitMap. O que eu quero é rotacionar a figura em 90 graus. Para figuras quadradas, funciona perfeitamente. Para figuras retangulares, o que acontece é que ele não exibe a figura rotacionada com suas novas dimensoes, apesar de rotacionar o seu conteudo. É como se eu obtesse uma figura rotacionada, mas com as bordas, as dimensoes da original. Por exemplo, eu tenho uma figura com largura 40 e altura 21. Se eu rotacionar ela 90 graus, ela deveria ficar com largura 21 e altura 40, certo? Pois é, se eu acessar as propriedades da figura, ela realmente está com estas dimensoes, mas na tela, ela é exibida com as dimensões antigas... Já tentei dois algoritmos de rotacionar bitmaps, e todos apresentaram o mesmo problema... A seguir, o ultimo codigo que eu utilizei... Ele é ineficiente para figuras grandes, mas como eu estou rotacionando apenas figuras do tamanho de icones, entao pra mim já está otimo. Alguem pode me explicar porque nao dá certo isso??
function Rotaciona(imagem : TBitmap) : TBitmap;
var
i,j : integer;
begin
RESULT := TBitmap.Create;
RESULT.Width := imagem.Height;
RESULT.Height := imagem.Width;
RESULT.PixelFormat := pf24bit;
with imagem.Canvas.ClipRect do
begin
for i := Left to Right do
begin
for j := Top to Bottom do
begin
RESULT.Canvas.Pixels[j,Right-i-1] := imagem.Canvas.Pixels[i,j];
end
end
end
end;
Agradeço a ajuda de todos!
Até mais!
José Gustavo
[b:24992dd86d][color=green:24992dd86d]Título Editado(Saviski)[/color:24992dd86d] - removido ´Urgente´ - leia as [url=http://forum.clubedelphi.net/viewtopic.php?t=6689]regras de conduta do fórum[/url][/b:24992dd86d]
Joeygustavo
Curtidas 0
Respostas
Rjun
31/03/2005
Como você esta exibindo a imagem ?
GOSTEI 0
Beppe
31/03/2005
Como vc chama o método? Se está usando um TImage, sete a propriedade AutoSize para True.
GOSTEI 0
Joeygustavo
31/03/2005
Finalmente esse problema foi resolvido! Era só setar o AutoSize mesmo! Quero agradecer a todos que me ajudaram nesta questão, era uma coisa que estava tomando muito o meu tempo ultimamente!!
Até mais!
José Gustavo
Até mais!
José Gustavo
GOSTEI 0