Zum Inhalt springen


My Personal Site Ver.5

2008 年 12 月 05 日

Dreamweaver PHP 圓餅圖中文字串

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 3 out of 5)
Loading ... Loading ...

 [15-5-2 使用PHP Pie Chart產生圓餅圖]

       使用 PHP Pie Chart 產生圓餅圖後就可以開啟瀏覽器測試,前面知道這個資料集需要一個URL參數sIndex以指定投票主題,所以開啟網址http://localhost/vote/graph.php?sIndex=2,這時候就可以看到圓餅圖了,可以看到項目標籤是亂碼的,還需要做一些修改才可以檢視中文。

15-5-08.png
 

[15-5-3 修正中文亂碼]

 切換到【程式碼】檢視模式,這個擴充元件的程式太過龐大與複雜,所以就不針對程式一一解釋,不過既然是圖形中的中文有亂碼,所以就可以找到有與image、string相關的函式。

15-5-09.png
 在96與104列分別都可以找到一個叫ImageString()的函式,我們可以在PHP官方網站http://www.php.net/imagestring找到函式說明,它的說明是imagestring — Draw a string horizontally(繪出一列水平字串),所以找到問題的地方了,在這邊我們只對96列處理即可,因為104列是針對太小的圓餅區塊以說明文字Other呈現,這些東西在你不害怕程式碼之後就可以自己看程式碼、註解、猜測、查函式來瞭解別人的程式在做什麼。

104  ImageString($im, $FontNumber, 5, round((ImageFontHeight($FontNumber) * .5) + ($valuecounter * 1.5 * ImageFontHeight($FontNumber))), ‘Other (’.number_format((($TotalArrayValues - $ValuesSoFar) / $TotalArrayValues) * 100, 1).’%)’, $line_color);

         那要填寫中文該怎麼辦?應該用另外的函式imagettftext(),你可能會想如果是自己遇到的時候怎麼會知道要用什麼函式,其實就是利用搜尋引擎查查看、函式手冊翻翻看、網路上問問而已,先不管原本一堆亂七八糟的引數,我們得先比較一下兩個函式引數間的順序差異才有辦法修改。

bool imagestring ( resource $image , int $font , int $x , int $y , string $string , int $color )
array imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )

        回傳值不管,基本的座標 $x、$y、色彩$ color、字串$string、$text兩者都有只是順序的問題而已,大致上來說 imagestring() 多了角度$angle、字型檔案$fontfile、大小$size的設置,所以主要的就是設置一個TTF字型檔案路徑給函式,我們用電腦上最基本的中文字形新細明體,它的檔名是MINGLIU.TTC,其他部分的引數就直接調換到正確的位置照用即可,註解掉原本的的96列,新增以下程式碼:

15-5-10.png

96    //ImageString($im, $FontNumber, 5, round((ImageFontHeight($FontNumber) * .5)…
97    $fontFile = “MINGLIU.TTC”;
98    imagettftext($im,
99                            10,
100                          0,
101                          5,
102                          round((ImageFontHeight($FontNumber) * .5) + ($valuecounter * 1.5 *ImageFontHeight($FontNumber))) +10,
103                          $label_color[$valuecounter % count($label_color)],
104                          $fontFile,
105                          $key.’ (’.number_format(($value / $TotalArrayValues) * 100, 1).’%)’);

 我們定義了一個變數$fontFile(97列)存放字型檔的路徑,然後放在104列 imagettftext() 設置字型路徑的引數,存檔後重新檢視頁面中文字就出現了。

15-5-11.png

Tips
    因為新細明體字型檔案放置在系統路徑C:\WINDOWS\Fonts中,所以可以不必填寫完整的路徑,另外如果程式要在Unix-Like主機運作可能會因為該伺服器無此字型檔案導致錯誤,你可以參考B-2-4 上傳字型檔案自行於電腦中複製、上傳該字型檔案至伺服器中與程式同一目錄。

本文節錄於 『精通 Dreamweaver CS4 與 PHP MySQL 實例整合應用經典』 李志文 松岡 XW8135

« 甜菊咖啡 – 被紙割傷…………………………………….. »

作者:
Cttlee
日期:
19:55:03
分類:
Dreamweaver
被檢視了:
5,001 次
Tags:
, ,  
Trackback:
Trackback URI

無回應

(Required)
(Required, will not be published)