[Delphi] DrawText i Negatyw

0

Witam,

Czy można jakoś szybkim sposobem zrobić negatyw z "rysowanego" tekstu? Jakoś nie moge nic wygooglować. Znalazłem w gotowcach procedure która robi negatyw z bitmapy, pomyślałem że jak najpierw narysuje na niej tekst, potem zrobie negatyw a na końcu wrzuce na właściwego canvasa to otrzymam to co potrzebuje, udało się w 90%, nie mogę się pozbyć tła pod tym tekstem, jak dam Brush.Style := bsclear to cała bitmapa jest czarna, to kod:

procedure Negatyw(var Bitmap: TBitmap);
 var
  H,V:Integer;
  WskByte:^Byte; //Wskaźnik do Bajta (nie trzeba do całego pixela bo i tak wszystko odwracamy)
begin
  Bitmap.PixelFormat:=pf24bit;
  for V:=0 to Bitmap.Height-1 do
  begin
    WskByte:=Bitmap.ScanLine[V]; // V jest to pozycja  danej linii bitmapy (od góry )
    for  H:=0 to (Bitmap.Width *3)-1 do
    begin
      WskByte^:= not WskByte^ ;// (odwracamy wartość na którą pokazuje wskaźnik)
      inc(WskByte);//Przesuwam wskaźnik
    end;
  end;
end;

procedure TestNegatyw;
 var
  aBMP: TBitmap;
begin
  aBMP := TBitmap.Create;
  try
    Canvas.Brush.Style := bsClear;
    // jak poniższe odkomentowane to cała BMP jest czarna - nie widać tekstu
    //aBMP.Canvas.Brush.Style := bsClear;
    aBMP.Width := 20;
    aBMP.Height := 20;
    aBMP.Canvas.TextOut(0,0,'test');
    Negatyw(aBMP);
    Canvas.Draw(0,0,aBMP);
  finally
    aBMP.Free;
  end;
end;
0
with Canvas do
begin
  Brush.Color := clBlack;
  Brush.Style := bsSolid;
  Font.Color := clWhite;
  Draw(10, 10, 'aaaa');
end;

może być?

0

Nie bardzo ;) . Może wyjaśnie na przykładzie. Ładuje sobie do bitmapy jakiś obrazek i teraz canvasem rysuje na tej bitmapie jakiś tekst i chcę żeby TYLKO ten tekst był negatywem, w sensie nie czarny prostokąt a na nim biały tekst tylko sam tekst bez tła i ten tekst powinien być negatywem pixeli które się pod nim znajdują - pixeli załadowanego obrazka.

1 użytkowników online, w tym zalogowanych: 0, gości: 1