Форум: "Начинающим";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];
ВнизПолучить начало координат при выводе в 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.049 c