翻譯|使用教程|編輯:況魚杰|2019-08-07 11:43:30.170|閱讀 332 次
概述:本教程將會介紹圖表面板上的自定義繪圖。在TeeChart圖表內,通過TCanvas3D組件提供廣泛的定制繪圖設施,使用畫布您可以在圖表面板的任何位置添加形狀,線條和文本,并定義其顏色,筆和畫筆樣式。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
TeeChart for PHP包含100%的PHP源代碼。它支持PHP5及更高的版本。它可作為一個調色板組件整合到針對PHP的Delphi編程環境中,從而讓其他人在運行時以創建組件的方式來引用。第一個版本提供17種圖表類型(2D和3D的多種組合),11個數學函數和一些圖表工具組件以擴展功能。
本教程是TeeChart for PHP教程中圖表面板上的自定義繪圖這一節,這一節內容主要介紹TeeChart Canvas。在此功能下面又分為繪圖線、Canvas筆和畫筆、添加2D形狀、添加3D形狀、添加文字和應用實例。下面就開始介紹具體操作過程。
TeeChart Canvas
繪圖線
2D圖表
讓我們添加一個畫布線:
private function Load() { $line1->fillSampleValues(20); $line1->setVertAxis(VerticalAxis::$BOTH); $line1->setHorizAxis(HorizontalAxis::$BOTH); $tChart1->getAspect->setView3D(false); } public function chartEvent($e) { if ($e instanceof AfterDrawEventArgs) { $g = $tChart1->getGraphics3D(); $s = new TeePoint($tChart1->getAxes()->getLeft()->getPosition(), $tChart1->getAxes()->getTop()->getPosition()); $e = new TeePoint($tChart1->getAxes()->getRight()->getPosition(), $tChart1->getAxes()->getBottom()->getPosition()); $g->MoveTo($s); $g->LineTo($e,0); } }
3D圖表
在3D圖表上,由于3D正交位移,軸位置會偏離圖表區域,我們需要相應地移動線路(在3D圖表的圖表區域中從左上角到右下角對角繪制線條):
private function Load() { $line1->fillSampleValues(20); $line1->setVertAxis(VerticalAxis::$BOTH); $line1->setHorizAxis(HorizontalAxis::$BOTH); $tChart1->getAspect->setChart3DPercent(50); } public function chartEvent(EventArgs e) { if ($e instanceof AfterDrawEventArgs) { $g = $tChart1->getGraphics3D(); $s = Point3D(); $s->x = $tChart1->getAxes()->getLeft()->getPosition(); $s->y = tChart1->getAxes()->getTop()->getPosition(); $s->z = 0; C$e = Point3D(); $e->x = $tChart1->getAxes()->getRight()->getPosition(); $e->y = $tChart1->getAxes()->getBottom()->getPosition(); $e->z = $tChart1->getAspect()->width3D; $g->moveTo($s); $g->lineTo($e); } }
Canvas筆和畫筆
上面呈現的線是使用在繪畫線之前繪制的最后一個對象時的筆和筆刷,那可能不是您想要的的效果,您可以自己定義(在繪制線之前定義筆):
public function chartEvent(EventArgs $e) { if ($e instanceof AfterDrawEventArgs) { $g = $tChart1->getGraphics3D(); $p5 = new TeePoint($line1->calcXPos(5), $line1->calcYPos(5)); $p15 = new TeePoint($line1->calcXPos(15), $line1->calcYPos(15)); $g->getPen()->setDashCap(DashCap::$SQUARE); $g->getPen()->setEndCap(LineCap::$MITER); $g->getPen()->setStyle(DashStyle::$DASHDOTDOT); $g->getPen()->setTransparency(70); $g->getPen()->setWidth(3); $g->getPen()->setColor(Color::BLUE()); $g->moveTo($p5); $g->lineTo($p15, 0); } }
添加2D形狀
以與Canvas Lines類似的方式添加2D Canvas Shapes。以下示例在圖表區域的中心添加一個Rectangle:
2D圖表(2D圖表僅支持2D形狀)
public function chartEvent(EventArgs $e) { if ($e instanceof AfterDrawEventArgs) { $g = $tChart1->getGraphics3D(); $d = new Dimension(100,100); $p = new TeePoint(((int)($g->getXCenter() - ($d->getWidth()/2))),((int)($g->getYCenter() - ($d->getHeight()/2)))); $r = new Rectangle($p,$d); $g->getPen()->setColor(Color::CYAN()); $g->getBrush()->setColor(Color::BLUE()); $g->rectangle($r); } }
3D圖表
在3D圖表上,您也可以在Z平面中移動矩形。此示例即將矩形放置在左側墻壁上,但將其移向圖表后部的中間位置(朝向后墻)。
private function Load() { $point3D1->LinePen->Visible = false; $point3D1->fillSampleValues(20); $point3D1->setVertAxis(VerticalAxis::$BOTH); $point3D1->setHorizAxis(HorizontalAxis::$BOTH); $tChart1->getAspect->setChart3DPercent(50); $tChart1->getAxes()->getDepth()->setVisible(true); } public function chartEvent(EventArgs $e) { if ($e instanceof AfterDrawEventArgs) { $g = $tChart1->getGraphics3D(); $d = new Dimension(100, 100); $l = new TeePoint(((int)$tChart1->getAxes()->getLeft()->getPosition()),((int)(g->getYCenter() – ($d->getHeight() / 2)))); $r = new Rectangle($l,$d); $g->getPen()->setColor(Color::CYAN()); $g->getBrush().setColor(Color::BLUE()); $g->rectangle($r, $tChart1->getAspect()->width3D/2); }
添加3D形狀
您可以將3D形狀添加到3D圖表中,此示例即在Chart矩形的中間繪制一個Cube:
private function Load() { $point3D1->getLinePen()->setVisible(false); $point3D1->fillSampleValues(20); $tChart1->getAspect()->setChart3DPercent(50); $tChart1->getLegend()->setVisible(false); $tChart1->getAxes()->getDepth()->setVisible(true); } public function chartEvent(EventArgs $e) { if (e instanceof AfterDrawEventArgs) { IGraphics3D g = tChart1.getGraphics3D(); $d = new Dimension(50,50); $p = new TeePoint(((int)($g->getXCenter() - ($d->getWidth()/2))),((int)($g->getYCenter() – ($d->getHeight()/2)))); $r = new Rectangle($p,$d); $g->cube($r, 0, 20, true); } }
添加文本
2D文本位置
將文本添加到最后一個Rectangle:
public function chartEvent(EventArgs $e) { if (e instanceof AfterDrawEventArgs) { $text = "My Text"; $g = $tChart1->getGraphics3D(); $d = new Dimension(150, 50); $p = new TeePoint(((int)($g->getXCenter() - ($d->getWidth()/2))),((int)($g->getYCenter() – ($d->getHeight()/2)))); $r = new Rectangle($p,$d); $g->getPen()->setColor(Color::BLUE()); $g->rectangle($r); $g->textOut(((int)($g->getXCenter() - ($g->textWidth($text)/2))), ((int)($g->getYCenter() - ($g->textHeight($text)/2))), $text); } }
3D文本位置
通過使用帶有Z坐標的TextOut重載,可以將Text放置在不同的3D平面中。
private function Load() { $point3D1->fillSampleValues(20); $point3D1->getLinePen()->setVisible(false); $tChart1->getAspect()->setChart3DPercent(50); } public function chartEvent(EventArgs $e) { if ($e instanceof AfterDrawEventArgs) { $text = "My Text"; $g = $tChart1->getGraphics3D(); $g->textOut($g->getXCenter(), $g->getYCenter(), $tChart1->getAspect()->width3D / 2, $text); } }
應用實例
此示例將會獲取系列的第3和第10個值,在它們之間繪制一條直線,并告訴我們新線的第一個和最后一個點的值以及它們之間的差異:
'First add some data to the empty Chart Public function button1_Click(); begin $Series1->FillSampleValues(20); end; private function Load() { $tChart1->getAspect()->setView3D(false); $line1->fillSampleValues(20); } public void chartEvent(EventArgs e) { if ($e instanceof AfterDrawEventArgs) { $g = $tChart1->getGraphics3D(); if($tChart1->getSeriesCount() > 0){ if($tChart1->getSeries(0)->getCount() > 10) { $s = $tChart1->getSeries(0); $h = $g->textHeight("H"); $p1 = new TeePoint($s->calcXPos(3), $s->calcYPos(3)); $p2 = new TeePoint($s->calcXPos(10), $s->calcYPos(10)); $g->getPen()->setColor(Color::BLUE()); $g->getPen()->setWidth(2); $g->getPen()->setStyle(DashStyle::$DASH); $g->moveTo($p1); $g->lineTo($p2, 0); $g->textOut($p1->x, $p1->y - $h, "Point value: " . $s->getYValues(3)); $g->textOut($p2->x, $p2->y, "Point value: " . $s.getYValues(10)); $g->textOut($p2->x, $p2->y + $h, "Change is: " + $s->getYValues(3) - $s->getYValues(10)); } } }
本節教程就到這里了,下一章我們將會介紹TeeChart for PHP的插件和附加功能。如果您有什么建議或者疑惑都可以在評論區留言或者聯系
TeeChart for .NET,TeeChart for JavaScript/HTML5,TeeChart for Xamarin.Android均已加入在線訂購,現在搶購可立享特別優惠!!!
關注慧聚IT微信公眾號???,了解產品的最新動態及最新資訊。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: