乙個用漸變色填充矩形的函式

2021-09-06 04:08:54 字數 1545 閱讀 2855

以下**主要**於codeproject上乙個用漸變色填充dc的static控制項中的一部分**。

//

這是要使用的函式原型:

typedef uint (callback*lpgndllfunc)(hdc,const ptrivertex,dword,const pvoid,dword,dword);

hinstancehinst_msimg32 =null;

static

lpgndllfuncpdllfunc_gradientfill;

//初始化:

hinst_msimg32 = loadlibrary( "

msimg32.dll");

if( hinst_msimg32 )

//函式定義:

/** 在pdcmem上以fillmode模式填充矩形區域prect

* pdcmem為要繪製的dc

* prect為矩形區域

* fillmode包括橫向填充與縱向填充兩個

* crhicolor為漸變色的一端,另一端預設為白色

* breverse是否逆向填充,即由白色漸變到cfhicolor還是由crhicolor漸變到白色

*/void drawgradientfill(cdc* pdcmem, crect*prect, backfillmode fillmode, colorref crhicolor, bool breverse)

rcvertex[

0].x=prect->left;

rcvertex[

0].y=prect->top;

rcvertex[

0].red=getrvalue(crlocolor)<<8

; rcvertex[

0].green=getgvalue(crlocolor)<<8

; rcvertex[

0].blue=getbvalue(crlocolor);

rcvertex[

1].y=prect->bottom;

rcvertex[

1].red=getrvalue(crhicolor)<<8

; rcvertex[

1].green=getgvalue(crhicolor)<<8

; rcvertex[

1].blue=getbvalue(crhicolor)<<8

; rcvertex[

1].alpha=0

; gradient_rect grect;

grect.upperleft=0

; grect.lowerright=1

; (pdllfunc_gradientfill)((hdc) *pdcmem ,(const ptrivertex)rcvertex,(dword)2,(const pvoid)&grect,(dword)1,(dword)

(fillmode == hgradient ?gradient_fill_rect_h : gradient_fill_rect_v) );

}

qml構建乙個漸變色的視窗

有時候在qt中需要用到漸變色這樣的特效,那麼如何實現乙個簡單的漸變色的視窗呢?在qml中漸變色的型別是gradient,漸變色可以通過兩個或者多個顏色值來指定,qml會自動在你指定的顏色之間進行插值。gradient使用gradidentstop來指定乙個顏色值和他的範圍的 0 1.0 之間 imp...

在as3 0中建立乙個填充漸變色的文字框

這週在學習過程中接觸到了文字框漸變色的填充問題,在網上查詢也發現好多都不太全,也不適合初學者快速進入。在此,我把這方面的 引數加以介紹。import flash.display.gradienttype import flash.display.sprite import flash.events....

每日一記 讓我們玩起流行的漸變色

正所謂風水輪流轉,時尚永遠是迴圈的,當年的擬物到扁平,平了的不只是空間還有色彩,大家發現太平了玩不開,又設計出扁平陰影,現在 md 又把物料和空間帶回設計界,自然色彩上也開始復甦了,豐富的顏色又成了新的潮流。再看看硬體的發展,當年由於渲染陰影 漸變是十分耗效能的設計,設計開發都盡可能避免使用,而如今...