Add(MainForm,2953706,119,119)
{
Width=675
Height=394
}
Add(InlineCode,5172055,182,175)
{
WorkPoints=#6:doLoad|
EventPoints=#8:onBitmap|
DataPoints=#9:PNGStream|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses kol,Share,Debug,BeRoPNG;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|22: fStream: PStream;|19: fBmp: PBitmap;|9: public|26: PNGStream: THI_Event;|25: onBitmap: THI_Event;|48: procedure doLoad(var dt: TData; idx: word);|5: |5: end;|0:|14:implementation|0:|4:type|22: pLongInt = ^LongInt;|0:|142://function LoadPNG(DataPointer:pointer;DataSize:longword;var ImageData:pointer;var ImageWidth,ImageHeight:longint;HeaderOnly:boolean):boolean;|0:|29:procedure THiAsmClass.doLoad;|3:var|17: w,h,i: integer;|17: ps,pb: Pointer;|26: pDWord,pImgDt: pLongInt;|5:begin|38: fStream := ToStreamEvent(PNGStream);|32: if fStream.Size = 0 then Exit;|24: fStream.Position := 0;|23: ps := fStream.Memory;|40: LoadPNG(ps,fStream.Size,pb,w,h,False);|36: fBmp := NewDIBBitmap(w,h,pf32bit);|52: //fBmp.Canvas.Brush.Color := Color2RGB(clBtnFace);|44: //fBmp.Canvas.Brush.BrushStyle := bsSolid;|44: //fBmp.Canvas.FillRect(MakeRect(0,0,w,h));|45: // ещё и растр надо перевернуть до кучи! |48: pDWord := pb; inc(pDWord,fBmp.DIBSize div 4); |25: pImgDt := fBmp.DIBBits;|37: for i := 1 to fBmp.DIBSize div 4 do|7: begin|16: dec(pDWord);|38: pLongInt(pImgDt)^ := pDWord^; |16: inc(pImgDt);|7: end; |2: |29: _hi_onEvent(onBitmap,fBmp);|12: fBmp.Free;|4:end;|0:|4:end.|
link(onBitmap,3887628:doLoad,[])
link(PNGStream,8883465:Stream,[])
}
Add(Image,3887628,245,175)
{
Left=230
Top=10
Width=406
Height=321
ViewStyle=0
}
Add(Button,6686917,119,175)
{
Left=30
Top=25
Caption="test"
link(onClick,5172055:doLoad,[])
}
Add(MemoryStream,8883465,182,119)
{
}
Add(InfoTip,7022632,168,98)
{
Info=#8:PNG file|
VAlign=1
Width=155
Height=60
}
Ответов: 5227
Рейтинг: 587
|
|||
Netspirit, хорошо, постараюсь. Короче загрузчик работает. Но чего-то с альфой нужно делать, замешивать видать её с растром нужно врукопашную. Пока лень вообще чего-то делать...
|
|||
карма: 4 |
|