喫茶XRAYトップページ

[スレッド全体
]

[713] Re2:TextOutRTについて返信 削除
2006/3/24 (金) 10:26:16 yoshikawas
ありがとうございます。

> ただ,気になったのですが.たとえば以下の場合,どのようにプレビュー
> されるでしょうか.
>      _______________
>             喫茶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..を変更して利用してみます。
ありがとうございました。




[714] Re3:TextOutRTについて返信 削除
2006/3/24 (金) 23:24:23 Mr.XRAY
▼ yoshikawasさん

> MyObject.Draw(plPrev1.Canvas.Handle);
> が内部で API→SetTextAlign を利用していたための不具合でした。
> MyObject.Drawの内部を直したいのですが開発者不在のためとりあえず、


なるほど,参考になりました.これはTplPrevの各テキスト描画のコード
をWin32APIを使用して書き直せば回避できる現象ですね.
実は,これらの各描画メソッドにCanvasのメソッドを使用したのは,
なにかの参考になるのではないかという気持ちもあったんです.

バグの修正の問題とあわせて考えたいと思います.
検証ありがとうございました.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82