Thema: Delphi Canvas, Vertikaler Text

Einzelnen Beitrag anzeigen

Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Canvas, Vertikaler Text

  Alt 8. Dez 2005, 19:05
Gut ich hab mir ne Funktion geschrieben, die das nun für mich erledigt.

Das wie alzaimar es Vorgeschlagen hat, hat nicht geklappt.

Also, wen es noch interessiert, so ist's gemacht:
Delphi-Quellcode:
procedure VerticalText(x,y:integer;text:string;target:TCanvas);
Var
  bmp:TBitmap;
begin
  with target do
  begin
    bmp := TBitmap.Create;
    bmp.Canvas.Font := font;
    bmp.Width := textwidth(text);
    bmp.Height := textheight(text);
    bmp.Canvas.TextOut(0,0,text);
    turn(bmp);
    draw(x,y,bmp);
    bmp.Free;
  end;
end;

type TMyhelp = array[0..0] of TRGBQuad;

procedure Turn(const Bitmap: TBitmap);
var P: PRGBQuad; //^THelpRGB;
    x,y,b,h : Integer;
    RowOut: ^TMyHelp;
    help: TBitmap;
begin
  Bitmap.PixelFormat := pf32bit;
  help := TBitmap.Create;
  try
    help.PixelFormat := pf32bit;
    b := bitmap.Height;
    h := bitmap.Width;
    help.Width := b;
    help.height := h;
    for y := 0 to (h-1) do
    begin
      rowOut := help.ScanLine[y];
      P := Bitmap.scanline[bitmap.height-1];
      inc(p,y);
      for x := 0 to (b-1) do
      begin
        rowout[x] := p^;
        inc(p,h);
      end;
    end;
  finally
    bitmap.Assign(help);
  end;
end;
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat