delphi - painting background from TSeStyleFont -
i'm trying paint vcl style background tsestylefont in bitmap style designer .. there way draw background ?
i have make try : - draw object first in bitmap using drawelement . - copy current bitmap nother clean bitmap using 'bitmap.canvas.copyrect' problem : methode not work correctly objects has glyph such checkbox ...
var bmp, bmp2: tbitmap; details: tthemedelementdetails; r, rn: trect; begin bmp := tbitmap.create; bmp2 := tbitmap.create; r := rect(0, 0, 120, 20); rn := rect(0 + 4, 0 + 4, 120 - 4, 20 - 4); bmp.setsize(120, 20); bmp2.setsize(120, 20); details := styleservices.getelementdetails(tthemedbutton.tbpushbuttonhot); styleservices.drawelement(bmp.canvas.handle, details, r); bmp2.canvas.copyrect(r, bmp.canvas, rn); canvas.draw(10, 10, bmp2); bmp.free; bmp2.free; end;
if want draw background of buttons must use styleservices.drawelement
method passing proper tthemedbutton
part.
try sample
uses vcl.styles, vcl.themes; {$r *.dfm} procedure tform2.button1click(sender: tobject); var details : tthemedelementdetails; begin details := styleservices.getelementdetails(tbpushbuttonpressed); styleservices.drawelement(paintbox1.canvas.handle, details, paintbox1.clientrect); details := styleservices.getelementdetails(tbpushbuttonnormal); styleservices.drawelement(paintbox2.canvas.handle, details, paintbox2.clientrect); end;
if want draw background without corners, can adjust bounds of trect
so
details : tthemedelementdetails; lrect : trect; begin lrect:=paintbox1.clientrect; lrect.inflate(3,3); details := styleservices.getelementdetails(tbpushbuttonpressed); styleservices.drawelement(paintbox1.canvas.handle, details, lrect); lrect:=paintbox2.clientrect; lrect.inflate(3,3); details := styleservices.getelementdetails(tbpushbuttonnormal); styleservices.drawelement(paintbox2.canvas.handle, details, lrect); end;
Comments
Post a Comment