我有一个方法返回由两点定义的线段的中点;
public static PointF GetMidPoint(PointF p1, PointF p2)
{
return new PointF((p1.X + p2.X) / 2, (p1.Y + p2.Y) / 2);
}
Run Code Online (Sandbox Code Playgroud)
其工作原理完全符合预期。
然而,我现在需要沿着该段找到一个任意百分比(例如 35%),原则上应该(?)很简单;
public static PointF GetArbitaryPoint(PointF p1, PointF p2, double percentage)
{
return new PointF((p1.X + p2.X) / percentage, (p1.Y + p2.Y) / percentage);
}
Run Code Online (Sandbox Code Playgroud)
但情况似乎并非如此,我认为这是 ac# 问题 - 一旦引入小数点(无论是 Point 还是 PointF),它就会把玩具从婴儿车中扔出来并返回奇怪的结果。
所以我想问题是如何修改上面的内容以使其满足我的需要?
提前致谢。
遗憾的是,我不得不处理大量的JSON数据,因此不可避免地默认为json.net,其中我发现'文档'只涉及极其简单的例子.
作为示例,我的数据包含以下"实例".
"team" : [{
"id" : "8",
"vendor-id" : "8",
"statsinc-id" : "8",
"team-name" : "",
"team-nickname" : "Pistons",
"rank" : ""
}, {
"id" : "51",
"vendor-id" : "29",
"statsinc-id" : "29",
"team-name" : "",
"team-nickname" : "Grizzlies",
"rank" : ""
}
]
Run Code Online (Sandbox Code Playgroud)
现在记住这个字符串的任何一边/无论json术语是什么,都是大量的其他数据.
有三个问题.
我按照文档,实际上无法让它吐出任何类型的值(我试图获取id字段).
'属性'中有连字符,c#不允许变量/属性名中的连字符,那么你如何处理?
在上面的例子中,每个'属性'有两个,所以可能后者会覆盖对象中的前者,我是否需要一个对象列表然后以某种方式找出一种顺序插入每个值的方法?
我觉得整件事情不必要地变得复杂,因此迫切需要帮助 - 这是很多问题,但如果有人能告诉我如何获得"团队昵称"价值,我会非常感激.
提前致谢.
我试图得到一个非常简单的示例,将订阅序列输出到文本框中,因为您可以预期在控制台应用程序中执行它是没有问题的.
我已经尝试了十几种不同的invoke变体,所有这些都会使相同的交叉线程符合他们的要求.
我读过ObserveOnDispatcher可能会做这个工作吗?但我找不到任何地方.我已经尝试过ObserveOn,你可以在下面的代码中看到,但同样的问题.
private void button1_Click(object sender, EventArgs e)
{
var source = Observable.Timer(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1)).Timestamp();
source.ObserveOn(Scheduler.CurrentThread).Subscribe(x => textBox1.AppendText(x.Value.ToString()));
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么以下工作正常;
source.Subscribe(x => MessageBox.Show(x.Value + " - " + x.Timestamp));
Run Code Online (Sandbox Code Playgroud)
然而,将这些值写入文本框需要发脾气.
有任何想法吗?
c# multithreading observablecollection winforms system.reactive