Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
ВнизПечать-принтер-шрифт Найти похожие ветки
← →
bbgone (2004-04-05 20:54) [0]есть программа...
var
tm : TTextMetric;
lf : TLOGFONT;
with lf do
begin
lf.lfHeight := StdHeight;
lf.lfWidth := 0;
lf.lfEscapement := 0;
lf.lfOrientation := 0;
lf.lfWeight := FW_MEDIUM;
lf.lfCharSet := OEM_CHARSET;
lf.lfPitchAndFamily := FIXED_PITCH or FF_MODERN;
lf.lfClipPrecision := CLIP_DEFAULT_PRECIS;
lf.lfOutPrecision := OUT_DEFAULT_PRECIS;
lf.lfQuality := DEFAULT_QUALITY;
lf.lfFaceName := "Courier New";
end;
Font1 := CreateFontIndirect(lf);
SelectObject( hDC,Font1);
SetBkMode( hDC, TRANSPARENT);
GetTextMetrics( hDC, tm);
StdHeight := tm.tmHeight;
StdWidth := tm.tmAveCharWidth;
StdWidthCond := StdWidth * 5 div 8;
// Condensed font - Font2
with lf do
begin
lf.lfHeight := StdHeight;
lf.lfWidth := StdWidthCond;
lf.lfEscapement := 0;
lf.lfOrientation := 0;
lf.lfWeight := FW_MEDIUM;
lf.lfCharSet := OEM_CHARSET;
lf.lfPitchAndFamily := FIXED_PITCH or FF_MODERN;
lf.lfClipPrecision := CLIP_DEFAULT_PRECIS;
lf.lfOutPrecision := OUT_DEFAULT_PRECIS;
lf.lfQuality := DEFAULT_QUALITY;
lf.lfFaceName := "Courier New";
end;
Font2 := CreateFontIndirect(lf);
При печати на реальный принтер(использую TextOut)под NT/Win2k/XP
ширина строки больше, чем под Win95/98/Me.
В чем секрет?
← →
MBo © (2004-04-06 05:59) [1]hDC относится к принтеру?
Вообще логический шрифт может соответствовать различным физическим реализациям шрифта в зависимости, например, от драйвера принтера. Кроме того, tmAveCharWidth - только оценочная характеристика. Если требуется узнать ширину строки, можно использовать GetTextExtentPoin32, но и это не гарантирует абсол.тной точности. См. также GetCharABCWidth и т.п. функции
← →
bbgone (2004-04-06 17:23) [2]hDC относится к принтеру.
Полученный логический шрифт под разными платформами получается
абсолютно одинаковый , кроме одного параметра - PitchAndFamily.
Под Win95/98/Me - 49 (т.е. FIXED_PITCH or FF_MODERN) а под NT/Win2k/XP - 62 (видимо FIXED_PITCH or FF_MODERN or FF_SWISS)
в результате ширина контрольной строки 3752 под Win98
и 4200 под NT(Для Font1).
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.033 c