Janilabo

Untitled

Aug 26th, 2013
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.04 KB | None | 0 0
  1. procedure ResizeTPA(var TPA: TPointArray; width, height: Integer);
  2. var
  3.   w, h, l, i, x, y: Integer;
  4.   m: array of TBoolArray;
  5.   b: TBox;
  6. begin
  7.   l := Length(TPA);
  8.   if (l > 0) then
  9.   begin
  10.     b := GetTPABounds(TPA);
  11.     w := ((b.X2 - b.X1) + 1);
  12.     h := ((b.Y2 - b.Y1) + 1);
  13.     if (width <> w) or (height <> h) then
  14.     begin
  15.       SetLength(m, w);
  16.       for x := 0 to (w - 1) do
  17.       begin
  18.         SetLength(m[x], h);
  19.         for y := 0 to (h - 1) do
  20.           m[x][y] := False;
  21.       end;
  22.       for i := 0 to (l - 1) do
  23.         m[(TPA[i].X - b.X1)][(TPA[i].Y - b.Y1)] := True;
  24.       SetLength(TPA, 0);
  25.       l := 0;
  26.       for y := 0 to (height - 1) do
  27.         for x := 0 to (width - 1) do
  28.           if m[((x * w) div width)][((y * h) div height)] then
  29.           begin
  30.             SetLength(TPA, (l + 1));
  31.             TPA[l] := Point((x + b.X1), (y + b.Y1));
  32.             Inc(l);
  33.           end;
  34.     end;
  35.   end;
  36. end;
  37.  
  38. procedure SetPixels(bmp: Integer; TPA: TPointArray; color: Integer);
  39. var
  40.   a, b, w, h: Integer;
  41. begin
  42.   b := High(TPA);
  43.   if (b > -1) then
  44.   begin
  45.     try
  46.       GetBitmapSize(bmp, w, h);
  47.     except
  48.       Exit;
  49.     end;
  50.     for a := 0 to b do
  51.       if ((TPA[a].X > -1) and (TPA[a].Y > -1) and (TPA[a].X < w) and (TPA[a].Y < h)) then
  52.         FastSetPixel(bmp, TPA[a].X, TPA[a].Y, color);
  53.   end;
  54. end;
  55.  
  56. var
  57.   TPA: TPointArray;
  58.   bmp: Integer;
  59.   b: TBox;
  60.  
  61. const
  62.   ZOOM = 10;
  63.  
  64. begin
  65.   bmp := CreateBitmap(500, 500);
  66.   TPA := [Point(11, 12), Point(13, 14), Point(15, 16), Point(17, 18)];
  67.   b := GetTPABounds(TPA);
  68.   WriteLn((b.X2 - b.X1) + 1);
  69.   WriteLn((b.Y2 - b.Y1) + 1);
  70.   WriteLn(ToStr(b));
  71.   ResizeTPA(TPA, ((b.X2 - b.X1) + 1) * ZOOM, ((b.Y2 - b.Y1) + 1) * ZOOM);
  72.   b := GetTPABounds(TPA);
  73.   ResizeTPA(TPA, ((b.X2 - b.X1) + 1) div 2 , ((b.Y2 - b.Y1) + 1) div 2);
  74.   b := GetTPABounds(TPA);
  75.   WriteLn((b.X2 - b.X1) + 1);
  76.   WriteLn((b.Y2 - b.Y1) + 1);
  77.   WriteLn(ToStr(b));
  78.   SetPixels(bmp, TPA, 255);
  79.   DisplayDebugImgWindow(500, 500);
  80.   DrawBitmapDebugImg(bmp);
  81.   WriteLn(ToStr(TPA));
  82. end.
Advertisement
Add Comment
Please, Sign In to add comment