Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.12;
Скачать: CL | DM;

Вниз

Получить начало координат при выводе в svg формат   Найти похожие ветки 

 
Gydvin ©   (2007-07-17 12:15) [0]

Здравствуйте. Делаю вывод графики в svg формат, возникла проблема с выводом текста. Как известно в делфях начало координат в текстовом блоке начинается в левом верхнем углу (Рис.1) в svg же начинаются в левом нижнем, но не углу а от линии на которой лежит буква, без учета "хвостов" у символов. Как на (Рис. 2). Если верхнюю границу понятно, как получить, то нижнюю не совсем.

http://gydvin6.narod.ru/123.jpg
5 кб


 
Dib@zol ©   (2007-07-17 12:19) [1]

GetGlyphOutline + CGO_METRICS, если не ошибаюсь, должно тебе выдать Bounding-Box для каждого запрошенного символа. Вуаля!
ЗЫ Если ты не это имел в виду, то конкретизируй вопрос.


 
Gydvin ©   (2007-07-17 14:13) [2]

Чет мозга нехватает заюзать GetGlyphOutline.
Вот чуть "накидал", но это мало вразумительно, и сам непонял чего сделал.

function TForm1.GetBoundingRectangle(CNV: tcanvas; Ch: char): integer;
var
Metric: TGlyphMetrics;
Mat2: TMat2;
begin
FillChar(Mat, SizeOf(Mat), 0);
Mat2.eM11.value := 1;
Mat2.eM22.value := 1;
result:=0;
result:=GetGlyphOutline(cnv.Handle,ord(ch),GGO_METRICS,Metric,0,nil,Mat2);

end;

Помогите заюзать плз


 
Dib@zol ©   (2007-07-17 14:18) [3]

Вот тупо выдранный сырец. Ща может оптимизирую чуть. ВВ - в GlyphMetrics.

function GetRawLtrData(DC, F : HGDIOBJ; L:Byte; var cx, cy:Smallint; var Ptr:Pointer):Cardinal;
var
 TF : HFONT;
 GM : GLYPHMETRICS;
 M : MAT2;
 i : Cardinal;
begin
 TF:=SelectObject(DC, F);

 FillChar(M, SIZEOF(MAT2), 0);
 M.eM11.value:=1;
 M.eM22.value:=1;

 i:=GetGlyphOutline(DC, L, GGO_NATIVE, GM, 0, nil, M);
 Ptr:=GlobalAllocPtr(GMEM_FIXED, i);
 Result:=i;
 GetGlyphOutline(DC, L, GGO_NATIVE, GM, i, Ptr, M);

 cx:=GM.gmCellIncX;
 cy:=GM.gmCellIncY;

 SelectObject(DC, TF);
end;


 
Gydvin ©   (2007-07-17 23:13) [4]

Собственно решил эту проблему, отрисовкой символа "w" (для поиска нижней границы) с нужным форматированием на битмапе, с последующим поиском первого пикселя буквы снизу-вверх, методом scanline. Точность получилась неплохая.



Страницы: 1 вся ветка

Текущий архив: 2007.08.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.029 c
9-1157737951
аматор
2006-09-08 21:52
2007.08.12
Низкий ФПС


1-1180686550
Inna_Z
2007-06-01 12:29
2007.08.12
Как послать e-mail с русским текстом.


3-1177497099
snaks
2007-04-25 14:31
2007.08.12
Объединение ячеек в DBGrid


2-1184844929
Игорь_
2007-07-19 15:35
2007.08.12
WinApi и SQL


2-1184235621
Kolan
2007-07-12 14:20
2007.08.12
Помогите разобраться с компоненктами для доступа к базам&#133