unit utest33; {$mode objfpc} interface uses Classes, SysUtils, utest, Graphics, BGRABitmap, BGRABitmapTypes; type { TTest33 } TTest33 = class(TTest) virtualScreen: TBGRABitmap; constructor Create; destructor Destroy; override; procedure OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer); override; procedure OnTimer(Width, Height: Integer; ElapsedSec: Double); override; end; implementation { TTest33 } constructor TTest33.Create; begin inherited Create; Name := 'Text vertical anchor'; virtualScreen := nil; end; destructor TTest33.Destroy; begin virtualscreen.free; inherited Destroy; end; procedure TTest33.OnPaint(Canvas: TCanvas; Left,Top,Width, Height: Integer); const FontVerticalAnchorToStr: array[TFontVerticalAnchor] of string = ('Top of the font with space for Âccents', 'Center of the font', 'Top of the UPPÊRCASE letters', 'Center of the UPPERCASE letters', 'Top of x and other small letters', 'Center of x and other small letters', 'Baseline of the text', 'Descent line for g q, etc.', 'Bottom of the font including bottom line spacing'); var y,h: integer; textanchor: TFontVerticalAnchor; begin if (virtualscreen <> nil) and ((virtualscreen.width <> width) or (virtualscreen.Height <> height)) then FreeAndNil(virtualScreen); if virtualscreen = nil then virtualscreen := TBGRABitmap.Create(Width,Height); virtualScreen.Fill(CSSLightSteelBlue); virtualScreen.FontName := 'Times New Roman'; h := Height div 20; virtualScreen.FontHeight := h; y := 0; textanchor:= low(TFontVerticalAnchor); repeat y += h; virtualScreen.HorizLine(0,y,virtualScreen.Width,BGRA(255,255,255),dmDrawWithTransparency); virtualScreen.FontVerticalAnchor := textanchor; virtualScreen.TextOut(virtualScreen.Width/2,y, FontVerticalAnchorToStr[textanchor], BGRABlack, taCenter, h/3); y += h; if textanchor >= high(TFontVerticalAnchor) then break; textanchor:= succ(textanchor); until false; //draw virtualscreen opaque on canvas virtualscreen.Draw(Canvas,Left,Top,True); end; procedure TTest33.OnTimer(Width, Height: Integer; ElapsedSec: Double); begin //nothing end; end.