PDA

View Full Version : سوال: به دست آوردن طول یک رشته بر حسب پیکسل با یک فونت مشخص؟؟؟



BORHAN TEC
جمعه 17 تیر 1390, 16:07 عصر
سلام :لبخند:
من می خواهم طول یک رشته با فونت مشخص را بر حسب پیکسل پیدا کنم. برای این کار تابعی هم نوشته ام ولی نمی دونم چرا خطا می ده. این هم از تابع:
function GetTextWidthByPixel(aFont: TFont; aText: string): Integer;
var
fCanvas: TCanvas;
begin
Result := -1;
fCanvas := TCanvas.Create;
try
fCanvas.Font := aFont;
Result := fCanvas.TextWidth(aText);
finally
fCanvas.Free;
end;
end;

این هم از پیام خطایی که دریافت می کنم:

Canvas does not allow drawing


لطفاً دوستان یاریمان کنند. :لبخندساده:

Felony
جمعه 17 تیر 1390, 16:53 عصر
چه طوری روی Canvas ی که بهش DC تخصیص ندادی میخوای رسم کنی ؟!
بعدش هم میتونی مستقیم اسم فونت رو به تابع بدی :

function GetTextWidthByPixel(aFont, aText: string): Integer;
var
fCanvas: TCanvas;
begin
fCanvas := TCanvas.Create;
try
fCanvas.Handle := GetDC(Form1.Handle);
fCanvas.Font.Name := aFont;
Result := fCanvas.TextWidth(aText);
finally
fCanvas.Free;
end;
end;

BORHAN TEC
جمعه 17 تیر 1390, 17:07 عصر
دست گلت درد نکنه. :قلب:

بعدش هم میتونی مستقیم اسم فونت رو به تابع بدی :

به این دلیل پارامتر اول رو از نوع TFont تعریف کردم، چون می خواستم تابع نسبت به اندازه فونت، Bold بودن و Italic بودن و ... نیز حساس شود.