2016-02-21 82 views
1

我試圖用pixman_image_create_linear_gradient()函數用libpixman繪製線性漸變。它可以很好地繪製從左到右和從上到下運行的漸變,但我沒有看到如何以特定角度(0-360度)繪製漸變,就像它們在CSS中可能的那樣。例如,旋轉45度的線性漸變。以一定的角度畫線性漸變

我認爲必須使用參數p1p2這是因爲它們定義了漸變方向,但根本沒有文檔,我也無法弄清楚如何使用這兩個參數來旋轉漸變。

對於垂直梯度,我只是將它們設置爲

p1.x = 0; p1.y = 0; 
p2.x = 0; p2.y = height - 1; 

而對於水平梯度我用

p1.x = 0; p1.y = 0; 
p2.x = width - 1; p2.y = 0; 

但我應該使用哪個值任意旋轉?簡單地將2D旋轉矩陣應用於點看起來並不正確,例如,繪製的梯度是640×480和旋轉45度這樣的時候我結束與點

p1.x = 81; p1.y = 560; 
p2.x = 559; p2.y = 559; 

其中提請梯度在正確的方向,但也有大約80像素的空白空間在梯度的任一側,以便我一定做錯了什麼。

有人能告訴我如何得到這個權利?

謝謝!

回答

1

猜想 Pixman以開羅的相同方式實現線性漸變,因爲開羅的圖像後端使用Pixman,所以請查看開羅的一些文檔。例如,在「使用開羅繪圖」部分中的http://www.cairographics.org/tutorial/小節「準備和選擇源」中有對線性漸變的解釋。

爲了您的45度旋轉,我會嘗試以下(在左上角的一個點,另一個在底部右側一個):

p1.x = 0; p1.y = 0; 
p2.x = width - 1; p2.y = height - 1; 

PS:不,我不知道如何在CSS中指定具有角度的漸變。

+0

對,它真的好像是一樣的。我現在正在工作。非常感謝! – Andreas