若要自定工具攔,但也要保留windows樣式的按鈕時
下面給出一種實現
procedure tmybutton.defaultdraw;
var arect,r:trect;
wpos,hpos:integer;
details: tthemedelementdetails;
begin
hpos:=0;
arect:=self.clientrect;
canvas.font:=font;
canvas.brush.color:=$ccffff;
if assigned(fimagelist) then
begin
if (fimagelist.count>0) or (fimage>=0) then
begin
wpos:=(width-imagelist.width) div 2;
if fhot and ( not (csdesigning in componentstate) ) then
begin
r:=rect(wpos-8,0,wpos+fimagelist.width+8,fimagelist.height+16);
if themeservices.themesenabled then
begin
if fdown then
begin
details := themeservices.getelementdetails(themes.ttbbuttonpressed);
endelse
details := themeservices.getelementdetails(themes.ttbbuttonhot);
themeservices.drawelement(canvas.handle, details, r, nil);
endelse
begin
if fdown then
begin
canvas.fillrect(r);
drawedge(canvas.handle, r, bdr_sunkenouter, bf_rect);
endelse
drawedge(canvas.handle, r, bdr_raisedinner, bf_rect);
end;
end;
fimagelist.draw(canvas,wpos,8,fimage);
hpos:=hpos+fimagelist.height+20;
end;
canvas.brush.style:=bsclear;
wpos:=(width-canvas.textwidth(fcaption)) div 2;
canvas.textout(wpos,hpos,fcaption);
exit;
end;
wpos:=(width-canvas.textwidth(fcaption)) div 2;
hpos:=4;
canvas.textout(wpos,hpos,fcaption);
if fhot and ( not (csdesigning in componentstate) ) then
begin
if fdown then
drawedge(canvas.handle,arect,edge_etched,bf_flat or bf_rect)
else
drawedge(canvas.handle,arect,edge_raised,bf_flat or bf_rect);
end;
end;
MFC控制項的自定義繪製
mfc一部分空間提供了對控制項的customdraw,對於控制項的子項都能夠進行定製,如果這樣還是不能滿足應用的話,建議不要用控制項了,直接繼承自cwnd進行全部繪製才是最好的辦法,mfc提供的自繪功能也只能是在一定的限制條件下的,比如子項的統一高度和子項的規則性,比如clistctrl控制項就不能...
Qt自定義控制項 繪製滑動條
主要 展示 標頭檔案 ifndef myslider h define myslider h include include include include include class myslider public qwidget q object public explicit myslider...
Android自定義控制項之繪製選礦中的可選性曲線
原始資料 原始 轉化 excel畫可選性曲線 android繪製可選性曲線 座標軸命名 繪圖區域圍成乙個正方形,它有四個座標軸 座標系命名 你可以使用它繪製5條可選性曲線,請對應著上述總結的 檢視 引入依賴 將washview作為你的主專案的module 引入控制項 android id id id...