PDA

View Full Version : Smooth Edge of Screen Fonts



s.mostafa.rahmani
سه شنبه 28 آبان 1387, 10:25 صبح
سلام
حتماً با اين گزينه:
Smooth Edge of Screen Fonts
در ويندوز آشنا هستيد، كه باعث مي‌شه لبه فونتها نرم‌تر بشه و نمايش اونها توي مانيتور زيباتر به نظر بياد.

سؤالم اينه كه چطور مي‌شه اين گزينه رو با كد نويسي فعال يا غيرفعال كرد؟


ممنون
.

vcldeveloper
سه شنبه 28 آبان 1387, 10:44 صبح
مسلما از Registry برای نگهداری اون مقدار استفاده میشه. می تونید با یکی از این برنامه هایی که تغییرات رجیستری را مانیتور می کنند، متوجه بشید که از چه کلیدی برای نگهداری این مقدار استفاده میشه.

اگر هم منظورتون اینه که از این قابلیت در برنامه خودتون استفاده کنید، در حالت عادی امکان پذیر نیست، چون برای این کار باید از +GDI استفاده بشه، در حالی که کنترل های فعلی برپایه GDI هستند. البته نمونه کدهایی وجود دارند که کلاسی شبیه TCanvas ولی برپایه +GDI می سازند، یا کامپوننت های جدید را برپایه آن می سازند. یا اینکه می توانید مستقیما توابع +GDI را فراخوانی کنید. با جستجو در اینترنت می تونید همچین سورس کدهایی را پیدا کنید، و در برنامه خودتان ازشان استفاده کنید.

s.mostafa.rahmani
سه شنبه 28 آبان 1387, 10:48 صبح
ميشه بفرماييد، چه كلمات كليدي رو جستجو كنم، تا سريعتر به جواب برسم؟

vcldeveloper
سه شنبه 28 آبان 1387, 11:06 صبح
http://lummie.co.uk/gdi-controls-for-delphi/
http://www.progdigy.com/?page_id=7

s.mostafa.rahmani
دوشنبه 11 آذر 1387, 08:33 صبح
ضمن تشكر از آقاي كشاورز،
ست كردن Font Smoothing با استفاده از رجيستري:


procedure SetSmoothFont;
var
sf: TRegistry;
begin
sf := TRegistry.Create;
try
sf.LazyWrite := False;
sf.RootKey := HKEY_CURRENT_USER;
if sf.OpenKey('Control Panel\Desktop\', True) then
begin
sf.WriteString('FontSmoothing', '2');
sf.WriteInteger('FontSmoothingType', 2);
SystemParametersInfo(SPI_SETFONTSMOOTHING,
value, nil, SPIF_SENDWININICHANGE);
SystemParametersInfo(SPI_SETFONTSMOOTHINGTYPE,
value, nil, SPIF_SENDWININICHANGE);
sf.CloseKey;
end;
finally
sf.Free;
end;
end;