首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PHPPowerPoint中增加矩形边框的粗细?

如何在PHPPowerPoint中增加矩形边框的粗细?
EN

Stack Overflow用户
提问于 2017-10-16 09:26:23
回答 1查看 223关注 0票数 0

我想为我正在开发的PM工具创建一个图表(风险矩阵,PowerPoint中的风险瀑布)。

在瀑布中,我在Y轴上创建了旋转标签。但是这些标签不响应代码中的厚度变化。长方形看起来很奇怪,没有统一的厚度,而是有奇怪的边缘。

如何将厚度与第一张图(左侧)的厚度匹配?

示例PowerPoint导出的图形

风险瀑布标签测量

代码语言:javascript
复制
/*                           
                           -+-    -+-             -+- -+-    
                            |      |               |   |
                            |  offsetRiskY (High)  |   |
                            |      |               |   |
                         ---+---  -+-              |   offsetRiskY(Med) = offsetRiskY(High) + heightRiskHigh
                            |      |               |   |           
      centerRiskY --------- + heightRisk (High)    |   |                                                                   
                            |      |               |   |                                                                  
                         ---+---  -+-              |  -+-                                                                
                            |      |               |                                                                       
      centerRiskY --------- + heightRisk (Med)     offsetRiskYLow = offsetRiskYHigh + heightRiskHigh + heightRiskMed   +   waterfallHeight = heightHigh + heightMed + heightLow                 
                            |      |               |                                                                      
                         ---+---  -+-             -+-                                                                    
                            |      |                                                                                      
      centerRiskY --------- + heightRisk (Low)                                                                            
                            |      |                                                                                       
                         ---+---  -+-                                                                                    
                          * 
                         / \
                          |
                          |
                          |
                          |
    halfLabelWidth  ------+

                            |------heightRisk/2-----+------heightRisk/2------|
                            +------------------------------------------------+
         halfLabelWidth     |                                                |
                            +                   Risk Label                   + 
         halfLabelWidth     |                                                |
                            +------------------------------------------------+

*/

代码

代码语言:javascript
复制
public function generateRiskWaterfallLabelYAxis($heightRisk, $offsetRiskY, $labelText)
{
    $halfRiskHeight = $heightRisk/2;
    $centerRiskY = $offsetRiskY + $halfRiskHeight;
    $labelWidth = self::$waterfallHeight - $centerRiskY;
    $halfLabelWidth = self::$waterfallLabelWidth/2;
    $currentSlide = $this->riskPPT->getActiveSlide();
    $shape = $currentSlide->createRichTextShape()->setHeight($halfLabelWidth)->setWidth($heightRisk);    //swap width, height for rotation (90 degrees)
    $shape->setOffsetX(-$halfRiskHeight);
    $shape->setOffsetY($centerRiskY + self::$offsetWaterfallY);
    $shape->setRotation(-90);
    $offsetX = $shape->getOffsetX() + self::$offsetWaterfallX - $halfLabelWidth/2;
    $offsetY = $shape->getOffsetY() - $halfLabelWidth/2;
    $shape->setOffsetX($offsetX);
    $shape->setOffsetY($offsetY);
    $textRun = $shape->createTextRun($labelText);    $shape->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);    $shape->getActiveParagraph()->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);    
    $shape->getBorder()->setColor(new Color('FF'. self::$borderColor))->setLineStyle(Border::LINE_SINGLE)->setLineWidth(1);
}

public function generateRiskWaterfallLabelsYAxis()
{                    
    $maxRisk = 1.0;
    //High
    $heightHigh = self::$waterfallHeight*($maxRisk-$this->minHigh);
    $offsetRiskHigh = 0;
    $riskTextHigh = 'High';
    $this->generateRiskWaterfallLabelYAxis($heightHigh, $offsetRiskHigh, $riskTextHigh);

    //Med
    $heightMed = self::$waterfallHeight*($this->minHigh-$this->maxLow);
    $offsetRiskMed = $heightHigh;
    $riskTextMed = 'Med';
    $this->generateRiskWaterfallLabelYAxis($heightMed, $offsetRiskMed, $riskTextMed);

    //Low 
    $heightLow = self::$waterfallHeight*$this->maxLow;
    $offsetRiskLow = $heightHigh + $heightMed;
    $riskTextLow = 'Low';
    $this->generateRiskWaterfallLabelYAxis($heightLow, $offsetRiskLow, $riskTextLow);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-16 11:55:33

通过在文本框上方绘制另一个矩形(没有边框)解决了该问题。

代码语言:javascript
复制
        $shape = $currentSlide->createRichTextShape()->setHeight($heightRisk)->setWidth($halfLabelWidth); 
        $offsetX = self::$offsetWaterfallX - $halfLabelWidth;
        $offsetY = self::$offsetWaterfallY + $offsetRiskY;
        $shape->setOffsetX($offsetX);
        $shape->setOffsetY($offsetY);
        $shape->getBorder()->setColor(new Color('FF000000'))->setLineStyle(Border::LINE_SINGLE);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46761763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档