Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Редактирование метафайла, Выделение контура символа 
:(
    Опции темы
Digar
Дата 31.5.2006, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 31.5.2006

Репутация: нет
Всего: нет



Мне надо редактировать метафайл(переместить текст). 
Мне хотелось бы при этом выделять этот самый текст как это делается в CorelDraw. Подозреваю, что они используют Glyph (контур символа)применяемого фонта, но как до него добраться. По сути мне необходимо например чёрным пером и прозрачной кистью нарисовать на метафайле или имидже(неважно) векторный символ, но у фонта как известно нет ни пера ни кисти??? А как это сделать не знаю поэтому Вас и гружу. Задача на мой взгляд интересная, может кто подскажет? 
PM MAIL   Вверх
Digar
Дата 7.6.2006, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 31.5.2006

Репутация: нет
Всего: нет



А кто знает как использовать GetGlyphOutline.
У меня что-то ничего не получается:
Код

procedure TMainForm.Button1Click(Sender: TObject);
var
  GlyphSize,TextMSize,ec:LongInt;
  ParSize:Word;
  GlyphMetrics:_GlyphMetrics;
  LPOUTLINETEXTMETRIC:POUTLINETEXTMETRIC;
  LPKERNINGPAIR:PKERNINGPAIR;
  Matrix:Mat2;
  pGlyphSize: Pointer;
  LogFont:TLogFont;
  DC:HDC;
  fnt:HFont;
begin
with logfont do begin lfHeight:=20;lfWidth:=0;lfEscapement:=450;end;
DC:=mainform.Image1.Canvas.Handle;
fnt:=CreateFontInDirect(LogFont);SelectObject(dc,fnt);
LPOUTLINETEXTMETRIC:=nil;TextMSize:=0;
Windows.GetOutlineTextMetrics(DC,TextMSize,LPOUTLINETEXTMETRIC);
if TextMSize>0 then GetOutlineTextMetrics(DC,TextMSize,LPOUTLINETEXTMETRIC) else exit;
LPKERNINGPAIR:=nil;ParSize:=0;
GetKerningPairs(DC,ParSize,LPKERNINGPAIR);
if ParSize>0 then GetKerningPairs(DC,ParSize,LPKERNINGPAIR) else exit;
GlyphSize:=0;
GetGlyphOutline(DC,ord('E'),GGO_NATIVE,GlyphMetrics,GlyphSize,nil,Matrix);
if GlyphSize>0 then
 begin
 GetMem(pGlyphSize,GlyphSize);
 GetGlyphOutline(DC,ord('E'),GGO_NATIVE,GlyphMetrics,GlyphSize,pGlyphSize,Matrix );
 end else exit;
end;

 smile  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0968 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.