none
請問c#內有如同PHP imagettfbbox 函數的功能嗎? RRS feed

  • 問題

  •  

    Hello :

     

         請問在C#中 如果要達成如同 PHP imagettfbbox(int size, int angle, string fontfile, string text)  函數的功能, 要如何做呢?

     

        

     

    Sincerely,

                    Daniel

    2007年12月31日 上午 07:27

解答

  •  

    程式碼區塊

     

     private void MeasureText()
    {

      


        String text1 = "Measure this text";
        Font arialBold = new Font("Arial", 12.0F);
        Size textSize = TextRenderer.MeasureText(text1, arialBold);
      
    }

     

     

     

    2008年1月3日 上午 09:24

所有回覆

  •  

    程式碼區塊

     

     private void MeasureText1(PaintEventArgs e)
    {
        String text1 = "Measure this text";
        Font arialBold = new Font("Arial", 12.0F);
        Size textSize = TextRenderer.MeasureText(text1, arialBold);
        TextRenderer.DrawText(e.Graphics, text1, arialBold,
            new Rectangle(new Point(10, 10), textSize), Color.Red); 
    }

     

     

    2007年12月31日 上午 08:00
  • 如果沒有"PaintEventArgs e" 要如何進行呢?.. 因為我想寫在一個類別中, 單純進行文字尺寸測量!

     

     

    Regards,

     

                  Daniel

    2008年1月3日 上午 09:09
  •  

    程式碼區塊

     

     private void MeasureText()
    {

      


        String text1 = "Measure this text";
        Font arialBold = new Font("Arial", 12.0F);
        Size textSize = TextRenderer.MeasureText(text1, arialBold);
      
    }

     

     

     

    2008年1月3日 上午 09:24
  • Hello :

     

        

         其實我是想把下列的PHP 碼改成用asp.net c# 來做, 這個mfont函數的目的是從字型檔找出字型並轉成圖片模式在web 中呈現, 如果參數message 的字在字型檔中找不到的話就會產生一個字放入字型檔中, 然後再轉成圖片檔從web 中呈現!

    因為對PHP 不熟, 所以對應的c#作法就很傷腦筋了!

      如果要在asp.net C#中要如何做呢?有沒有哪裡可以找到參考資料呢? Thanks

    ,

    =============================================

    /******產生圖形字型的程式 ******/
    function mfont($message)
    {
      global $BASEDIR,$main_url;
      $MBASEDIR=$BASEDIR.'mfont/'; //字型產生目錄
      $FBASEDIR='/mfont/'; //字型產生目錄
      $fontsize=14;    //字型大小
      //$fontfile="Bsthebre.ttf";  //字型檔案
      //$fontfile="/usr/local/share/fonts/cobsg.ttf";  //字型檔案
      $fontfile='/usr/local/share/fonts/twu3.ttf';  //字型檔案
      if(strlen(trim($message))==0)
      return $message;                                             
      $restxt='';
      $TEXTL = split ("[\r\n]", $message);
      for ($j=0;$j<count($TEXTL);$j++)
      {
          if(strlen(trim($TEXTL[$j]))==0) continue;
         $TEXTA = split (" ", $TEXTL[$j]);
         $cta=count($TEXTA);
         //if ($cta==1) $TEXTA[0]='  '.$TEXTA[0].'  ';
         for ($i=0;$i<$cta;$i++)
         {
     if(strlen(trim($TEXTA[$i]))==0) continue;
     //$TEXTA[$i]=str_replace( 'i?', chr(1).chr(0x31).'?',$TEXTA[$i]);//i8
     //hex 0131= Dec 305
     $TEXTA[$i]=str_replace( 'i?', '&#305;?',$TEXTA[$i]);//i8
            //echo $TEXTA[$i].'   ';
            $sfile=bin2hex($TEXTA[$i]);
            $spdir=substr($sfile,0,2);
            $filename=$MBASEDIR.$spdir.'/'.$sfile.'.png';
            $ffilename=$FBASEDIR.$spdir.'/'.$sfile.'.png';
           /***** Process PNG GRAPH *****/
         if (!is_dir("{$MBASEDIR}{$spdir}")) mkdir("{$MBASEDIR}{$spdir}",0755);
         if (!file_exists($filename))
          {
            $FSIZE=imagettfbbox($fontsize,0,$fontfile,$TEXTA[$i]);
     $GX=$FSIZE[2]-$FSIZE[0]+2;
            $GY=$FSIZE[3]-$FSIZE[5];
     $YOFFSET=$GY/2;
     $GY=$GY+$YOFFSET;
            $pif1=ImageCreate($GX,$GY);
           $BGCOLOR=ImageColorAllocate($pif1,255,255,255);//背景
     $trans=imagecolortransparent($pif1,$BGCOLOR);
           //$text_col=ImageColorAllocate($pif1,0,0,0x90);//文字顏色
           $text_col=ImageColorAllocate($pif1,0,0,0);//文字顏色
           imagefill($pif1,0,0,$BGCOLOR); //設定背景顏色
           ImageTTFText($pif1,$fontsize,0,0,$GY-$YOFFSET,$text_col,$fontfile,$TEXTA[$i]);
           ImagePNG($pif1,$filename);
           ImageDestroy($pif1);
          }
     list($fwidth, $fheight, $fftype, $fattr) = getimagesize($filename);
          $restxt=$restxt."<img align=\"middle\" src=\"{$main_url}{$ffilename}\" alt=\"orig\" border=\"0\" width=\"{$fwidth}\" height=\"{$fheight}\"/>";
       } //for i
        if ($j<(count($TEXTL)-1))
           $restxt=$restxt.'<br />';
      } //for j
       return $restxt;
    }

     

    2008年1月5日 下午 04:34