Fórum Canvas ! Canvas ! Como converter ... #222793

27/03/2004

0

Como converter um canvas em uma imagem bitmap .

Por exemplo, agente pega um TPaintBox e coloca no form. Nomeia-o ´Paint´ .
Aí colocao no OnMouseMove isso :
Paint.canvas.lineto(x,y) ;

Aí agente compila ( F9 ) passa o mouse naquela região e faz um traço .

Quero saber como eu faço para pegar o traçado daquela região e converter para um arquivo de bitmap ( .bmp ) .

Preciso de um código que seja colocado no botão ´ Salvar ´ que faça essa conversão !


Ronie

Ronie

Responder

Posts

27/03/2004

Beppe

Não testei:
type
  TLineBltData = record
    Source, Dest: TBitmap;
    StartXY, EndXY, DestXY: TPoint;
  end;

procedure LineBltCB(X, Y: Integer; const Data: TLineBltData); stdcall;
begin
  with Data do
    Dest.Canvas.Pixels[DestXY.X + (X - StartXY.X), DestXY.Y + (Y - StartXY.Y)] := Source.Canvas.Pixels[X, Y];
end;

procedure LineBlt(Source, Dest: TBitmap; StartXY, EndXY, DestXY: TPoint); stdcall;
// importante: não mudar ordem, tipo ou modo dos parâmetros, ou convenção de chamada
begin
  LineDDA(StartXY.X, StartXY.Y, EndXY.X, EndXY.Y, @LineBltCB, Integer(@Source));
end;


A rotina acima copia um linha(reta, espessura 1px) de Source para Dest. No seu caso você terá que chamar a rotina para cada linha. Se vc estiver pintando como caneta, nem precisa usar essa rotina, basta ir copiando os pixels que passar. Usei Canvas.Pixels para simplificar, vc deve substituir por Scanline, ou então usar em bitmaps in-memory.

LineBlt(Bmp1, Bmp2, StartPoint, Point(X, Y), Point(0, 0));



Responder

Gostei + 0

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

Aceitar