php繪製時鐘

2021-06-16 08:37:25 字數 1616 閱讀 6710

今天用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...