Delphi 7 には、DVD の湾曲したエッジに沿って著作権テキストを描画する次のコードがあります。Graphics32 の古いバージョンを使用しています。
Graphics32 の最新コードを使用して Delphi XE5 に切り替えていますが、このコードはコンパイルされなくなりました。特に LoadArcCurve と drawingBuffer.RenderFittedText はメソッドとして存在しなくなりました。
procedure TCDLabel.DrawCopyrightText(const drawingBuffer: TBitmap32Ex);
var
FixedPointArray : TArrayOfFixedPoint;
Center : TFixedPoint;
vAngle1 : double;
vAngle2 : double;
radius : integer;
CopyrightText : string;
textColor : TColor32;
begin
radius := (fImageSize div 2) - 30;
UpdateTextTransform(8{2.3}, drawingBuffer);
Center.x := GR32.Fixed(fImageSize div 2);
Center.y := GR32.Fixed(fImageSize div 2);
vAngle1 := DegToRad(-130);
textColor := clWhite32;
vAngle2 := DegToRad(0);
LoadArcCurve(Center, GR32.Fixed(radius), GR32.Fixed(radius), vAngle1, vAngle2, FixedPointArray);
CopyrightText := Format('%s %s Dystopia Unlimited. All rights reserved.', [GetCopyrightSymbol, fCopyrightYears]);
drawingBuffer.RenderFittedText(CopyrightText, textColor, pdoAntialising or pdoFilling, FixedPointArray);
FixedPointArray := NIL;
end; {DrawCopyrightText}
Delphi XE5 で最新の Graphic32 コードを使用して次のコード スニペットを作成し、他のさまざまな同様の方法を試みましたが成功しませんでした。
canvas := TCanvas32.Create(drawingBuffer); // drawingBuffer is a TBitmap32
try
canvas.Brushes.Add(TStrokeBrush);
canvas.Brushes[0].Visible := TRUE;
(canvas.Brushes[0] as TStrokeBrush).StrokeWidth := 2;
(canvas.Brushes[0] as TStrokeBrush).FillColor := clWhite32;
canvas.Path.BeginPath;
canvas.Path.Arc(Center, -130, 0, radius);
canvas.Path.EndPath;
TextToPath(drawingBuffer.Font.Handle, canvas.Path, FloatRect(0, 0, fImageSize, fImageSize), CopyrightText);
私が見つけることができる新しい Graphics32 のすべての例は、Delphi コントロール キャンバスに直接描画しているように見えますが、TBitmap32 に描画する必要があります。
Delphi XE5 と最新バージョンの Graphics32 を使用して、イメージ/ビットマップの円弧に沿ってテキストをレンダリングするにはどうすればよいですか?