procedure MakeFrame(); var bmp:TBitmap; rect:TRect; begin rect.Left := 50; rect.Top:= 150; rect.Right:=550; // Screen.Width rect.Bottom:=550; // Screen.Height bmp := TBitmap.Create; bmp.Width := Screen.Width; bmp.Height := Screen.Height; BitBlt(bmp.Canvas.Handle, 0, 0, rect.Right, rect.Bottom, GetDC(0), rect.Left, rect.Top, SRCCOPY); Form1.Image1.Width := rect.Right; Form1.Image1.Height := rect.Bottom; Form1.Image1.Picture.Assign(bmp); bmp.Free; end;
for I:=0 to rows do begin offset:=10; // if (I mod 2) <> 0 then offset:=offset+(36 div 2); for J:=0 to cols do begin mat[i,j].Y := 10+Round(I*36); // mat[i,j].X := offset+Round(J*36); // ( ) if (I=rows) and (J=cols) then begin mat[i,j].Y := 519; mat[i,j].X := 262; end; // end; end;
rgb:=Form1.Image1.Canvas.Pixels[ mat[i,j].X, mat[i,j].Y-4 ]; mat[i,j].color := 0; mat[i,j].summa := 0; if GetRValue(rgb) > 230 then mat[i,j].color:=1; if GetGValue(rgb) > 230 then mat[i,j].color:=2; if GetBValue(rgb) > 230 then mat[i,j].color:=3;
if mat[i,j].color = 0 then Form1.Image1.Canvas.Brush.Color := clWhite; if mat[i,j].color = 1 then Form1.Image1.Canvas.Brush.Color := clRed; if mat[i,j].color = 2 then Form1.Image1.Canvas.Brush.Color := clGreen; if mat[i,j].color = 3 then Form1.Image1.Canvas.Brush.Color := clBlue; Form1.Image1.Canvas.Rectangle( mat[i,j].X-5, mat[i,j].Y-5, mat[i,j].X+5, mat[i,j].Y+5 );
/// for I:=0 to rows-1 do for J:=0 to cols do begin if (mat[I,J].color = 0) and (I <> 0) then continue; mat[i,j].allow:=1; // LineMaxX:=mat[I,J].X; LineMaxY:=mat[I,J].Y; // LineMinX:=mat[rows,cols].X; LineMinY:=mat[rows,cols].Y; mat[I,J].dist := sqrt( sqr(mat[I,J].X-mat[rows,cols].X)+ sqr(mat[I,J].Y-mat[rows,cols].Y)); for II:=I+1 to rows-1 do for JJ:=0 to cols do begin if mat[II,JJ].color = 0 then continue; // LineMiddleX:=mat[II,JJ].X; LineMiddleY:=mat[II,JJ].Y; // // ka:=1; kb:=(LineMinX-LineMaxX)/(LineMaxY-LineMinY); kc:=-LineMinX-kb*LineMinY; kz:= abs(ka*LineMiddleX + kb*LineMiddleY+kc)/ sqrt(sqr(ka)+sqr(kb)); if kz < 39 then mat[i,j].allow:=0; //Form1.Memo1.Lines.Add(FloatToStr(kz)); end;
if mat[i,j].allow = 1 then begin Form1.Image1.Canvas.Pen.Width:= 2; Form1.Image1.Canvas.Pen.Color:= clWhite; Form1.Image1.Canvas.MoveTo(Round(LineMinX),Round(LineMinY)); Form1.Image1.Canvas.LineTo(Round(LineMaxX),Round(LineMaxY)); end;
for I:=0 to rows-1 do for J:=0 to cols do begin if mat[i,j].allow = 1 then begin Form1.Image1.Canvas.Pen.Width:= 2; Form1.Image1.Canvas.Pen.Color:= clWhite; Form1.Image1.Canvas.MoveTo(Round(LineMinX),Round(LineMinY)); Form1.Image1.Canvas.LineTo(Round(LineMaxX),Round(LineMaxY)); // if mat[i,j].color=mat[rows,cols].color // then begin MouseX:=mat[i,j].X+50; MouseY:=mat[i,j].Y+250; // + break; end; end; end;
if Form1.CheckBox2.Checked then begin GetCursorPos(MouseL); SetCursorPos(MouseX,MouseY); mouse_event(MOUSEEVENTF_LEFTDOWN,MouseX,MouseY,0,0);// - mouse_event(MOUSEEVENTF_LEFTUP,MouseX,MouseY,0,0);// - SetCursorPos(MouseL.X,MouseL.Y); end;
Source: https://habr.com/ru/post/165297/
All Articles