<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=444073&amp;view=findpost&amp;p=3902356</guid>
        <pubDate>Sat, 30 Mar 2024 23:51:16 +0000</pubDate>
        <title>Как сделать столкновения объектов краями?</title>
        <link>https://forum.sources.ru/index.php?showtopic=444073&amp;view=findpost&amp;p=3902356</link>
        <description><![CDATA[Katerina1993: Мне нужно сделать столкновения объектами краями и чтобы при столкновении толщина линии увеличивалась. <br>
Пример ниже,<br>
<img class='tag-img' src='https://i.ibb.co/6yFC4KQ/Game-Collision1.gif' alt='user posted image'><br>
Нужные классы уже написаны. Сейчас у меня толщина линий увеличивается когда маленький квадрат полностью находиться внутри большого квадрата. Пример в гифке.<br>
<img class='tag-img' src='https://i.ibb.co/6nsKVxV/Game-Collision2.gif' alt='user posted image'><br>
За столкновение объектов отвечает этот код:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">pt := rect1.localToLocal(rect1.x1-shape1.x1,rect1.y1-shape1.y1);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if shape1.hitTest(pt.x, pt.y,Form1) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; shape1.lineWidth:=5;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; shape1.lineWidth:=1;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
Как изменить параметры передаваемых значений hitTest (в скобках), чтобы столкновения происходила границами как на первой гифке?<br>
Полностью код + исходники <span class="b-attach" data-size="12928" data-hits="13" data-attach-id="65673" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=65673' title='Скачать файл' target='_blank'>2hitTest.zip</a> (, : 13)
		</span> <br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">unit Unit1;</div><div class="code_line">&nbsp;</div><div class="code_line">interface</div><div class="code_line">&nbsp;</div><div class="code_line">uses</div><div class="code_line">&nbsp;&nbsp;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,</div><div class="code_line">&nbsp;&nbsp;Dialogs, ExtCtrls, AppEvnts, StdCtrls;</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;pRGB = ^TRGB;</div><div class="code_line">&nbsp;&nbsp;TRGB = record</div><div class="code_line">&nbsp;&nbsp; &nbsp;B, G, R: Byte;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;TMatrix=record a,b,c,d,tx,ty:Currency &nbsp;; end;</div><div class="code_line">&nbsp;&nbsp;TForm1 = class(TForm)</div><div class="code_line">&nbsp;&nbsp; &nbsp;Timer1: TTimer;</div><div class="code_line">&nbsp;&nbsp; &nbsp;ApplicationEvents1: TApplicationEvents;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure FormPaint(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure ApplicationEvents1Message(var Msg: tagMSG;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;var Handled: Boolean);</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Timer1Timer(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp;private</div><div class="code_line">&nbsp;&nbsp; &nbsp;{ Private declarations }</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;{ Public declarations }</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp; TRect = class</div><div class="code_line">&nbsp;&nbsp;private</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;x0, y0, x1,y1: Integer;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;width, height: Integer;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;color : TColor;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;dragok : Boolean;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Cs:TCanvas;</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;constructor Create(_Cs:TCanvas;_x0, _y0,_x1,_y1, w1, h1: Integer; _Color:TColor; _dragok:Boolean);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Procedure Draw(); //Прорисовка</div><div class="code_line">&nbsp;&nbsp; &nbsp;function localToLocal (x, y:Integer):TPoint;</div><div class="code_line">&nbsp;&nbsp; &nbsp;function globalToLocal (x, y:Integer):TPoint;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;TShape = class</div><div class="code_line">&nbsp;&nbsp;private</div><div class="code_line">&nbsp;&nbsp; &nbsp;x0,y0,x1,y1: Integer;</div><div class="code_line">&nbsp;&nbsp; &nbsp;width, height: Integer;</div><div class="code_line">&nbsp;&nbsp; &nbsp;color,color1: TColor;</div><div class="code_line">&nbsp;&nbsp; &nbsp;lineWidth:Integer;</div><div class="code_line">&nbsp;&nbsp; &nbsp;dragok : Boolean;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Cs:TCanvas;</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;constructor Create(_Cs:TCanvas;_x0, _y0,_x1,_y1,_lineWidth, w1, h1: Integer; _Color,_Color1:TColor; _dragok:Boolean);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Procedure Draw(); //Прорисовка</div><div class="code_line">&nbsp;&nbsp; &nbsp;function hitTest(x, y:Integer;fr:TForm1):Boolean;</div><div class="code_line">&nbsp;&nbsp; &nbsp;function _testHit(x,y:Integer;fr:TForm1):Boolean;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Form1: TForm1;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;rect1 : &nbsp;TRect;</div><div class="code_line">&nbsp;&nbsp;shape1: TShape;</div><div class="code_line">&nbsp;&nbsp;a1:Integer = 1;</div><div class="code_line">&nbsp;&nbsp;b1:Integer = 0;</div><div class="code_line">&nbsp;&nbsp;c1:Integer = 0;</div><div class="code_line">&nbsp;&nbsp;d1:Integer = 1;</div><div class="code_line">&nbsp;&nbsp;//tx1:Integer = 0;</div><div class="code_line">&nbsp;// ty1:Integer = 0;</div><div class="code_line">&nbsp;&nbsp;HDC3,HDC2:THandle;</div><div class="code_line">&nbsp;&nbsp;StartX:Integer;</div><div class="code_line">&nbsp;&nbsp;StartY:Integer;</div><div class="code_line">implementation</div><div class="code_line">&nbsp;</div><div class="code_line">{$R *.dfm}</div><div class="code_line">constructor TShape.Create(_Cs:TCanvas;_x0,_y0,_x1,_y1,_lineWidth,w1,h1: Integer; _Color, _Color1: TColor; _dragok:Boolean);</div><div class="code_line">&nbsp;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;inherited Create;</div><div class="code_line">&nbsp;&nbsp;x0 := _x0;</div><div class="code_line">&nbsp;&nbsp;y0 := _y0;</div><div class="code_line">&nbsp;&nbsp;x1 := _x1;</div><div class="code_line">&nbsp;&nbsp;y1 := _y1;</div><div class="code_line">&nbsp;&nbsp;width := w1;</div><div class="code_line">&nbsp;&nbsp;height := h1;</div><div class="code_line">&nbsp;&nbsp;color := _Color;</div><div class="code_line">&nbsp;&nbsp;color1 := _Color1;</div><div class="code_line">&nbsp;&nbsp;dragok := _dragok;</div><div class="code_line">&nbsp;&nbsp;lineWidth := _lineWidth;</div><div class="code_line">&nbsp;&nbsp;Cs := _Cs;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TShape.Draw();</div><div class="code_line">var M:TXFORM;tx1,ty1:Integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; hDc2 := Cs.Handle;</div><div class="code_line">&nbsp;&nbsp; SetGraphicsMode(hDc2, GM_ADVANCED);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;// &nbsp;SetWorldTransform(hDc, M);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;tx1 := a1*x1+c1*y1+0;</div><div class="code_line">&nbsp;&nbsp;ty1 := b1*x1+d1*y1+0;</div><div class="code_line">&nbsp;&nbsp; //fillChar(M, sizeOf(M), 0);</div><div class="code_line">&nbsp;&nbsp; SaveDC(hDc3);</div><div class="code_line">&nbsp;&nbsp; M.eM11 := a1;</div><div class="code_line">&nbsp;&nbsp; M.eM12 := b1;</div><div class="code_line">&nbsp;&nbsp; M.eM21 := c1;</div><div class="code_line">&nbsp;&nbsp; M.eM22 := d1;</div><div class="code_line">&nbsp;&nbsp; M.eDx := tx1;</div><div class="code_line">&nbsp;&nbsp; M.eDy := ty1;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; ModifyWorldTransform(hDc2, M, MWT_LEFTMULTIPLY);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;Form1.Canvas.Pen.Color:=color1;</div><div class="code_line">&nbsp;&nbsp;Form1.Canvas.Pen.Width := lineWidth;</div><div class="code_line">&nbsp;&nbsp;Form1.Canvas.Brush.Color:=color;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;Cs.Rectangle(0,0,width,height);</div><div class="code_line">&nbsp;&nbsp;RestoreDC(HDC2,1)</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TShape.hitTest(x,y:Integer;fr:TForm1):Boolean;</div><div class="code_line">var M:TXFORM;hit:Boolean;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; M.eM11 := a1;</div><div class="code_line">&nbsp;&nbsp; M.eM12 := b1;</div><div class="code_line">&nbsp;&nbsp; M.eM21 := c1;</div><div class="code_line">&nbsp;&nbsp; M.eM22 := d1;</div><div class="code_line">&nbsp;&nbsp; M.eDx := -x;</div><div class="code_line">&nbsp;&nbsp; M.eDy := -y;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; SetWorldTransform(Cs.Handle, M);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; Draw();</div><div class="code_line">&nbsp;&nbsp; hit := _testHit(x,y,fr);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; M.eM11 := a1;</div><div class="code_line">&nbsp;&nbsp; M.eM12 := b1;</div><div class="code_line">&nbsp;&nbsp; M.eM21 := c1;</div><div class="code_line">&nbsp;&nbsp; M.eM22 := d1;</div><div class="code_line">&nbsp;&nbsp; M.eDx := 0;</div><div class="code_line">&nbsp;&nbsp; M.eDy := 0;</div><div class="code_line">&nbsp;&nbsp; SetWorldTransform(Cs.Handle, M);</div><div class="code_line">&nbsp;&nbsp; &nbsp; result:=hit;</div><div class="code_line">&nbsp;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TShape._testHit(x,y:Integer;fr:TForm1):Boolean;</div><div class="code_line">begin</div><div class="code_line">&nbsp;</div><div class="code_line">if (-x+150 &#60; 0) and (0 &#60;= -x+width+150) and (-y+150 &#60; 0) and (0 &#60;= -y+height+150) then begin</div><div class="code_line">&nbsp;&nbsp;result:=True;</div><div class="code_line">end</div><div class="code_line">else</div><div class="code_line">&nbsp;&nbsp; result:=False;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function TRect.localToLocal (x, y:Integer):TPoint;</div><div class="code_line">var tx1,ty1:Integer;pt1:TPoint;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; tx1 := 1*x1+0*y1+0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; ty1 := 0*x1+1*y1+0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; pt1.x := x1*1+y1*0+tx1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; pt1.y := x1*0+y1*1+ty1;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; result := globalToLocal(pt1.x, pt1.y);</div><div class="code_line">&nbsp;&nbsp; &nbsp;//result := 10;</div><div class="code_line">end;</div><div class="code_line">function TRect.globalToLocal (x, y:Integer):TPoint;</div><div class="code_line">var mtx1:TMatrix;pt1:TPoint;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;mtx1.a:=1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;mtx1.b:=0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;mtx1.c:=0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;mtx1.d:=1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;mtx1.tx:=-150;</div><div class="code_line">&nbsp;&nbsp; &nbsp;mtx1.ty:=-150;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pt1.x := x*1+y*0+Round(mtx1.tx);</div><div class="code_line">&nbsp;&nbsp; &nbsp;pt1.y := x*0+y*1+Round(mtx1.ty);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;result.X := pt1.x;</div><div class="code_line">&nbsp;&nbsp; &nbsp;result.Y := pt1.y;</div><div class="code_line">end;</div><div class="code_line">constructor TRect.Create(_Cs:TCanvas;_x0,_y0,_x1,_y1,w1,h1: Integer; _Color: TColor; _dragok:Boolean);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;inherited Create;</div><div class="code_line">&nbsp;&nbsp;x0 := _x0;</div><div class="code_line">&nbsp;&nbsp;y0 := _y0;</div><div class="code_line">&nbsp;&nbsp;x1 := _x1;</div><div class="code_line">&nbsp;&nbsp;y1 := _y1;</div><div class="code_line">&nbsp;&nbsp;Cs := _Cs;</div><div class="code_line">&nbsp;&nbsp;width := w1;</div><div class="code_line">&nbsp;&nbsp;height := h1;</div><div class="code_line">&nbsp;&nbsp;color := _Color;</div><div class="code_line">&nbsp;&nbsp;dragok := _dragok;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TRect.Draw();</div><div class="code_line">var M:TXFORM;tx1,ty1:Integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;hDc3 := Cs.Handle;</div><div class="code_line">&nbsp;&nbsp;SetGraphicsMode(hDc3, GM_ADVANCED);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;tx1 := a1*x1+c1*y1+0;</div><div class="code_line">&nbsp;&nbsp;ty1 := b1*x1+d1*y1+0;</div><div class="code_line">&nbsp;&nbsp;SaveDC(HDC3);</div><div class="code_line">&nbsp;&nbsp;</div><div class="code_line">&nbsp;&nbsp; M.eM11 := a1;</div><div class="code_line">&nbsp;&nbsp; M.eM12 := b1;</div><div class="code_line">&nbsp;&nbsp; M.eM21 := c1;</div><div class="code_line">&nbsp;&nbsp; M.eM22 := d1;</div><div class="code_line">&nbsp;&nbsp; M.eDx := tx1;</div><div class="code_line">&nbsp;&nbsp; M.eDy := ty1;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; ModifyWorldTransform(hDc3, M, MWT_LEFTMULTIPLY);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; Form1.Canvas.Brush.Color:=color;</div><div class="code_line">&nbsp;&nbsp; Cs.Rectangle(0,0,width,height);</div><div class="code_line">&nbsp;&nbsp; RestoreDC(HDC3,1)</div><div class="code_line">end;</div><div class="code_line">procedure TForm1.FormPaint(Sender: TObject);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; shape1:=TShape.Create(Form1.Canvas,0,0,150,150,2,100,100,clGreen,clBlue,false);</div><div class="code_line">&nbsp;&nbsp; shape1.Draw();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; rect1 := TRect.Create(Form1.Canvas,0,0,10,170,50,50,clBlue,false);</div><div class="code_line">&nbsp;&nbsp; rect1.Draw();</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;</div><div class="code_line">&nbsp;&nbsp;var Handled: Boolean);</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp; dx,dy:Integer;</div><div class="code_line">&nbsp;&nbsp; P : TPoint;</div><div class="code_line">&nbsp;&nbsp; pt:TPoint;</div><div class="code_line">begin</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; if Msg.message = WM_LBUTTONDOWN then</div><div class="code_line">&nbsp;&nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; P:=Form1.ScreenToClient(Mouse.CursorPos);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; if (rect1.x1 &#60; P.X) and</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; (rect1.x1+rect1.width &#62; P.X)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; and (rect1.y1 &#60; P.Y) and</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; (rect1.y1+rect1.height &#62; P.Y)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;rect1.dragok:=true;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartX:=P.X;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StartY:=P.Y;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; </div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if Msg.message = WM_LBUTTONUP then</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;rect1.dragok:=false;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if Msg.message = WM_MOUSEMOVE then</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;P:=Form1.ScreenToClient(Mouse.CursorPos);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;dx:=P.X-startX;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;dy:=P.Y-startY;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if rect1.dragok then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rect1.x1:=rect1.x1+dx;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rect1.y1:=rect1.y1+dy;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pt := rect1.localToLocal(rect1.x1-shape1.x1,rect1.y1-shape1.y1);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if shape1.hitTest(pt.x, pt.y,Form1) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; shape1.lineWidth:=5;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; shape1.lineWidth:=1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;startX:=P.X;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;startY:=P.Y;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.Timer1Timer(Sender: TObject);</div><div class="code_line">begin</div><div class="code_line">Form1.Canvas.Brush.Color:=clWhite;</div><div class="code_line">Form1.Canvas.FillRect(Form1.ClientRect);</div><div class="code_line">&nbsp;</div><div class="code_line">shape1.Draw();</div><div class="code_line">rect1.Draw();</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">end.</div></ol></div></div></div></div>]]></description>
        <author>Katerina1993</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	