Newsgroup: it.comp.lang.delphi
Titolo: Stampe con Canvas.TextOut - effetto trasparenza

Ciao,
        Dopo lunga assenza torno a programmare con Delphi
        e non trovo piu' una info che ora mi servirebbe.
        Sto realizzando delle stampe con 'canvas.textout' e ho
        fatto gli header delle colonne con 'rectangle'
        Ho colorato i rectangle di grigio ma non riesco ad ottenere
        l'effetto trasparenza con i titoli delle colonne.
        Se puo' essere utile per capire il problema 
        posto il pezzetto di codice :
//------------------------------------stampa rettangoli
                       Canvas.Brush.color:=clSilver;
                       Canvas.Pen.Width:=2;         
                       Canvas.Pen.Style := psDot;
                       for tz:=1 to High(head1) -1   do begin
                        colSx := pcol(oposi[tz]);
                        colDx := pcol(oposi[tz+1]);
 
                        Canvas.rectangle(colSx,
                                         prig(vrighe  )-2,
                                         colDx,
                                         prig(vrighe+2)-2);
                       end;                
                       Canvas.Pen.Width:=1;
 //------------------------------------stampa dati header
                   for tz:=1 to High(head1) do begin                      
                       diff  :=Canvas.TextWidth('--'); 
                       Canvas.textout(pcol(oposi[tz])+diff , prig(vrighe  ),head1[tz]);
                       Canvas.textout(pcol(oposi[tz])+diff , prig(vrighe+1),head2[tz]);
                   end;  
    Ho provato con :
 
                       //Canvas.Pen.Mode := pmNotCopy;
                       //Canvas.Pen.Style := psDot;
                       //Canvas.Pen.color:=clwindow;
                       //setbkmode(printer.handle,TRANSPARENT);
                       //canvas.CopyMode := cmMergeCopy;
                       //setbkmode(printer.handle,OPAQUE);
                       //Canvas.Font.color:=clSilver;
                       //Canvas.Brush.color:=clSilver; 
                       //Canvas.brush.style:=bsSolid;
non trovo il mode giusto...
Qualcuno mi da' una mano ?
Grazie,
Eugenio Belli.
p.s. Non riesco ad accedere piu' ai ng Ded
e libero di Cantu', son cambiate le pass ?

io ho trovato questo, ma non ricordo più dove. spero ti possa essere utile
[How to write text transparently on the canvas using Textout?]
Fades Text in, and or out on a Canvas.
function TFadeEffect.FadeInText(Target: TCanvas; X, Y: integer; FText:
String): TRect;
var
  Pic: TBitmap;
  W, H: integer;
  PicRect, TarRect: TRect;
begin
  Pic := TBitmap.Create;
  Pic.Canvas.Font := Target.Font;
  W := Pic.Canvas.TextWidth(FText);
  H := Pic.Canvas.TextHeight(FText);
  Pic.Width := W;
  Pic.Height := H;
  PicRect := Rect(0, 0, W, H);
  TarRect := Rect(X, Y, X + W, Y + H);
  Pic.Canvas.CopyRect(PicRect, Target, TarRect);
  SetBkMode(Pic.Canvas.Handle, Transparent);
  Pic.Canvas.TextOut(0, 0, FText);
  FadeInto(Target, X, Y, Pic);
  Pic.Free;
  FadeInText := TarRect;
end;
procedure TFadeEffect.FadeOutText(Target: TCanvas; TarRect: TRect; Orig:
TBitmap);
var
  Pic: TBitmap;
  PicRect: TRect;
begin
  Pic := TBitmap.Create;
  Pic.Width := TarRect.Right - TarRect.Left;
  Pic.Height := TarRect.Bottom - TarRect.Top;
  PicRect := Rect(0, 0, Pic.Width, Pic.Height);
  Pic.Canvas.CopyRect(PicRect, Orig.Canvas, TarRect);
  FadeInto(Target, TarRect.Left, TarRect.Top, Pic);
  Pic.Free;
end;
--
 _______________________________________
        Gnaffy SoftWare
   web: 
http://gnaffy.tripod.com/
   e-mail: Gna...@Wappi.com
   e-mail: 
bmq...@tin.it
   ICQ#: 76488613
 ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

 wrote:
Ti ringrazio per la risposta.
Ho risolto in modo piu' semplice grazie ad un 
suggerimento di Uberto e Nando su Ded.
Era sufficiente : Canvas.brush.style:=bsClear
giusto prima del canvas.textout.
Ciao,
Eugenio.
-