BarFun.inc
上传用户:xdwang_66
上传日期:2016-04-26
资源大小:1726k
文件大小:4k
源码类别:

Static控件

开发平台:

Delphi

  1. // =============================================================================
  2. //
  3. // Barcode VCL Component
  4. //
  5. // For Delphi 4/5/6/7, C++ Builder 4/5/6, BDS 2005/2005, Turbo Delphi 2006
  6. //
  7. // Copyright (c) 2001, 2007  Han-soft Software, all rights reserved.
  8. //
  9. // $Rev: 44 $   $Id: BarFun.inc 44 2007-01-16 01:16:04Z hanjy $
  10. //
  11. // =============================================================================
  12. {*******************}
  13. {    For Display    }
  14. {*******************}
  15. { Rotate a Point by Angle 'alpha' }
  16. function Rotate2D(p:TPoint; alpha:double): TPoint;
  17. var
  18.   sinus, cosinus : Extended;
  19. begin
  20.   SinCos(alpha, sinus, cosinus);
  21.   result.x := Round(p.x*cosinus + p.y*sinus);
  22.   result.y := Round(-p.x*sinus + p.y*cosinus);
  23. end;
  24. {Move Point "a" by Vector "b"}
  25. function Translate2D(a, b:TPoint): TPoint;
  26. begin
  27.   result.x := a.x + b.x;
  28.   result.y := a.y + b.y;
  29. end;
  30. (*
  31. { Rotate a array}
  32. procedure Rotate2Darray(p:array of TPoint; alpha:double);
  33. var
  34.    i : Integer;
  35. begin
  36.    for i:=Low(p) to High(p) do
  37.       p[i] := Rotate2D(p[i], alpha);
  38. end;
  39. { Move a array }
  40. procedure Translate2Darray(p:array of TPoint; shift:TPoint);
  41. var
  42.    i : Integer;
  43. begin
  44.    for i:=Low(p) to High(p) do
  45.       p[i] := Translate2D(p[i], shift);
  46. end;
  47. *)
  48. { Move the orgin }
  49. function TranslateQuad2D(const alpha :double; const orgin, point :TPoint): TPoint;
  50. var
  51.    alphacos: Extended;
  52.    alphasin: Extended;
  53.    moveby:   TPoint;
  54. begin
  55.    SinCos(alpha, alphasin, alphacos);
  56.    if alphasin >= 0 then
  57.    begin
  58.       if alphacos >= 0 then
  59.       begin
  60.          { 1. Quadrant }
  61.          moveby.x := 0;
  62.          moveby.y := Round(alphasin*point.x);
  63.       end
  64.       else
  65.       begin
  66.          { 2. Quadrant }
  67.          moveby.x := -Round(alphacos*point.x);
  68.          moveby.y := Round(alphasin*point.x - alphacos*point.y);
  69.       end;
  70.    end
  71.    else
  72.    begin
  73.       if alphacos >= 0 then
  74.       begin
  75.          { 4. Quadrant }
  76.          moveby.x := -Round(alphasin*point.y);
  77.          moveby.y := 0;
  78.       end
  79.       else
  80.       begin
  81.          { 3. Quadrant }
  82.          moveby.x := -Round(alphacos*point.x) - Round(alphasin*point.y);
  83.          moveby.y := -Round(alphacos*point.y);
  84.       end;
  85.    end;
  86.    Result := Translate2D(orgin, moveby);
  87. end;
  88. {*******************}
  89. {     For Print     }
  90. {*******************}
  91. { Get printer paramter }
  92. function GetPrinterRes(const pobj: TPrinter; Horz: Boolean): integer;
  93. var
  94.    Index: Integer;
  95. begin
  96.    if Horz then
  97.       Index:=LOGPIXELSX
  98.    else
  99.       Index:=LOGPIXELSY;
  100.    Result:=GetDeviceCaps(pobj.Handle, Index);
  101. end;
  102. { Conver millimeter to pixels at X }
  103. function ConvertMMtoPixelsX(const Value:Double):Integer;
  104. begin
  105.    Result := Round(Value*GetPrinterRes(Printer, True) / mmPerInch);
  106. end;
  107. { Conver millimeter to pixels at Y }
  108. function ConvertMMtoPixelsY(const Value:Double):Integer;
  109. begin
  110.    Result := Round(Value*GetPrinterRes(Printer, False) / mmPerInch);
  111. end;
  112. { Conver inch to pixels at X }
  113. function ConvertInchtoPixelsX(const Value:Double):Integer;
  114. begin
  115.    Result := Round(Value*GetPrinterRes(Printer, True));
  116. end;
  117. { Conver inch to pixels at Y }
  118. function ConvertInchtoPixelsY(const Value:Double):Integer;
  119. begin
  120.    Result := Round(Value*GetPrinterRes(Printer, False));
  121. end;
  122. { Conver pixels to millimeter at X }
  123. function ConvertPixelstoMMX(const Value:Double):Integer;
  124. begin
  125.    Result := Round(Value * mmPerInch / GetPrinterRes(Printer, True));
  126. end;
  127. { Conver pixels to millimeter at Y }
  128. function ConvertPixelstoMMY(const Value:Double):Integer;
  129. begin
  130.    Result := Round(Value * mmPerInch / GetPrinterRes(Printer, False));
  131. end;
  132. { Conver pixels to inch at X }
  133. function ConvertPixelstoInchX(const Value:Double):Integer;
  134. begin
  135.    Result := Round(Value / GetPrinterRes(Printer, True));
  136. end;
  137. { Conver pixels to inch at Y }
  138. function ConvertPixelstoInchY(const Value:Double):Integer;
  139. begin
  140.    Result := Round(Value / GetPrinterRes(Printer, False));
  141. end;