【发布时间】:2018-01-17 19:23:49
【问题描述】:
到目前为止,我所做的是正在显示 HighChart 活动量表。一旦鼠标悬停,它就会连续显示文本。但我希望它在创建图表后立即显示文本(根本不需要鼠标悬停它)。因为我要保存图表的图像,然后将其存储在 localDirectory 中。此外,有什么方法可以创建图表而不在浏览器上呈现?我在想它是在服务器端制作的(因为 100 个图表对应 100 个标签是没有意义的)。
索引.cshtml
<div id="container" style="width:40%; height:70%">
</div>
Highcharts.wrap(Highcharts.Tooltip.prototype, 'hide', function (p, delay) {
if (this.options.alwaysVisible) {
return this.refresh(this.chart.series[0].data[0])
}
p.call(this, delay)
})
^^ 一旦我将鼠标悬停,这将起作用,但我不想悬停它。而是在创建图表后立即显示内部文本(对于最外面的系列)。就像这个小提琴:http://jsfiddle.net/mushigh/ubb2wz72/ 但遗憾的是,当我尝试采用它时,我在浏览器中的工作方式不同。我什至试过这个:
chart.tooltip.refresh(chart.series[0].points[0]);
但是控制台中出现了这个未定义的“图表”错误。
对于第二个查询: 下面是我在控制器端发送的图像数据,稍后将其保存在 localDir 中。无论如何我可以创建它而不在浏览器上呈现?
setTimeout(function () {
html2canvas(document.querySelector("#container")).then(canvas => {
var img = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
///location.href = img;
$.ajax({
type: 'POST',
url: "Test/UploadImage",
data: '{ "imageData" : "' + img + '" }',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (msg) {
alert('Image saved successfully !');
}
});
})
}, 3000);
控制器:
[HttpPost]
public ActionResult UploadImage(string imageData)
{
string fileNameWitPath = path + DateTime.Now.ToString().Replace("/", "-").Replace(" ", "- ").Replace(":", "") + ".png";
using (FileStream fs = new FileStream(fileNameWitPath, FileMode.Create))
{
using (BinaryWriter bw = new BinaryWriter(fs))
{
string convert = imageData.Replace("data:image/png;base64,", "");
string input = imageData.Substring(imageData.IndexOf(",") + 1);
byte[] image64 = Convert.FromBase64String(input);
bw.Write(image64);
bw.Close();
}
}
return View();
}
}
【问题讨论】:
标签: javascript c# asp.net-mvc highcharts