Форум: "Начинающим";
Текущий архив: 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