Salut à tous,
Je réalise actuellement une application qui permet entre autre de dessiner des graphiques et surtout de les imprimer. Pour cela je vais devoir utiliser le gdi+. Donc je commence par des petits programmes de tests et là les problèmes surviennent tout de suite : l'affichage à l'écran (sur un TImage.canvas) est correct mais sur le Printer.Canvas le texte écrit avec le gdi+ n'est pas au bon endroit(les coordonnées x et y sont beaucoup trop grande !!
Pourquoi? Et comment faire faire pour écrire au bon endroit ?
Merci d'avance !
procedure TForm1.TestImprimeTexte(cv : TCanvas; chaine: string; x, y: integer);
var
rectf : TGPRectF;
graphics : TGPGraphics;
solidBrush : TGPSolidBrush;
fontFamily: TGPFontFamily;
gpfont: TGPFont;
origine : TpointD;
stringFormat : TGPstringFormat;
gpFontStyle : TFontStyle;
gpUnit : TUnit;
cvTest : TCanvas;
begin
cvTest := cv;
cv.font.color := clRed;
cv.font.size := 12;
cv.brush.style := bsClear;
origine := PointD(0,0);
graphics := TGPGraphics.Create(cv.Handle);
solidBrush:= TGPSolidBrush.Create(ColorToARGB(cv.font.color));
fontFamily:= TGPFontFamily.Create('Arial'); //Style de la font
gpFontStyle := FontStyleRegular;
gpUnit := UnitPixel;
gpfont:= TGPFont.Create(fontFamily, cv.font.size, gpFontStyle , gpUnit);
stringFormat := TGPstringFormat.create;
rectf.x := x;
rectf.y := y;
graphics.DrawString(chaine, -1, gpFont, MakePoint(rectf.X, rectf.y), stringFormat, solidBrush);
cv.textOut(Round(rectf.X), Round(rectf.Y), chaine);
graphics.Free;
solidBrush.Free;
fontFamily.Free;
gpfont.Free;
end;