这是一个可以很好编译的TypeScript代码片段(使用1.5.3)。
function alertNumber(a: number) {
alert(a + 1);
}
var x:any = "string";
alertNumber(x);
Run Code Online (Sandbox Code Playgroud)
如何用type的参数调用某个类型的参数请求函数any?
我正在为交易软件(C#、winforms、.NET 3.5)编写一个插件,我想在面板(比方说ChartPanel)上绘制十字光标,其中包含绘制成本可能很高的数据。到目前为止我所做的是:
CursorControl我在面板中
添加了一个CursorControl位于主绘图面板上方,以便覆盖整个区域Enabled = false所有输入事件都会传递给父级
ChartPanelPaint方法被实现,以便它在当前鼠标位置从上到下、从左到右绘制线条ChartPanel.Invalidate(),但正如我所说,底层数据的绘制成本可能很高,这会导致每次我移动鼠标时所有内容都重新绘制,这是错误的(但这是我现在可以完成这项工作的唯一方法)CursorControl.Invalidate()并在绘制光标之前,我会拍摄当前绘制的数据的快照并将其保留为光标的背景,每次需要重新绘制光标时都会恢复该背景...问题是...我不知道该怎么做。2.B. 意思是:
Graphics对象变成Bitmap(它(图形)是通过 Paint 方法给我的,我必须在它上面绘画,所以我无法创建一个新的 Graphics 对象......也许我弄错了,但这就是我的方式明白它)我无法控制绘制昂贵数据的过程。我可以访问CursorControl通过 API 调用的我的方法和它的方法。
那么有没有办法将现有的Graphic内容存储到Bitmap中并在以后恢复呢?或者有没有更好的方法来解决这个问题?
已解决:经过几个小时的反复试验,我想出了一个可行的解决方案。我使用的软件有很多问题不能笼统讨论,但主要原理很清楚:
panel.DrawToBitmap@Gusman 的答案中首先提到的方法。我知道,我想避免,但最后我不得不接受,因为这似乎是唯一的办法ChartPanel. 鼠标移动而不更改图表图像后,我会进行快照显示DrawToBitmap并按照所选答案中的描述进行操作。我仍然每隔几秒钟左右就会偶尔遇到闪烁,但我想我可以以某种方式解决这个问题。虽然我选择了Gusman的答案,但我要感谢所有参与的人,因为我使用了其他答案中提到的许多其他技巧,例如Panel.BackgroundImage、使用Plot()方法而不是Paint()来锁定图像等。