關於TasphyrePalette的基礎使用

2021-04-13 11:16:29 字數 2953 閱讀 4815

學 delphix ,但不知

dxdraw.colortable := imagelist.items.colortable;

dxdraw.defcolortable := imagelist.items.colortable;

dxdraw.updatepalette;

這幾句是什麼意思

在http://www.huosoft.com/bbs/showpost.asp?threadid=134 找到了介紹的文章

關於tasphyrepalette的基礎使用

關於tasphyrepalette的基礎使用

//本文意在描述tasphyrepalette的基本使用方面的知識,文中內容針對入門級使用者了解tasphyrepalette而書寫的。

palette是什麼?pallette是調色盤的意思。

我們首先要開始乙個簡單的關於調色版使用的例子,讓你簡單的知道調色盤該如何使用。

首先我們在單元的type裡定義乙個palette,看起來象下面的一樣。palette可以是你隨便起的。

palette: tasphyrepalette;

這樣我們就得到了乙個palette,但是我們現在還不能使用。我們還需要像下面這樣:

palette:= tasphyrepalette.create();

這樣我們才算真真正正的得了乙個palette(調色盤),現在這個調色盤是空的或者說是乙個我們新買到的調色盤,我們需要給這個新調色盤裡新增基礎顏色。看起來像下面的步驟。

palette.add($ffff0000, 0.0);

palette.add($ffffff00, 1.0);

palette的add是新增的意思。在palette裡面我們新增了兩種顏色。$ffff0000是紅色,$ffffff00是黃色。也許你到現在還不明白,我們做這些的意義。不過不要緊,請跟著我往下看,秘密就在最後面的乙個引數上,現在我們不要去理會它。

我們下一步要做的是,即然我們把顏色加到調色盤裡,那麼我們怎麼樣來使用調色盤裡的顏色。

我們注意看下面的部分:

palette.color[0.0] // 1

palette.color[1.0]  // 2

這是我們通過palette來獲得顏色的方法。通過1,我們可以得到紅色。通過2我們可以獲得黃色。也許你現在會問,即然這樣,我們直接使用顏色**$ffff0000或$ffffff00不就可以了麼?幹嘛,還要用使palette呢?

現在我們來思考乙個問題,如果我們需要乙個黃色和紅色中間的顏色。我們該怎麼做?

palette.color[0.5]

注意上面這句後面的引數。他是0.0和1.0之間的中間值。也許你可能已經想到,沒錯,我們通過中間值,就能得到紅色和黃色中間的顏色。

palette.add($ffff0000, 0.0);

palette.add($ffffff00, 1.0);

上面這兩句是我們曾經為調色盤新增的顏色,那麼後面的引數,0.0 和 1.0,你已經可以明白是做什麼用的,不需要我再細細的說明。

那麼在正常使用的時候呢!是下面這個樣子。

sender.canvas.lineex(10, 200,100, 220,palette.color[0.5])

上面是乙個畫線的語句,裡面的數值分別是x1,y1,x2,y2,這是畫一條線用的兩點座標,如果你不懂的話建議你回頭去看看初中數學書,那裡會給你提供你關於座標的知識幫助。最後的palette.color[0.5]就是這條線的顏色color,中間值0.5,跟據我們前面設計的palette,這條線的顏色是紅色和黃色中間的顏色。

最後,準備簡單的分析一下palette.

palette的根是tasphyrepalette類,我們重點就要看看tasphyrepalette.有興趣的入門者跟我往下看:

tasphyrepalette = class

private

data : array of tasphyrecolornode;

這是tasphyrepalette類最頭上的兩句,我們不用看得那麼深,初學者看得太深,最大的壞處就是會讓自己會頭痛,就像我現在這樣。

tasphyrepalette的核心就是陣列化的tasphyrecolornode,我們現在看到重點了。

我們現在需要集中精力來看tasphyrecolornode是個什麼東西,他怎麼就能把顏色記住。

tasphyrecolornode = record

color   : ttruecolor;

nodetype: tnodetype;

theta   : real;

上面的四行,就是tasphyre的核心了,你可能會感嘆,就這麼簡單啊!沒算一直就這麼簡單,是你把它想的太難了。

好了,我們來簡單理解一下tasphyrecolornode

color   : ttruecolor 就是我們palette.add($ffff0000, 0.0);句子存放顏色的地方。

theta   : real;  就是存放0.0 和 0.1的地方。

你可能會大叫那nodetype是什麼啊!我們至始到終也沒設定它。看看下面這句add。

result:= add(diffuse, ntplain, theta);

發現沒有,nodetype已經被黓認為ntplain了。為什麼?因為需要你自己去發現,不要總等別人喂你,不能光讓我乙個人頭痛啊,你說是不是。

這裡我們還有乙個東西,是需要必須了解的。就是ttruecolor是個什麼玩意!

來跟我看看,簡單到你可能會吃驚。

ttruecolor = record

r, g, b, a: single;

r,g,b,a,分別帶表紅色,綠色,藍色,對就是三原色。最後乙個a是用來記錄alpha值的。什麼是alpha呢!讓我想想,還是你自己去查資料吧!光alpha詳細的來講,都夠寫一本書的了。呵呵!

可參照http://www.huosoft.com/bbs/showpost.asp?threadid=135例子來閱讀本文。  

關於程式關於世界

首先,在學了1年多的軟體設計的基礎上,問下自己 程式是什麼?業務需求是什麼?程式有什麼用?什麼是演算法?什麼是資料庫?或許每個人的理解不同,會給出不同的答案。那麼自己的理解 程式是乙個讓計算機工作的流程,在程式寫好之後,計算機就會按照,程式設計師定義好流程在執行。其實很多時候,乙個程式的好壞,在於乙...

關於血液關於軟體

1 自然沉降法 將血袋垂直吊掛於4 2 冰箱內,使紅細胞自然下沉1 3d,或將血袋呈70 80 角立於冰箱,需用時,用一次性分漿器分出血漿,制得濃縮紅細胞。2 洗滌法 一般用生理鹽水反覆洗滌3 6次。經洗滌的紅細胞,除白細胞和血小板減少外,血漿蛋白也極少,紅細胞中殘存的血漿蛋白含量約為原總蛋白的1 ...

關於冷漠,關於愛情

我不知道為什麼今天又莫名其妙開始思考愛情這件事,隨之就解決了我一直無法面對冷漠這件事 被冷漠是我始終無法消化的一件事,每當遇見冷漠時,我總會覺得就像一團火把自己燒得面目全非,但對方卻毫無傷害。但我突然懂了,遇到冷漠時,體面的離開即可 在乎你的人一定會在你離開後,找到你跟你解釋為什麼 連解釋都來不及,...