devflow.kr@:~#

[vb.net] form smooth controls

VB
폼에서 보통 Timer를 이용해서 위치를 연속적으로 바꾼다하면, 그래픽(하드웨어) 가속이 적용되어있지도 않고, 따로 이벤트처리가 없기때문에 컨트롤들이 심하게 발작하는걸 볼 수 있다.

그래서 따로 paint나 그런부근에 이벤트를 넣어줘야한다

timer등에서 이벤트에서 컨트롤의 위치를 설정한 후, form.Invalidate()를 해준다.
설명을 보면 알겠지만, 전체컨트롤을 다시 그려주는기능이다.

또 이벤트 Handles Me.Paint에 아래와 같이 쑤셔박아줘야한다

e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias

또한 폼 로드에 아래도 박아주자

SetStyle(ControlStyles.DoubleBuffer Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.ResizeRedraw, True)

그리고 실행을 하면 많이 부드러워진 컨트롤을 볼 수 있다.