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

Вниз

штриховка замкнутых областей   Найти похожие ветки 

 
бульдозер   (2009-07-07 01:58) [0]

всем привет.
требуется заштриховать текст (замкнутые области ) , а точнее
отобразить ето на екране и занести в массив координаты всех линий штриховки . как это лучше зделать ? в каком направлении вести поиск инфы ?
P.S. ссылки приветствуются


 
Германн ©   (2009-07-07 02:05) [1]


>
> бульдозер   (07.07.09 01:58)
>
> всем привет.
> требуется заштриховать текст (замкнутые области ) , а точнее
> отобразить ето на екране и занести в массив координаты всех
> линий штриховки . как это лучше зделать ? в каком направлении
> вести поиск инфы ?

Утро вечера мудреней!
(с) Народная мудрость.


 
KilkennyCat ©   (2009-07-07 02:52) [2]


> в каком направлении вести поиск инфы

Любая книжка по Делфи. Раздел "Графика"


 
Художник   (2009-07-07 08:32) [3]


> всем привет.требуется заштриховать текст (замкнутые области
> ) , а точнее отобразить ето на екране и занести в массив
> координаты всех линий штриховки . как это лучше зделать
> ? в каком направлении вести поиск инфы ?

Для рисования(запоминия) штриховки можно, например, использовать гибрид алгоритмов "Алгоритм Брезенхема для рисования линии" + заливка замкнутых областей (Где-то в этом подфоруме есть мой пост с кодом этого алгоритма).


 
Художник   (2009-07-07 08:52) [4]

Хотя нет. Предыдущий мой пост больше смахивает на ересь.
Можно буквы залить уникальным цветом, затем создать массив с координатами линии нужной направлености и используя заливку букв как маску перерисовать линии куда нужно попутно запоминая точки входа и выхода из зоны "закраски", попутно сверяясь с масивом на вхождение проверямого пикселя в конкретную линию. Где-то так


 
И. Павел   (2009-07-07 09:19) [5]

Можно проще:
var bmp:TBitmap;
begin
 Bmp:=TBitmap.Create;
 Bmp.Height:=100;
 Bmp.Width:=200;
 Bmp.Canvas.Font.Size:=50;
 Bmp.Canvas.Brush.Color:=clBlack;
 Bmp.Canvas.Rectangle(0, 0, 200, 100);
 Bmp.Canvas.Brush.Style:=bsDiagCross;
 Bmp.Canvas.Brush.Color:=clWhite;
 Bmp.Canvas.Rectangle(0, 0, 200, 100);
 Form1.Canvas.Brush.Color:=clWhite;
 Form1.Canvas.Font.Size:=50;
 Form1.Canvas.Rectangle(0, 0, 300, 200);
 Form1.Canvas.TextOut(10, 10, "12345");
 Form1.Canvas.CopyMode:=CmMergePaint;
 Form1.Canvas.Draw(10, 10, Bmp);
end;


 
KilkennyCat ©   (2009-07-07 09:41) [6]


> И. Павел (07.07.09 09:19) [5]


Теперь добавь сюда вторую часть вопроса и будешь совсем молодец. Вот только "проще" уже не будет.


 
Григорьев Антон ©   (2009-07-07 09:57) [7]

Надо с помощью BeginPath/EndPath/PathToRegion создать регион по форме текста, потом выбрать его в качестве региона отсечения (SelectClipRgn), и заштриховать прямоугольник, гарантированно включающий в себя получившийся регион. Благодаря отсечению реально будут закрашено только содержимое региона, т.е. текста.

Похожий пример есть в статье http://www.delphikingdom.com/asp/viewitem.asp?catalogid=169 (см. пример GDIDraw в прилагаемом к ней архиве). Там, правда, не штриховка, а заливка букв изображением из растровой картинки, но принцип очень похож, думаю, разберётесь.


 
Григорьев Антон ©   (2009-07-07 10:00) [8]

А если нужно получить изображение буквы в виде кривых Безье, см. функцию GetGlyphOutline.


 
И. Павел   (2009-07-07 10:04) [9]


> KilkennyCat ©



> массив координаты всех линий штриховки

Мало ли, какие там линии, может быть кривые и нужен двуменрный массив точек ;)



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

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

Наверх




Память: 0.49 MB
Время: 0.011 c
1-1213532081
Student
2008-06-15 16:14
2009.09.06
Свободная память + TStringGrid


15-1246528418
DelphiN!
2009-07-02 13:53
2009.09.06
Определить замыкание 2х ножек com порта


2-1247039063
MAX
2009-07-08 11:44
2009.09.06
из Word в БД


15-1246825805
Юрий
2009-07-06 00:30
2009.09.06
С днем рождения ! 6 июля 2009 понедельник


15-1246633939
Пит
2009-07-03 19:12
2009.09.06
Обработка CallStack и SEH-фреймов