Witam,
Korzystam w Delhi 7 z kontrolek GDI+ do pisania tekstu po obrazkach. Mam pytanie, jak obrócić tekst o jakiś kąt.
A bez GDI może być ?
procedure AngleTextOut(ACanvas: TCanvas; Angle, X, Y: Integer; Str: string);
var
LogRec: TLogFont;
OldFontHandle,
NewFontHandle: hFont;
begin
GetObject(ACanvas.Font.Handle, SizeOf(LogRec), Addr(LogRec));
LogRec.lfEscapement := Angle*10;
NewFontHandle := CreateFontIndirect(LogRec);
OldFontHandle := SelectObject(ACanvas.Handle, NewFontHandle);
ACanvas.TextOut(X, Y, Str);
NewFontHandle := SelectObject(ACanvas.Handle, OldFontHandle);
DeleteObject(NewFontHandle);
end;
zawsze warto obejrzeć przykłady do GDI+ ,
obracanie tekstu na pewno tam jest
I wklejam kod z tej strony chińskiej aby nie zaginął jak ktoś wyłaczy blog a google wykopie z cache
uses
GDIPAPI, GDIPOBJ;
procedure TForm1.Button1Click(Sender: TObject);
var
ff: TGPFontfamily;
ft: TGPFont;
sf: TGPStringFormat;
br: TGPSolidBrush;
path: TGPGraphicsPath;
mtrx: TGPMatrix;
gr: TGPGraphics;
ss: WideString;
i: integer;
begin
ff := TGPFontfamily.Create('Tahoma');// bo nie wiadomo co to za czcionka "MS Pゴシック" TGPFontfamily.Create('MS Pゴシック');
ft := TGPFont.Create(ff, 16, FontStyleRegular, UnitPixel);
br := TGPSolidBrush.Create(aclBlack);
sf := TGPStringFormat.Create();
ss := 'tekst do obracania';//'---テキストの回転';
path := TGPGraphicsPath.Create();;
path.AddString(ss, -1, ff, FontStyleRegular, 16, MakePoint(0.0, 0.0), sf);
mtrx := TGPMatrix.Create;
mtrx.Translate(150.0, 150.0);
path.Transform(mtrx);
mtrx.Reset;
gr := TGPGraphics.Create(Canvas.Handle);
mtrx.RotateAt(30, MakePoint(150.0, 150.0+ft.GetHeight(gr)/2));
gr.SetSmoothingMode(SmoothingModeAntiAlias);
for i := 0 to 11 do
begin
gr.FillPath(br, path);
path.Transform(mtrx);
end;
ss := 'Text Rotation by Path Transformation';
gr.SetTextRenderingHint(TextRenderingHintAntiAlias);
gr.DrawString(ss, -1, ft, MakePoint(20.0, 300.0), br);
gr.Free;
mtrx.Free;
path.Free;
sf.Free;
br.Free;
ft.Free;
ff.Free;
end;
Dzięki, działa.
Mam jeszcze pytanie, czy zna ktoś jakiś komponent, za pomocą którego można fajnie wybrać kąt obrotu? Jakieś kółko, jak np.: wybór kolorów w programach graficznych.
aby nie zaginął jak ktoś wyłaczy blog a google wykopie z cache
strona główna blogu
http://blog.livedoor.jp/junki560/
lista przykładów dla Delphi
http://blog.livedoor.jp/junki560/archives/30287059.html
jak trzeba pomocy to pytać, co nieco zrozumiem.
Mam jeszcze pytanie, czy zna ktoś jakiś komponent, za pomocą którego można fajnie wybrać kąt obrotu? Jakieś kółko, jak np.: wybór kolorów w programach graficznych.