シートの倍率を変更するとシェイプの位置がずれる
対象製品
SpreadJS(Ver.10.x.x -)
状況
修正済み
詳細
シェイプをシート貼り付けた後でSpreadの表示倍率を変更した場合、シェイプの位置がずれてしまいます。
なお、本現象は表示倍率を1.5や2.0などの0.5ずつの倍率に変更した場合は発生しません。
【再現手順】
1.以下のサンプルコードを作成する
★サンプルコード(JavaScript)
2.ブラウザでサンプルコードを確認する
サンプルコードでは、シェイプをH10セルに配置していますが、シェイプの位置を確認するとシェイプが左上にずれていることが分かります。
なお、本現象は表示倍率を1.5や2.0などの0.5ずつの倍率に変更した場合は発生しません。
【再現手順】
1.以下のサンプルコードを作成する
★サンプルコード(JavaScript)
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
initSpread(spread);
function initSpread(spread) {
let sheet = spread.getActiveSheet();
//シェイプを追加します
addCustomShape(sheet);
//表示倍率を変更します
sheet.zoom(1.28);
}
function addCustomShape(sheet) {
let model = {
options: {
fill: {
type: 1,
color: "rgba(0,0,255,1)",
transparency: 0.5
},
stroke: {
type: 1,
color: "rgba(0,255,0,1)"
},
textFormatOptions: {
text: "テスト",
font: "MS ゴシック 12px",
textDirection: "rotate90",
horizontalAlignment: 1,
verticalAlignment: 1,
wrapTextInShape: true,
allowTextToOverflowShape: true,
fill: {
color: "rgba(255,0,0,1)"
}
}
},
path: [
[
["L", 0, 0],
["L", "=width", 0],
["L", "=width", "=height"],
["L", 0, "=height"],
["Z"]
]
]
};
let shape = sheet.shapes.add(null, model);
//シェイプをH10セルに配置します
shape.startRow(9);
shape.startColumn(7);
shape.endRow(10);
shape.endColumn(8);
shape.startRowOffset(0);
shape.startColumnOffset(0);
shape.endRowOffset(0);
shape.endColumnOffset(0);
shape.rotate("=0");
}
initSpread(spread);
function initSpread(spread) {
let sheet = spread.getActiveSheet();
//シェイプを追加します
addCustomShape(sheet);
//表示倍率を変更します
sheet.zoom(1.28);
}
function addCustomShape(sheet) {
let model = {
options: {
fill: {
type: 1,
color: "rgba(0,0,255,1)",
transparency: 0.5
},
stroke: {
type: 1,
color: "rgba(0,255,0,1)"
},
textFormatOptions: {
text: "テスト",
font: "MS ゴシック 12px",
textDirection: "rotate90",
horizontalAlignment: 1,
verticalAlignment: 1,
wrapTextInShape: true,
allowTextToOverflowShape: true,
fill: {
color: "rgba(255,0,0,1)"
}
}
},
path: [
[
["L", 0, 0],
["L", "=width", 0],
["L", "=width", "=height"],
["L", 0, "=height"],
["Z"]
]
]
};
let shape = sheet.shapes.add(null, model);
//シェイプをH10セルに配置します
shape.startRow(9);
shape.startColumn(7);
shape.endRow(10);
shape.endColumn(8);
shape.startRowOffset(0);
shape.startColumnOffset(0);
shape.endRowOffset(0);
shape.endColumnOffset(0);
shape.rotate("=0");
}
2.ブラウザでサンプルコードを確認する
サンプルコードでは、シェイプをH10セルに配置していますが、シェイプの位置を確認するとシェイプが左上にずれていることが分かります。
回避方法
SpreadJS (Ver.13.0.4)で修正済み