ありがとうございます。
> ただ,気になったのですが.たとえば以下の場合,どのようにプレビュー
> されるでしょうか.
> _______________
> 喫茶XRAY
>
> 私の環境では上のような感じになりましたが...
> つまり,文字の基点が右(R)上(T)ということですね.
確かにそのとおりでした。
調べてみたところ、
plPrev1.BeginDoc;
try
↓これがいけてなかった
MyObject.Draw(plPrev1.Canvas.Handle);
plPrev1.Canvas.Font.Height:=100;
plPrev1.Canvas.Pen.Width:=5;
plPrev1.Line(200,1000,600,600);
plPrev1.TextOutRT(1000,600,'喫茶XRAY')
finally
plPrev1.EndDoc;
end;
plPrev1.ShowModal;
のように利用していました。
MyObject.Draw(plPrev1.Canvas.Handle);
が内部で API→SetTextAlign を利用していたための不具合でした。
MyObject.Drawの内部を直したいのですが開発者不在のためとりあえず、
procedure TCustomplPrev.TextOutRT(X1,Y1:Integer;Text:String);
var
X,Y: Integer;
CAdjust: Integer;
begin
//yoshikawas
SetTextAlign(FCanvas.Handle,TA_LEFT or TA_TOP);
CAdjust:=GetTextCAdjust(FCanvas,Text);
X:=X1-CAdjust-FCanvas.TextWidth(Text);
Y:=Y1;
FCanvas.Brush.Style:=bsClear;
FCanvas.TextOut(X,Y,Text);
end;
としてTextOut..を変更して利用してみます。
ありがとうございました。
|