Вверх ↑
Ответов: 8996
Рейтинг: 825
#1: 2026-05-29 10:19:27 ЛС | профиль | цитата
Gitarist, позавчера бессоница мучала, пришлось ночью сесть за компьютер, а что бы сделать? Вспомнил про QR и набросал IC
IC


Add(MainForm,2953706,98,35)
{
Width=645
Height=454
Caption="Кратное увеличение картинок"
}
Add(InlineCode,2865515,189,147)
{
@Hint=#14:Картинка 8 бит|
WorkPoints=#7:doScale|
EventPoints=#8:onResult|7:onError|
DataPoints=#35:Abmp=Картинка для изменения размера|26:Mode=Масштаб (целое число)|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|30:uses kol,Share,Debug,Img_Draw;|0:|4:type|28: THiAsmClass = class(TDebug)|1: |10: private|0:|9: public|21: Abmp: THI_Event;|21: Mode: THI_Event;|25: onResult: THI_Event;|24: onError: THI_Event;|5: |52: procedure doScale(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|30:procedure THiAsmClass.doScale;|3:var|23: A_bmp, B_bmp:PBitmap;|24: AA, BB,CC: pByteArray;|44: i, j, k, m, n, Sc, AW, AH, BW, BH:integer;|2: |5:begin|35: Sc:=Readinteger(_Data, Mode, 2);;|40: A_bmp:= ReadBitmap(_Data, Abmp, nil);;|27: if A_bmp = nil then exit;|29: A_bmp.PixelFormat:=pf24Bit;|18: AW:=A_bmp.Width;|19: AH:=A_bmp.Height;|33: B_bmp:=NewBitmap(AW*Sc, AH*Sc);|29: B_bmp.PixelFormat:=pf24Bit;|2: |22: for i:=0 to AH-1 do|9: begin|27: AA:=A_bmp.ScanLine[i];|30: BB:=B_bmp.ScanLine[i*Sc];|10: n:=0;|25: for j:=0 to AW-1 do|12: begin|27: for k:=0 to Sc-1 do|14: begin|20: for m:=0 to 2 do|10: begin|23: BB[n]:=AA[j*3+m];|13: n:=n+1;|9: end;|9: end; |11: end;|24: for j:=1 to Sc-1 do|12: begin |32: CC:=B_bmp.ScanLine[i*Sc];|34: BB:=B_bmp.ScanLine[i*Sc+j];|46: for k:=0 to AW*3*Sc-1 do BB[k]:=CC[k];|8: end; |8: end;|31: _hi_onEvent(onResult, B_bmp);|4:end;|4:end.|
link(onResult,14772453:doEvent1,[])
link(Abmp,12192896:Var2,[])
link(Mode,12531093:Var1,[(202,138)(104,138)])
}
Add(Image,9499685,238,84)
{
Left=5
Top=65
Width=180
Height=180
Point(ImageWidth)
Point(ImageHeight)
link(Bitmap,12192896:Var3,[(244,68)(230,68)(230,131)])
}
Add(ChildPanel,12531093,98,91)
{
link(onEvent1,7157720:doEvent1,[])
link(onEvent2,2865515:doScale,[(137,104)(137,153)])
link(Data1,8975917:Var1,[(104,82)(77,82)(77,187)])
}
BEGIN_SDK
Add(EditMulti,2975408,28,21)
{
EventCount=2
WorkCount=2
DataCount=1
VarCount=1
Width=426
Height=165
VOffset=20
HOffset=20
link(Var1,2280190:Var1,[(54,166)])
}
Add(Panel,3285920,49,70)
{
Width=629
Height=61
Align=2
}
Add(Button,1213873,280,49)
{
Left=5
Top=15
Caption="Open"
link(onClick,10512743:doExecute,[])
}
Add(Button,3159525,279,91)
{
Left=315
Top=25
Caption="Save"
Point(doEnabled)
link(onClick,16143975:doExecute,[])
}
Add(Button,10933533,279,140)
{
Left=185
Top=20
Caption=">>>"
Point(doEnabled)
link(onClick,11126918:doData,[])
}
Add(RadioButton,14002231,119,70)
{
Left=105
Selected=0
Caption="x2"
link(onSelect,4127326:doWork3,[(158,76)])
}
Add(RadioButton,9595598,168,70)
{
Left=105
Top=20
Caption="x3"
link(onSelect,6028928:doWork3,[(207,76)])
}
Add(RadioButton,1423140,217,70)
{
Left=105
Top=40
Caption="x5"
link(onSelect,6028928:doWork2,[(255,76)(255,53)])
}
Add(MathParse,9912772,119,126)
{
DataCount=3
MathStr="%1*2 + %2*3 + %3*5"
Default=2
link(X1,14002231:Selected,[])
link(X2,9595598:Selected,[(132,110)(174,110)])
link(X3,1423140:Selected,[(139,117)(223,117)])
}
Add(PictureStream,9937444,385,49)
{
Quality=100
link(onLoad,2975408:onEvent1,[(424,55)(424,47)])
link(Bitmap,2975408:Data1,[(398,33)(54,33)])
}
Add(ODialog,10512743,336,49)
{
Filter="All|*.*bmp"
link(onExecute,9937444:doLoad,[])
}
Add(SDialog,16143975,336,91)
{
Filter="All|*.bmp"
link(onExecute,9937444:doSave,[(382,97)(382,62)])
}
Add(HubEx,6028928,203,47)
{
Angle=2
link(onEvent,4127326:doWork2,[])
}
Add(HubEx,4127326,154,47)
{
Angle=2
link(onEvent,9912772:doCalc,[(109,53)(109,132)])
}
Add(DoData,11126918,336,140)
{
link(onEventData,2975408:onEvent2,[(431,146)(431,54)])
link(Data,2280190:Var3,[(342,131)(272,131)(272,166)])
}
Add(GetDataEx,2280190,119,161)
{
link(Data,9912772:Result,[])
}
END_SDK
Add(Bitmap,1521491,189,91)
{
}
Add(Bitmap,13998933,273,147)
{
Point(Width)
Point(Height)
}
Add(Hub,14772453,238,147)
{
link(onEvent1,13998933:doLoad,[])
link(onEvent2,5428383:doWork1,[(263,160)(263,209)])
}
Add(GetDataEx,8975917,273,182)
{
link(Data,13998933:Bitmap,[])
}
Add(Hub,7157720,147,91)
{
link(onEvent1,1521491:doLoad,[])
link(onEvent2,9499685:doLoad,[(172,104)(172,90)])
}
Add(GetDataEx,12192896,189,126)
{
link(Data,1521491:Bitmap,[])
}
Add(ChildScrollBox,5428383,273,203)
{
link(Data1,8975917:Var2,[])
link(Data2,13998933:Width,[])
link(Data3,13998933:Height,[])
}
BEGIN_SDK
Add(EditMulti,15652076,14,21)
{
WorkCount=1
DataCount=3
Width=209
Height=137
VOffset=42
HOffset=84
link(doWork1,11002620:doEvent1,[])
}
Add(ScrollBox,5580575,35,105)
{
Left=195
Top=60
Width=430
Height=350
}
Add(Image,15312054,168,49)
{
Width=430
Height=350
Point(doWidth)
Point(doHeight)
link(Bitmap,15652076:Data1,[(174,40)(104,40)])
}
Add(DoData,10757131,105,63)
{
link(onEventData,15312054:doWidth,[])
link(Data,15652076:Data2,[])
}
Add(DoData,8411944,112,70)
{
link(onEventData,15312054:doHeight,[])
link(Data,15652076:Data3,[])
}
Add(Hub,11002620,70,63)
{
OutCount=3
link(onEvent1,10757131:doData,[])
link(onEvent2,8411944:doData,[])
link(onEvent3,15312054:doLoad,[(95,83)(95,55)])
}
END_SDK

карма: 19

0