Форум: "Основная";
Текущий архив: 2003.05.15;
Скачать: [xml.tar.bz2];
ВнизРисование на Canvas принтера и шрифты Найти похожие ветки
← →
KSergey (2003-05-03 16:38) [0]Два вопросика:
1) Как выудить список именно TrueType шрифтов (не в диалоге выбора, а из Fonts вычитать их св-ства...)
2) Такой кусочек кода:
// Rect - некая заполненная структура
Printer.BeginDoc;
with Printer.Canvas do
begin
// рисуем квадратик
Brush.Color := BackColor;
Brush.Style := bsSolid;
FillRect (Rect);
// выводим текст
Font := ... Font.Height := Floor(Font.Size/72*254);
(a) TextRect (Rect, ..,.., Text);
(b) TextOut (..,.., FText[0].Text);
end;
Printer.EndDoc;
Имеется в виду, что применяется 1 вариант: (a) или (b)
Что не понятно:
в варианте (b) - все нормально, вызывается код хоть сколько раз - и квадрат и текст печатается, текст не обрезается (понятно).
в варианте (a) - при первом вызове печатается и квадрат и текст, при последующих - квадрата нет... Текст нормально обрезается.
Где я не прав? Может надо сброс какой-то делать? Цвета утанавливаются для квадрата, просто здесь сократил.
← →
MBo (2003-05-04 08:32) [1]function EnumFntProc(var elf:TEnumLogFont;var ntm:TNewTextmetric;
FontType: dword; strings:TStrings):integer; stdcall;
begin
if FontType=TRUETYPE_FONTTYPE then strings.Add(elf.elfFullName);
Result:=1;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
EnumFontfamilies(Canvas.Handle, nil,@EnumFntProc, Integer(ListBox1.Items));
end;
← →
KSergey (2003-05-05 07:34) [2]Ага, кажися начал докапываться по 2-му вопросу... Оказ. эта гадина TextRect затирает весь(!) указанный Rect кистью, а на промежутке до TextRect я как раз кисть на белую менял...
Надо, оказ., поставить Brush.Style := bsClear
MBo © (04.05.03 08:32)
Осмыслил. Круто! Спасибо. (особенно описание последнего параметра в EnumFntProc понравилось)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.05.15;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.008 c