Axis.cs
上传用户:tjjgrl
上传日期:2019-04-04
资源大小:1010k
文件大小:2k
源码类别:

电子政务应用

开发平台:

C#

  1. using System;
  2. using QRCodeImageReader = ThoughtWorks.QRCode.Codec.Reader.QRCodeImageReader;
  3. namespace ThoughtWorks.QRCode.Geom
  4. {
  5. /// <summary> This class designed to move target point based on independent axis.
  6. /// It allows move target coodinate on rotated, scaled and gauche QR Code image
  7. /// </summary>
  8. public class Axis
  9. {
  10.         internal int sin, cos;
  11.         internal int modulePitch;
  12.         internal Point origin;
  13.         virtual public Point Origin
  14. {
  15. set
  16. {
  17. this.origin = value;
  18. }
  19. }
  20. virtual public int ModulePitch
  21. {
  22. set
  23. {
  24. this.modulePitch = value;
  25. }
  26. }
  27. public Axis(int[] angle, int modulePitch)
  28. {
  29. this.sin = angle[0];
  30. this.cos = angle[1];
  31. this.modulePitch = modulePitch;
  32. this.origin = new Point();
  33. }
  34. public virtual Point translate(Point offset)
  35. {
  36. int moveX = offset.X;
  37. int moveY = offset.Y;
  38. return this.translate(moveX, moveY);
  39. }
  40. public virtual Point translate(Point origin, Point offset)
  41. {
  42. Origin = origin;
  43. int moveX = offset.X;
  44. int moveY = offset.Y;
  45. return this.translate(moveX, moveY);
  46. }
  47. public virtual Point translate(Point origin, int moveX, int moveY)
  48. {
  49. Origin = origin;
  50. return this.translate(moveX, moveY);
  51. }
  52. public virtual Point translate(Point origin, int modulePitch, int moveX, int moveY)
  53. {
  54. Origin = origin;
  55. this.modulePitch = modulePitch;
  56. return this.translate(moveX, moveY);
  57. }
  58. public virtual Point translate(int moveX, int moveY)
  59. {
  60. long dp = QRCodeImageReader.DECIMAL_POINT;
  61. Point point = new Point();
  62. int dx = (moveX == 0)?0:(modulePitch * moveX) >> (int) dp;
  63. int dy = (moveY == 0)?0:(modulePitch * moveY) >> (int) dp;
  64. point.translate((dx * cos - dy * sin) >> (int) dp, (dx * sin + dy * cos) >> (int) dp);
  65. point.translate(origin.X, origin.Y);
  66. return point;
  67. }
  68. }
  69. }