Забавно, какой-то программист сделал своё SDK(лежит тут )
При осмотре видим, что:
- Requres .Net Compat Framework 3.5,
- Single Finger sliding causes zoom IN (notice that you CANNOT zoom OUT)
исходников на хда не нашел, зато, это чудо-эсдека легко рефлектором вскрывается и:
public DualTouchSDK()// конструктор
{
this.xStart = 0;
this.yStart = 0;
this.StartIsSet = false;
this.xAvg = 0;
this.yAvg = 0;
this.AvgIsSet = false;
this.xEnd = 0;
this.yEnd = 0;
this.length1 = 0.0;
this.length2 = 0.0;
this.Tollerance = 50;// особенно милая константа
}
//без коментариев видно что к чему:
private double getlength(int x1, int y1, int x2, int y2)
{
return Math.Abs(Math.Sqrt(Math.Pow((double) (x2 - x1), 2.0) + Math.Pow((double) (y2 - y1), 2.0)));
}
// ба так это взятие середины(вот она математика сложная, как посчитать длину вектора, ага)
// дальше идем:
public void SetMouseDown(int x, int y)
{
if (!this.StartIsSet)
{
this.xStart = x;// зафиксировали координаты
this.yStart = y;
this.StartIsSet = true;// флаг выставили что палец ткнулся
Console.WriteLine("Fixed Start");
}
}
//запоминание начальной координаты
// а вот и поехали:
public void SetMouseMove(int x, int y)
{
if (!this.AvgIsSet && (this.getlength(this.xStart, this.yStart, x, y) >= (this.Tollerance / 2)))
{
this.xAvg = x;
this.yAvg = y;
this.AvgIsSet = true;
this.xEnd = Math.Abs((int) ((2 * this.xAvg) - this.xStart));
this.yEnd = Math.Abs((int) ((2 * this.yAvg) - this.yStart));
this.length1 = this.getlength(this.xStart, this.yStart, this.xEnd, this.yEnd);
Console.WriteLine("Fixed Avg");
}
if (this.AvgIsSet && (this.Zooming != null))
{
int num2 = Math.Abs((int) ((2 * x) - this.xStart));
int num3 = Math.Abs((int) ((2 * y) - this.yStart));
double num4 = this.getlength(this.xStart, this.yStart, num2, num3);
if (num4 >= this.Tollerance)
{
this.xEnd = num2;
this.yEnd = num3;
this.length2 = num4;
double num5 = this.length2 / this.length1;
MultiTouchEventArgument argument2 = new MultiTouchEventArgument();
argument2.x1 = this.xStart;
argument2.y1 = this.yStart;
argument2.x2 = this.xEnd;
argument2.y2 = this.yEnd;
argument2.ZoomRatio = num5;
MultiTouchEventArgument e = argument2;
this.Zooming(e);
}
}
}
// а тут палец отпустили:
public void MouseUp()
{
this.StartIsSet = false;
this.AvgIsSet = false;
}
Вот такое вот лжепрограммное обеспечение
Комментариев нет:
Отправить комментарий