名前 題名 ▼ KSCさん > ▼ Mr.XRAYさん > > ▼ KSCさん > > > > > 「同じような方法」について教えて頂けないでしょうか? > > > > 印刷プレビューコンポのソースにもありますが, > > とりあえず以下を参考にしてください.後で時間がとれたら > > 具体的なことはやってみます. > > > > http://mrxray.on.coocan.jp/Halbow/Notes/N003.html#List2 > > 回答を有難うございます。 > > 上記のページを参照して、下記のようにソースに > TLogFontの部分を挿入したのですが、 > > RightRotateが、 > 「0」なら今までに教えて頂いた反転文字(180度) > 「1」なら右90度 > 「上記以外の数値(とりあえずー1)」なら左90度 > > procedure TCustomplPrev.InverseString(X1, Y1, X2, Y2, RightRotate: Integer; Text: String; AFont: TFont); > var > AMetaFile : TMetafile; > ACanvas : TMetaFileCanvas; > AWidth : Integer; > AHeight : Integer; > LF : TLogFont; > begin > > AMetaFile := TMetafile.Create; > AMetaFile.Inch := 0; > > try > ACanvas := TMetafileCanvas.Create(AMetaFile,0); > try > //メタファイルに必要なサイズを求める > ACanvas.Font.Assign(AFont); > //フォントを正しく設定 > AdjustFont(ACanvas); > AWidth :=ACanvas.TextWidth(Text); > AHeight:=ACanvas.TextHeight(Text); > //一旦描画を終了してメタファイルのサイズを設定 > ACanvas.Free; > AMetaFile.Width :=AWidth; > AMetaFile.Height:=AHeight; > > //メタファイルCanvasを再生成 > ACanvas :=TMetafileCanvas.Create(AMetaFile,0); > ACanvas.Font.Assign(AFont); > //フォントを正しく設定 > AdjustFont(ACanvas); > //メタファイルに通常にテキスト描画 > ACanvas.Brush.Style:=bsClear; > > if RightRotate <> 0 then begin > GetObject(ACanvas.Font.Handle, SizeOf( LF ), @LF); > if RightRotate = 1 then LF.lfEscapement := 2700 else LF.lfEscapement := 900; > ACanvas.Font.Handle := CreateFontIndirect( LF ); > end; > > ACanvas.TextOut(0,0,Text); > finally > ACanvas.Free; > end; > > StretchDrawMetaFile(Rect(X1,Y1,X2,Y2),AMetaFile); > finally > AMetaFile.Free; > end; > end; > > 確かに右90度及び左90度を再現できましたが、AMetaFileの縦横サイズの値が > 角度「0」の時の文字の縦横サイズなので、うまくいきませんでした。(当然か...) > > > あと、もう少しかな...? GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link