Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.038 c
15-1184329607
Zagaevskiy
2007-07-13 16:26
2007.08.12
Проводник


2-1184249071
GeLLeR
2007-07-12 18:04
2007.08.12
Микрофон


2-1184580673
httpbeginer
2007-07-16 14:11
2007.08.12
создание строки HTTP запроса


2-1184865192
Leggin
2007-07-19 21:13
2007.08.12
Проблемма: работа программы под разными учетными записями.


15-1184193958
Германн
2007-07-12 02:45
2007.08.12
Отрицательные стороны совка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский