Josewillem

914 palavras 4 páginas
Listagem 1. Desenhando um bitmap em um formulário
{ Declare Bitmap: TBitmap na seção private } procedure TForm1.FormCreate(Sender: TObject); var begin Bitmap := TBitmap.Create; Bitmap.LoadFromFile('C:\Windows\Deserto.bmp'); end; procedure TForm1.FormPaint(Sender: TObject); begin Canvas.Draw(0, 0, Bitmap); end; procedure TForm1.FormDestroy(Sender: TObject); begin Bitmap.Free; end; Listagem 2. Algoritmo de Stretch Bilinear

unit BM_MANIPULACAO_IMAGENS;

interface

uses Graphics;

procedure StretchBilinear(Origem: TGraphic; Dest: TBitmap; Largura, Altura: integer);

implementation

type TCor24Bits = packed record R, G, B: byte; end; PCor24Bits = ^TCor24Bits; TLinha24Bits = array [0..0] of TCor24Bits; PLinha24Bits = ^TLinha24Bits;

{ *=========== StretchBilinear24 ===================== Faz o stretch Bilinear em um bitmap de 24 bits por pixel. O que o algoritmo faz é mapear um cursor X, Y da imagem de origem na imagem de destino. Esse cursor teoricamente é um número real. Sendo assim, esse cursor aponta para até quatro pixels. O valor do pixel do bitmap de destino é a soma ponderada dos pixels apontados no bitmap de origem. Por exemplo, se o meu cursor possui o valor X = 2,4, isso significa que o bitmap de destino vai receber 40% do pixel 2 e 60% do pixel 3 no eixo X. Como não vamos utilizar ponto flutuante, nossas coordenadas vão ser multiplicadas por 65536 para não termos que fazer arredondamentos. }

procedure StretchBilinear24(Origem,Dest:TBitmap); var x, y, { Posição x e y do nosso Bitmap final } PosX, PosY, { Posição x e y do nosso cursor no Bitmap de origem. Esses valores são multiplicados po 65536 } PosXReal, { Valor do cursor em X arredondado } IncY, IncX, { Incremento x e y do nosso cursor a cada iteração } Aux, { Variável auxiliar } z, z2, iz2, { Variáveis aux para

Relacionados