Вверх ↑
Ответов: 2236
Рейтинг: 676
#1: 2018-10-24 18:12:04 ЛС | профиль | цитата
На сколько понял то нужно не контур, а массив закрашиваемых текстом пикселей.
Как вариант:


Add(Bitmap,4437282,189,126)
{
@Hint=#23:Вставить сюда картинку.|
AddHint(9,116,143,13,@Hint)
}
Add(MainForm,2953706,133,154)
{
Width=517
Height=380
Position=1
link(onCreate,10917083:doDraw,[])
}
Add(PaintBox,9823918,231,315)
{
Left=120
Top=40
Width=295
Height=230
Point(MouseX)
Point(MouseY)
Point(onMouseDown)
link(onMouseDown,9226898:doEvent1,[])
}
Add(Img_Bmp,10917083,182,168)
{
link(Bitmap,524160:getVar,[])
link(SourceBitmap,4437282:Bitmap,[])
}
Add(Img_Text,2227774,399,329)
{
Point(X)
Point(Y)
link(onDraw,12591783:doWork,[])
link(Bitmap,15123394:getVar,[])
link(Text,8664924:Var2,[])
link(X,11844712:getVar,[])
link(Y,9075864:getVar,[])
}
Add(Edit,16380316,406,238)
{
Left=245
Top=10
Text="W"
}
Add(LineBreakEx,12928133,238,378)
{
Caption="x"
Type=3
link(_Data,9823918:MouseX,[])
}
Add(LineBreakEx,9571705,245,364)
{
Caption="y"
Type=3
link(_Data,9823918:MouseY,[])
}
Add(LineBreakEx,11689518,399,385)
{
Caption="w"
Type=3
link(_Data,2227774:TextWidth,[])
}
Add(LineBreakEx,2078074,406,371)
{
Caption="h"
Type=3
link(_Data,2227774:TextHeight,[])
}
Add(LineBreakEx,5131466,231,392)
{
Caption="bmp"
Type=3
link(_Data,9823918:Bitmap,[])
}
Add(LineBreakEx,524160,182,105)
{
Caption="bmp"
Type=2
}
Add(LineBreakEx,15123394,399,217)
{
Caption="bmp"
Type=2
}
Add(Hub,9226898,287,322)
{
OutCount=3
link(onEvent1,10355881:doCreate,[(369,328)(369,118)])
link(onEvent2,2227774:doDraw,[])
link(onEvent3,10334611:doWork2,[(324,342)(324,524)])
}
Add(Bitmap,10355881,392,98)
{
Point(doCreate)
Point(HWidth)
Point(HHeight)
Point(onCreate)
link(HWidth,1990460:getVar,[])
link(HHeight,5180492:getVar,[])
link(onCreate,509600:doDraw,[])
}
Add(LineBreakEx,1990460,392,56)
{
Caption="w"
Type=2
}
Add(LineBreakEx,5180492,399,70)
{
Caption="h"
Type=2
}
Add(Img_Text,509600,448,98)
{
Font=[MS Sans Serif,8,0,255,1]
link(onDraw,15341449:doFor,[])
link(Bitmap,7528244:Var2,[])
link(Text,8664924:Var3,[(461,65)(490,65)(490,278)])
}
Add(GetDataEx,8664924,406,273)
{
link(Data,16380316:Text,[])
}
Add(LineBreakEx,11844712,413,287)
{
Caption="x"
Type=2
}
Add(LineBreakEx,9075864,420,301)
{
Caption="y"
Type=2
}
Add(MT_MTArray,90293,777,280)
{
}
Add(MT_MTArrayRW,10889176,777,336)
{
Point(Count)
link(Array,4266985:Var2,[])
}
Add(MT_MTArrayEnum,681274,812,392)
{
Type=1
link(onItem,12462248:doDraw,[])
link(onEndEnum,5042157:doEvent1,[(849,405)(849,447)])
link(Array,4266985:Var3,[(818,320)])
AddHint(21,-22,35,13,Type)
}
Add(Img_Point,12462248,910,392)
{
link(Bitmap,10345570:getVar,[])
}
Add(LineBreakEx,10345570,910,364)
{
Caption="bmp"
Type=2
}
Add(GetDataEx,4266985,777,315)
{
link(Data,90293:Array,[])
}
Add(Button,5151229,763,392)
{
Left=170
Top=290
Width=175
Caption="восстановить"
link(onClick,681274:doEnum,[])
}
Add(LineBreakEx,12591783,448,329)
{
Caption="refresh"
}
Add(LineBreakEx,6895950,168,315)
{
Caption="refresh"
Type=1
link(OnEvent,9823918:doRefresh,[])
}
Add(LineBreakEx,15012661,896,448)
{
Caption="refresh"
}
Add(Hub,5042157,861,441)
{
OutCount=3
link(onEvent1,90293:doClear,[(887,447)(887,268)(765,268)(765,286)])
link(onEvent2,15012661:doWork,[])
link(onEvent3,10334611:doWork1,[(887,461)(887,493)(688,493)])
}
Add(For,15341449,497,98)
{
IncludeEnd=1
link(onEvent,7021990:doFor,[])
link(onStop,10355881:doClear,[(534,111)(534,149)(377,149)(377,111)])
link(End,15148187:getVar,[])
}
Add(For,7021990,539,98)
{
IncludeEnd=1
link(onEvent,15311560:doGetPixel,[])
link(End,5785943:getVar,[])
}
Add(LineBreakEx,15148187,504,70)
{
Caption="w"
Type=2
}
Add(LineBreakEx,5785943,546,70)
{
Caption="h"
Type=2
}
Add(Img_GetPoint,15311560,588,98)
{
link(onGetPixel,6823458:doCase,[])
link(Bitmap,7528244:Var3,[(594,58)])
link(X,5295539:Var1,[(601,58)])
}
Add(GetDataEx,7528244,448,53)
{
Angle=3
link(Data,10355881:Bitmap,[(434,58)(434,142)(398,142)])
}
Add(Case,6823458,637,98)
{
Value=Integer(0)
link(onNextCase,4417118:doOperation,[])
AddHint(2,-16,21,13,Value)
}
Add(MT_AddData,14043526,686,350)
{
Count=3
InputMT=3
link(onAdd,10889176:doAdd,[])
link(Data1,16708196:Var2,[])
link(Data2,15063558:Result,[(699,156)(734,156)])
}
Add(Math,4417118,686,98)
{
ResultType=0
link(onResult,15063558:doOperation,[])
link(Op1,5295539:Var3,[(692,58)])
link(Op2,8281491:getVar,[])
}
Add(Math,15063558,728,98)
{
ResultType=0
link(onResult,1059:doGetPixel,[])
link(Op1,7021990:Position,[(734,44)(577,44)(577,137)(545,137)])
link(Op2,6112679:getVar,[])
}
Add(LineBreakEx,8281491,693,70)
{
Caption="x"
Type=2
}
Add(LineBreakEx,6112679,735,70)
{
Caption="y"
Type=2
}
Add(GetDataEx,5295539,619,53)
{
Angle=2
link(Data,15341449:Position,[(625,144)(503,144)])
}
Add(Img_GetPoint,1059,770,98)
{
link(onGetPixel,14043526:doAdd,[(833,104)(833,182)(615,182)(615,356)])
link(Bitmap,174933:getVar,[])
link(X,16708196:Var3,[(783,86)(766,86)(766,145)])
}
Add(LineBreakEx,174933,770,63)
{
Caption="bmp"
Type=2
}
Add(GetDataEx,16708196,686,140)
{
link(Data,4417118:Result,[])
}
Add(InfoTip,13481234,98,77)
{
Info=#25:Рисуем начальную картинку|
Frame=2
Width=169
Height=130
}
Add(InfoTip,9301866,343,7)
{
Info=#75:Создаем рисунок в размер текста и получаем все пиксели занятые этим текстом|
Frame=2
Width=477
Height=165
}
Add(InfoTip,11338726,658,231)
{
Info=#81:Массив в котором хранится координаты и цвет каждого пикселя зарисованного текстом|
Frame=2
Width=309
Height=242
}
Add(StrCat,4696899,700,518)
{
Str1="Количество пикселей: "
link(onStrCat,16776875:doText,[])
link(Str2,10889176:Count,[(713,387)(790,387)])
}
Add(Label,16776875,749,518)
{
Left=175
Top=270
Width=170
Caption="Количество пикселей: 0"
}
Add(HubEx,10334611,684,518)
{
link(onEvent,4696899:doStrCat,[])
}
Вставите свою картинку в Bitmap (см. Рисуем начальную картинку).
Обратите внимание что перебор массива данных о пикселях для восстановления картинки происходит "снизу вверх" (от последнего к первому). В идеале доделать схему, чтоб в массив не дублировались координаты пикселей.
карма: 11

0