kCtipPath method
dynamic
kCtipPath(
- dynamic x,
- dynamic y,
- dynamic w,
- dynamic h,
Implementation
kCtipPath(x, y, w, h) {
var pathData = {};
var linePath = [];
var txtPath = [];
if (chartData.kDataL <= 0) {
//不画
return pathData;
}
var d = chartData.klineData[chartData.kDataL - 1];
double cy = Tools.priceToY(h, d['close'], kYMin, kScale);
double oy = Tools.priceToY(h, d['open'], kYMin, kScale);
//0.5微调
if(oy >= cy){
cy+=0.5;
}else{
cy-=0.5;
}
if (cy > y + h || cy < y) {
klineState.cTipPro['top'] = -1;
return pathData;
}
// var c = style[ColorType['downColor']];
// if (d['close'] < d['open']) {
// //下跌色
// c = style[ColorType['downColor']];
// } else {
// //上涨色
// c = style[ColorType['upColor']];
// }
// style['kCtipStyle']['stroke']['color'] = c;
// style['kCtipStyle']['fill']['color'] = c;
double padding = style['kCtipStyle']['property']['padding'];
var djs = Tools.getIntervalDJS(klineState.widget.propertys['interval'],
chartData.klineData[chartData.kDataL - 1]['time'], chartData.timeUTC,chartData.serveZone,chartData.timeZone);
double bgw = initYW-20+padding*2;
double bgh = padding + initYTxtH + padding / 2 + initYTxtH + padding;
double bgx = x + w - bgw-10+padding;
double bgy = y + cy - bgh / 4;
//最新价从最后一根k线开始绘制
double xoffer = (x + kStartX + (chartData.kDataL- kStartI) * kWG);//.floor();
//如果最后一根k线x坐标大于y轴,则从0开始绘制
if(xoffer>w-bgw){
xoffer = x;
}
linePath.addAll([
[
"moveTo",
[xoffer, y + cy]
],
[
"lineTo",
[xoffer + w+x-xoffer-bgw, y + cy]
]
]);
// 背景和文字放到kline里用组件渲染,通过cTipPro控制坐标
// linePath.add([
// "drawRect",
// [bgx, bgy, bgw, bgh, style['kCtipStyle']['property']['reactRound']]
// ]);
// txtPath.add([
// Tools.toFixed(d['close'], klineState.widget.propertys['priceDigits']),
// bgx+bgw-padding,
// bgy+padding,
// {'xlayout': 'right'}
// ]);
// txtPath.add([djs, bgx+bgw-padding, bgy + padding + initYTxtH + padding / 2,{'xlayout': 'right'}]);
pathData = {'linePath': linePath, 'txtPath': txtPath};
//更新数据
klineState.cTipPro['left'] = bgx;
klineState.cTipPro['top'] = bgy;
klineState.cTipPro['w'] = bgw;
klineState.cTipPro['h'] = bgh;
klineState.cTipPro['price'] = Tools.toFixed(d['close'], klineState.widget.propertys['priceDigits']);
klineState.cTipPro['djs'] = djs;
// print('y轴宽度 ${bgw}. ${initYW}');
return pathData;
}