Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.09.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
бульдозер   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
15-1246912210
Юрий
2009-07-07 00:30
2009.09.06
С днем рождения ! 7 июля 2009 вторник


15-1246894995
Пит
2009-07-06 19:43
2009.09.06
AVG ругается на практически чистый проект Delphi


15-1246915719
DillerXX
2009-07-07 01:28
2009.09.06
Подскажите пожалуйста автора и название?


3-1227015324
миникодер
2008-11-18 16:35
2009.09.06
Запись BLOB из Delphi в Oracle 9.2


15-1246918524
DVM
2009-07-07 02:15
2009.09.06
Функция обратного вызова с переменным числом параметров.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский