TAChart, nogui, русский шрифт

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

TAChart, nogui, русский шрифт

Сообщение STAKANOV » 25.11.2013 20:00:11

Немного переделанный пример из TAChart:
Код: Выделить всё
program noguidemo;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF}
  Interfaces, Classes, tachartlazaruspkg { you can add units after this },
  FPCanvas, FPImage, FPImgCanv,
  TAGraph, TASeries, TADrawerFPCanvas in '../../TADrawerFPCanvas.pas', TADrawerCanvas, TADrawUtils;

var
  chart: TChart;
  bs: TBarSeries;
  img: TFPMemoryImage;
  c: TFPImageCanvas;
  d: IChartDrawer;
begin
  chart := TChart.Create(nil);
  chart.Width:=400;
  chart.Height:=300;
  chart.Title.Text.Add('здесь русский должен быть');
  chart.Title.Font.Name:='FreeMono';
  chart.Title.Font.Size:=12;
  chart.Title.Visible:=true;
  chart.LeftAxis.Marks.LabelFont.Name := 'FreeMono';
  chart.LeftAxis.Marks.LabelFont.Size := 10;
  chart.LeftAxis.Marks.LabelFont.Orientation := 450;
  chart.LeftAxis.Marks.Frame.Visible := true;
  chart.LeftAxis.Marks.Frame.Style := psSolid;
  chart.LeftAxis.Marks.Frame.FPColor := colBlack;
  chart.LeftAxis.Grid.FPColor := colDkGray;
  chart.BottomAxis.Marks.Visible := false;
  chart.BottomAxis.Grid.FPColor := colDkGray;
  chart.Color := $FFA0A0;
  chart.BackColor := $FFFFFF;
  bs := TBarSeries.Create(nil);
  chart.AddSeries(bs);
  bs.AddXY(1, 10);
  bs.AddXY(2, 7);
  bs.AddXY(3, 8);
  img := TFPMemoryImage.Create(chart.Width, chart.Height);
  c := TFPImageCanvas.Create(img);
  d := TFPCanvasDrawer.Create(c);
  d.DoGetFontOrientation := @CanvasGetFontOrientationFunc;
  chart.Draw(d, Rect(0, 0, chart.Width, chart.Height));
  img.SaveToFile('test.png');
  c.Free;
  img.Free;
  bs.Free;
  chart.Free;
end.


Результат:
test.png


Пробовал разные шрифты, но русского языка так и не получил. Может кто знает как?

ЗЫ. Может важно: ОС debian 7.2, TAChart на форме - русский есть.

Добавлено спустя 1 час 42 минуты 38 секунд:
чуть не забыл: fpc 2.6.2, lazarus 1.0.12
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Re: TAChart, nogui, русский шрифт

Сообщение Vadim » 26.11.2013 04:59:28

Debian который Linux или который FreeBSD?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: TAChart, nogui, русский шрифт

Сообщение STAKANOV » 26.11.2013 10:17:31

Debian который Linux, i386

Добавлено спустя 9 минут 52 секунды:
Похоже дело в FPCanvas
Если взять пример из fcl-image - http://wiki.freepascal.org/fcl-image#Drawing_text и написать текст по-русски, то тот же результат :cry:

Добавлено спустя 1 час 53 минуты 51 секунду:
Как временное решение: нашел в инете древний ttf-шрифт в кодировке 1251, с ним русский выводится (после конвертации строки из UTF-8 в cp1251 конечно). Как прикрутить UTF-8 пока не знаю.
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Re: TAChart, nogui, русский шрифт

Сообщение Максим » 26.11.2013 23:34:03

А почему не используете функцию UTF8ToAnsi?
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 599
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: TAChart, nogui, русский шрифт

Сообщение STAKANOV » 27.11.2013 23:23:18

Максим писал(а):А почему не используете функцию UTF8ToAnsi?


А она не работает. Или работает как-то не так. Взять мое временное решение из данной темы, используем UTF8toCP1251 - все ОК. Меняем на UTF8toANSI - вместо русского знаки вопроса.

Возвращаясь к TAChart, если текст начинать поворачивать задавая свойство Orientation, то пока английский все нормально, а вот кириллица начинает отрисовываться в самых неожиданных местах. Но опять же как я понимаю все дело в FPCanvas.
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Re: TAChart, nogui, русский шрифт

Сообщение Лекс Айрин » 28.11.2013 10:50:52

STAKANOV писал(а): Взять мое временное решение из данной темы, используем UTF8toCP1251 - все ОК. Меняем на UTF8toANSI - вместо русского знаки вопроса.


Тоже сталкивался с этой проблемой. Причем, обратная ей почему то работает.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: TAChart, nogui, русский шрифт

Сообщение Vadim » 28.11.2013 14:34:35

Может быть потому, что UTF8ToAnsi - это аналог UTF8Decode()?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 229

Рейтинг@Mail.ru