Забавно, какой-то программист сделал своё 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; }
Вот такое вот лжепрограммное обеспечение
Комментариев нет:
Отправить комментарий