うしブログ

GeoGebraの使い方、応用など

(ひとことコメント)「基本的な使い方」更新作業中(2018.7.7)

(パンくずリスト整備状況)011解答まで済(2018.5.29)

カラースポイト

 

動作見本

f:id:usiblog:20180516140403g:plain

 

タッチデバイスでは正確に動作しません。マウスデバイス専用です。

 

(追記)

タッチデバイス専用版ができました。

usidesu.hatenablog.com

 

 

 

※参考:グローバルjavaスクリプトの内容(タッチデバイス非対応版)

 

var canvas;
if(document.getElementsByClassName("EuclidianPanel")[0]==undefined){
var canvas = document.getElementsByClassName("GeoGebraFrame")[0].firstChild.firstChild;
}
else{
var canvas = document.getElementsByClassName("EuclidianPanel")[0].firstChild;
}

var containerWidth;
var containerHeight;
if(document.getElementsByClassName("applet_container")[0]==undefined){
var containerWidth = canvas.offsetWidth;
var containerHeight = canvas.offsetHeight;
}
else{
var containerWidth = document.getElementsByClassName("applet_container")[0].offsetWidth;
var containerHeight = document.getElementsByClassName("applet_container")[0].offsetHeight;
}

var frameWidth = ggbApplet.getValue("frameWidth");
var frameHeight = ggbApplet.getValue("frameHeight");

var widthRatio = containerWidth / frameWidth;
var heightRatio = containerHeight / frameHeight

function ggbOnInit() {
console.log("EuclidianPanelは"+document.getElementsByClassName("EuclidianPanel")[0]+"です。");
console.log("applet_containerは"+document.getElementsByClassName("applet_container")[0]+"です。");
console.log("変数canvasの値は、"+canvas+"です。");
console.log("変数containerWidth / frameWidthの値は、"+containerWidth+" / "+frameWidth+"です。比率"+widthRatio);
console.log("変数containerHeight / frameHeightの値は、"+containerHeight+" / "+frameHeight+"です。比率"+heightRatio);
}

function Spuit(){
var spuitx = ggbApplet.getValue("spuitx");
var spuity = ggbApplet.getValue("spuity");
var context = canvas.getContext("2d");
var spuitImage = context.getImageData(spuitx*widthRatio, spuity*heightRatio, 1, 1);
var r = spuitImage.data[0];
var g = spuitImage.data[1];
var b = spuitImage.data[2];
ggbApplet.setValue("r",r);
ggbApplet.setValue("g",g);
ggbApplet.setValue("b",b);
}