うしブログ

うしブログ

趣味で運営する、GeoGebraの専門ブログ。

(作業メモ)StartPoint要検証(2行の場合;テキスト変更時未定義問題)

(要修復)ToggleButton・RollPolygonWithoutSlipping・貯金時計・直感力トレーニング

指定した文字列を、GeoGebraのテキストオブジェクトにした場合の、幅ピクセル数を取得する

 

//指定したテキストの、現在の設定のもとでの幅ピクセル数を取得
function getTextWidth(textToMeasure){
  ggbApplet.evalCommand('USITEXT=\"'+textToMeasure+'\"');
  var actualWidth = ggbApplet.getValue('x(Corner[USITEXT, 2]) - x(Corner[USITEXT, 1])');
  var ratio = ggbApplet.getValue('(x(Corner[5]) + 2) / (x(Corner[2]) - x(Corner[1]))');
  var textWidth = actualWidth*ratio;
  ggbApplet.deleteObject('USITEXT');
  return textWidth;
}
使い方の例

GeoGebra側で、フォントサイズ16pt、テキストサイズ「小」に設定しているときに、

getTextWidth('うしうし');

を実行すると、この関数は、数値70を返す。

これは、GeoGebraで、上記設定のもとで、テキストオブジェクト

text1 = "うしうし"

を作成して、そのテキストの幅のピクセル数を測定すると、70ピクセルあることを示している。

(参考)既存のテキストオブジェクトの幅ピクセルを測定する
//既存のテキストオブジェクトの幅ピクセル数を取得
function getTextObjWidth(textObjName){
  var actualWidth = ggbApplet.getValue('x(Corner['+textObjName+', 2]) - x(Corner['+textObjName+', 1])');
  console.log(actualWidth);
  var ratio = ggbApplet.getValue('(x(Corner[5]) + 2) / (x(Corner[2]) - x(Corner[1]))');
  console.log(ratio);
  var textWidth = actualWidth*ratio;
  return textWidth;
}