今天用php寫了點東西,其中乙個就是畫時鐘,記下來分享下。
php的gd庫里用來繪圖還是很不錯的。繪製時針分針使用imagefilledpolygon(),繪製表盤刻度線用imageline(),關鍵在於確定那些點的位置。
沒仔細查資料,對php也不太了解,不知道有沒有矩陣變換之類的東西,還是自己寫吧。
先定義乙個平面點集的旋轉與平移變換函式,傳入引數為大小是偶數的array,奇數字為x,偶數字為y,返回變換後的array。這個在繪製時針分針和表盤刻度的時候很有用。
function transform_points_2d($points, $offset, $angle)
//print_r($result);
return $result;
}
假設時針分針都是三角形,考慮簡單的情況,都指向上方。然後用上面的函式進行變換就可以得到任意位置的頂點集了。
$hour_points0 = array(
7, 8,
-7, 8,
0, -40
);$minute_points0 = array(
7, 8,
-7, 8,
0, -70
);
就取10點10分吧,廣告裡都用這個。時針分針分別逆時針和順時針轉60度,並把針的中心平移到中心。
$a_h = deg2rad(60); //angle_hour
$a_m = deg2rad(-60); //angle_minute
$center_x = $windowwidth / 2;
$center_y = $windowheight / 2;
$hour_points = transform_points_2d($hour_points0, array($center_x, $center_y), $a_h);
$minute_points = transform_points_2d($minute_points0, array($center_x, $center_y), $a_m);
然後就是建立了,這個簡單,略。
接下來開始繪製針,用gd庫里的填充多邊形函式
imagefilledpolygon($image, $hour_points, 3, $color_hour);
imagefilledpolygon($image, $minute_points, 3, $color_minute);
繪製整點的刻度線。道理一樣,取乙個最簡單的刻度線,然後進行變換
$minute_line0 = array(
88, 0,
96, 0
);$minute_line = $minute_line0;
for ($i=0; $i<12; $i++)
繪製其他48條刻度線,方法同上
$minute_line0 = array(
92, 0,
96, 0
);for ($i=0; $i<60; $i++)
最後上效果圖 canvs繪製時鐘
1 思路分析 canvas參考資料 畫背景。首先將畫布的 0,0 點移到畫布中心點,畫出圓形,然後求出每乙個數字對應的弧度數,並根據數學知識求出每個數字對應的 x,y 座標,最後在圓中填充出數字和刻度。畫時針。畫分針。畫秒針。注意時針與分針的聯絡。讓時鐘動起來。解決時鐘縮放問題。2 getconte...
Canvas繪製時鐘
首先,找一張時鐘的,就是下面這張了。來自bigger than bigger的dribbble 侵刪 然後就開始用canvas實現這個逼格滿滿的時鐘吧。在html 中插入canvas標籤 canvas id canvas width 400 height 400 canvas 由於瀏覽器對html5...
利用Python Opencv繪製時鐘
import cv2 import math import datetime import numpy as np 繪製鐘盤 margin 5 radius 220 center center x,center y 225,225 img np.zeros 450,450,3 np.uint8 im...