그래픽, 멀티미디어 어플리케이션 제작
|
|
- 하견 운
- 7 years ago
- Views:
Transcription
1 그래픽, 멀티미디어어플리케이션제작 (Creating Graphic and Multimedia Application) 델파이를이용해서어플리케이션에그래픽기능을추가하거나, 멀티미디어를지원하게하는것은그다지어려운일이아니다. 간단하게미리그려진그림을디자인시에추가할수도있고, 여러가지그래픽컨트롤을추가하거나런타임에서동적으로그리는등의방법이모두가능하다. 또한, 델파이 4 에서멀티미디어컴포넌트를사용하면어플리케이션에서동영상이나각종사운드등을지원하게할수있다. 이번장에서는각종어플리케이션을제작할때화려함을더해줄수있는그래픽과멀티미디어를지원하게하는방법에대해서알아보도록한다. 그래픽프로그래밍개괄 VCL 그래픽컴포넌트는윈도우의 GDI(Graphics Device Interface) 를캡슐화한다. 델파이어플리케이션에서그림을그리려면, 객체의캔버스를이용한다. 캔버스는객체의프로퍼티로제공되지만, 그자체가객체이다. 캔버스객체의가장큰장점은리소스를효과적으로사용하며, 디바이스컨텍스트를관리하기때문에스크린, 프린터나비트맵, 메타파일등의종류에관계없이같은방법으로사용할수있다는것이다. 캔버스는런타임에만사용할수있다. 또한, TCanvas 객체가윈도우의디바이스컨텍스트의 wrapper 이므로, 캔버스에대해윈도우 GDI 함수를사용할때에는캔버스객체의 Handle 프로퍼티를이용해서디바이스컨텍스트핸들을얻어야한다. 디바이스컨텍스트의이해 윈도우의그래픽에대해배울때가장먼저알아야할것이디바이스컨텍스트이다. 모든윈도우응용프로그램들이실제장치대신에가상화면과가상프린터를사용한다. 윈도우는본질적으로실제디스플레이하기전에, 내부적으로그릴것을그리게되는데이때사용하는것이디바이스컨텍스트이다. 따라서화면이나프린터에그리기를원하는어떤것과디바이스컨텍스트를분리할필요가있다. 디바이스컨텍스트는단순한메모리라기보다는객체이다. 이등록정보를변경하면다양한특수효과를줄수도있다. 윈도우는디바이스컨텍스트를가지고직접작업하는것을허용하지않는다. 이를처리하기위해서는 API 함수를호출해야한다. 이때컨텍스트핸들에대한변수로 hdc 를사용
2 한다. 델파이는미리정의된디바이스컨텍스트의 wrapper 를제공한다. 이것이바로캔버스이다. 윈도우의디바이스컨텍스트의유형에는다음과같은 4 가지종류가있다. 1. 디스플레이 (Display) 보통윈도우나 TMemo 컨트롤과같이그릴수있는다른영역에부착되어있다. 이컨텍 스트에그리면항상정보가화면에전달된다. 디스플레이디바이스컨텍스트에는 Class, Common, Private 형의 3 가지종류가있다. 32 비트응용프로그램에서는항상 private 형을사용하면된다. 만약빨리그래프나차트를출력하고자할때에는 common 형을사 용할수있다. Common 디바이스컨텍스트를얻을때에는 GetDC 나 GetDCEx, BeginPaint 함수등을사용하면된다. 물론이때받은핸들은빨리사용하고반납해야한 다. Private 디바이스컨텍스트는실제로응용프로그램이소유하고있는컨텍스트이다. 이것의장점은윈도우에돌려주기전에마음대로그릴수있다는점이다. 캐드나그래픽 응용프로그램의경우에는이유형의디스플레이디바이스컨텍스트를사용한다. 2. 프린터 (Printer) 디스플레이디바이스컨텍스트와같이프린터디바이스컨텍스트에보내는것도당장인쇄 된다. 3. 메모리 (Memory) 디스플레이나프린터디바이스컨텍스트에보낼수있는것은메모리에도보낼수있다. 메모리디바이스컨텍스트는 CreateCompatibleDC 함수를사용하여만든다. 인쇄나지금디스플레이에나타낼때, 또는나중에출력할때메모리디바이스컨텍스트가사용되고있으며, 비트맵과같은것에도이디바이스컨텍스트유형을사용할수있다. 4. 정보 (Information) 이디바이스컨텍스트는디스플레이의경우에는그다지문제가되지않지만, 프린터의경우에는중요한역할을한다. 예를들어프린터에인쇄할컬러문서가있는경우, 프린터가컬러출력을지원하는지알면도움이될것이다. 만약흑백프린터의경우에는특별한디더링루틴을추가하는것이필요하다. 정보디바이스컨텍스트는 CreateIC 함수를이용하여만든다. 디바이스컨텍스트를만들었으면, GetCurrentObject 나 GetObject 함수를이용하여특정객체에대한정보를얻을수있다.
3 윈도우의그래픽객체 윈도우는 7 개의서로다른그래픽객체를가지고있다. 만들때사용되는기본객체이다. 이들객체에대해서알아보자. 이들은윈도우의다른객체들을 1. 비트맵 (Bitmap) 비트맵은특정유형의래스터그림이다. 예를들어아이콘과 PCX 파일은물론 BMP 파일도이범주에속한다. 비트맵객체는바이트단위의크기, 픽셀단위의차원, 컬러포맷, 압축스키마등의정보를가진다. 비트맵객체는자신의특정유형에기초한다른속성들도다향하게가지고있다. 2. 브러쉬 (Brush) 브러쉬색상을적용할때사용된다. 벽에칠을할때붓을사용하는것과같이윈도우는다각형이나패스와같은다른그래픽객체의내부를칠할때브러쉬를사용하고있다. 특정패턴으로내부를채우고자할때에는비트맵을브러쉬로사용할수도있다. 3. 팔레트 (Palette) 윈도우는풍부한색상을정의하여사용하는색상의집합인팔레트를사용한다. 그런데, 일부비디오카드는한번에 256 색상만나타낼수있다. 이것이하나이상의팔레트를사용하는이유로서로다른 256 색상이필요할때마다서로다른팔레트를사용하면깨끗하고견고한색상을화면에나타낼수있다. 4. 폰트 (Font) 글자를나타내는폰트역시마찬가지로그래픽객체이다. 야좋은어플리케이션을만들수있다. 적절한크기와서체를사용하여 5. 패스 (Path) 다각형이나호, 선, 그리고타원과같은그려진객체의특정유형을의미한다. 윈도우는수 많은서로다른패스에대한함수를가지고있으며, 이들은모두서로다른속성들을가지 고있다.
4 6. 펜 (Pen) 선을그리거나, 도형을그릴떄사용하는객체로라인의두께와스타일과같은것들을설정 하게된다. 7. 지역 (Region) 지역은디바이스컨텍스트에있는한영역의위치를나타낸다. 때때로캔버스전체가아니라일정영역에대해서만윈도우가작업하도록요청해야할때가있다. 지역객체는이와같은일을할수있게해주는역할을한다. 윈도우의그래픽모드 디바이스컨텍스트를사용할때에, 디바이스컨텍스트의유형을명시하면그래픽객체를담을컨테이너를정의하는셈이다. 그러면, 이객체들이어떻게작용할것인지를결정해야하는데, 이를결정하는것이그래픽모드이다. 그래픽모드는윈도우에게디바이스컨텍스트의컨테이너에있는객체들이서로어떻게동작할것인지를지정한다. 이들이동작하는방법은대개특정유형의함수를사용할때어떤종류의화면효과를얻을것인가를결정한다. 이는브러쉬를사용하여특정영역을채울때영향이크다. 윈도우의그래픽모드에는다음의 5 가지가있으며, 이들을동시에사용한다. 1. 배경 (Background) 윈도우가배경색을섞는방법을정의한다. 윈도우가한색상을다른색상을대치해야하는지, 또는두색상을합해서새로운색상을만들어야하는지를나타낸다. 텍스트와비트맵동작에있어서보통이모드를사용하게된다. 2. 드로잉 (Drawing) 이모드는전경색 (foreground color) 을같이섞는방법을윈도우에게알려주는역할을한다. 이모드는보통펜이나브러쉬, 텍스트, 그리고비트맵동작을사용할때사용된다. 3. 매핑 (Mapping) 매핑은윈도우에게크기조정을어떻게해결할것인지를알려주는역할을한다. 예를들어,
5 이론적으로가능한커다란공간을그래픽으로할때, 시스템에있는메모리공간에의해이를모두나타내게할수없을것이다. 프린터가디스플레이에이를어떻게보여줄것인가를결정하는역할을하는것이매핑이다. 4. 다각형채우기 (Polygon-Fill) 이모드는윈도우가다각형과다른도형을채우는방법을정의한다. 그릴때사용할도형의모양과브러쉬의크기를결정하는역할을한다. 본질적으로윈도우가 5. 스트레칭 (Stretching) 이미지를압축하면, 이미지의세세한내용의일부를잃어버리게된다. 이미지의질을가능 한많이유지하려면윈도우가색상들을섞는방법을알아야한다. 캔버스의공통적인프로퍼티와메소드 캔버스객체에서공통적으로사용하는프로퍼티를나열하면다음과같다. 프로퍼티 설 명 Font 이미지에텍스트를기록할때사용할폰트를지정한다. TFont 객체를설정한다. Brush 그래픽모양과배경을채울색깔과패턴을결정한다. TBrush 객체를설정한다. Pen 캔버스가그림을그릴때사용할라인의펜종류를결정한다. TPen 객체를설정한다. PenPos 펜의현재의위치를지정한다. Pixels 현재의 ClipRect 내의픽셀영역의색깔을지정한다. 캔버스객체에서사용하는메소드에는다음과같은것들이있다. 이들에대해서모두자세하게설명할수는없으므로, 간단히설명한다. 이중에서 CopyRect, Ellipase, RectAngle, MoveTo, TextOut, TextWidth, TextHeight 는이미 9 장에서사용한바있다. 메소드 설 명 Arc 지정된사각영역의타원을따라서호를그린다. Chord 타원이라인으로절단된닫힌그림을그린다. CopyRect 다른캔버스의영역에서이미지를복사한다. Draw 캔버스의 Graphic 파라미터로지정된그래픽객체를지정한위치에그린다. Ellipse 지정된사각영역을따라서타원을그린다. FillRect 지정된사각영역을현재의브러쉬로채운다.
6 FloodFill 캔버스전체영역을현재의브러쉬로채운다. FrameRect 캔버스의브러쉬를이용하여사각형을그린다. LineTo PenPos 의위치에서지정된위치까지라인을그린다. MoveTo 현재의위치를지정된위치로옮긴다. Pie 타원에서지정된사각영역으로경계된부분을파이형태로그린다. Polygon 파라미터로넘긴점들을연결하여다각형을만든다. 다. 처음점과마지막점이연결된 PolyLine 현재의펜으로 Points 에넘어온점들을서로연결한다. Rectangle 좌측상단점과우측하단점을대각선으로하는사각형을펜을이용해서그리고, 내부 를브러쉬로채운다. RoundRect 코너가둥근사각형을그린다. StretchDraw 캔버스에그린그래픽을지정된사각영역에맞춘다. 경우에따라서확대되거나상하 좌우비율이변경된다. TextHeight, TextWidth 각각현재폰트로문자열을쓸때의높이와폭을반환한다. 백이포함된다. 높이에는줄사이의여 TextOut 문자열을지정된위치에첫자부터출력한다. 끝부분의위치로업데이트된다. 그리고, PenPos 프로퍼티는문자열의 TextRect 영역안에문자열을기록한다. 영역바깥으로나가는문자열은보이지않게된다. 그래픽작업을할때에는드로잉 (drawing) 과페인팅 (painting) 이란용어를구별해서사용해야한다. 드로잉은특정그래픽요소를생성하는것이다. 예를들어, 라인이나특정형태를코드를이용해서그리는것이다. 보통앞에서설명한캔버스의드로잉메소드를호출해서사용한다. 이미지가저장되지않기때문에, 그내용의전부또는일부를잃을수있으며, 출력도이미지가저장되지않고, 어플리케이션은어떻게다시그리는지를알지못하므로변할수있다. 그에비해페인팅은객체전체의형태를생성하는것으로, 드로잉을포함한다. 즉, 어떤상황에서든어플리케이션이그전체화면을다시칠할수있도록하는것이다. 사실사용자가마우스버튼을누르거나다른어떤동작을취하면그위치와다른요소들을저장해야하고, 페인팅메소드에서이정보를실제로해당이미지를페인팅하기위해사용한다.. 스크린의리프레쉬 윈도우는스크린위의객체의형태가변경되거나, 리프레쉬할필요가있을때에는 WM_PAINT 메시지를생성해낸다. 이메시지는 VCL 에서 OnPaint 이벤트로표현된다. 그러므로, VCL 객체가 Refersh 메소드를호출하면언제나 OnPaint 이벤트가발생한다.
7 폼에서 Refresh 메소드를사용하면지정된형태로그래픽을다시그리게된다. 그러므로, 예를들어폼의 OnResize 이벤트핸들러에서폼의형태를변경하는코드를집어넣은경우에는 Refresh 메소드를호출해서변경된사항을반영하도록해야한다. 일부운영체제에서는윈도우의클라이언트영역의일부가무효화 (invalidated) 된경우자동으로그부분을그려주지만, 윈도우는그렇지않다. 윈도우운영체제에서는일단스크린에그려진것은영구적이다. 그러므로, 폼이나컨트롤이드래그등의작업에의해잠시가려지는경우폼이나컨트롤은반드시불명확해진영역을다시페인트해야한다. TImage 컨트롤을사용한다면, TImage 내부에있는그래픽의페인팅과 refreshing 은 VCL 에의해자동으로관리된다. 또한 TImage 에드로잉을한경우에는이것이지속적인 (persistent) 이미지이기때문에, 포함된이미지를다시그려줄필요도없다. 이와는반대로 TPaintBox 의캔버스는스크린디바이스에직접연결되어있기때문에, PaintBox 에그려진모든것은임시로저장된다. 대부분의경우 TPaintBox 와거의동일하다. 그러므로, TPaintBox 에그리거나페인팅을한경우에는 OnPaint 이벤트핸들러에클라이언트영역이무효화될때마다이를다시그려주는코드를추가할필요가있다. 그래픽이미지가어플리케이션에나타나는형태는그리는방법에따라틀리다. 만약 TBitmap 캔버스처럼오프스크린이미지를그리는경우에는컨트롤이컨트롤의캔버스에비트맵을복사하기전에는나타나지않는다. 그러므로, 비트맵을그리고이것을이미지컨트롤에대입하려면, 이미지는컨트롤이 OnPaint 메시지를처리할기회가있을때에보여줄수있다. 화면의 Refresh 와연관된메소드에는 Invalidate, Update, Refresh(Repaint) 의 3 가지가있다. 이들의특징은각각다음과같다. 1. Invalidate 메소드 이메소드는윈도우에게폼의전체표면이페인팅되어야한다는것을알려준다. 그런데, Invalidate 는페인팅동작을즉각강제하지않고윈도우가이요구사항을저장하고나서, 현재프로시저가완전히수행되고시스템에다른이벤트가남아있지않을경우에여기에반응하게된다. 때때로이지연시간때문에, 페인팅작업에여러변경이일어난후에야비로소폼이페인팅되는수가있다. 그렇기때문에, 느린페인트메소드가여러번호출되서수행속도를더욱느리게하는것을막을수있다. 2. Update 메소드 윈도우에게폼의내용을갱신할것인지를물어보아서그것을곧장페인팅하는메소드이다. 이메소드는무효영역 (invalidated area) 이있을경우에만동작한다. 그러므로, 이동작은 Invalidate 메소드가막호출되었을때일어나거나아니면사용자에의한동작의결과로서
8 일어날수있다. 만약무효영역이없다면아무런동작을하지않으므로, 보통 Invalidate 를호출한뒤에바로 Update 메소드를호출한다. 3. Refresh(Repaint) 메소드 Invalidate 와 Update 메소드를차례로호출한다. 를즉각동작시킨다. 그결과로이메소드는 OnPaint 이벤트 이메소드들은잘사용해야한다. 컨트롤을반복페이팅을요청해야할경우에는 Invalidate 를호출하는것이좋다. 이는윈도우가화면을갱신하는데너무많은시간을소비하면이호출들을한데모아서한번에처리할수도있기때문이다. 윈도우의 WM_PAINT 메시지는낮은우선순위메시지이기때문에, 이것이가능하고더효과적이다. 반면에, Refresh 를여러번호출했을경우에는윈도우가매번다른메시지만처리할수는없으니화면이다시그려져야하고, 페인팅작업이느리기때문에어플리케이션전체의성능을떨어뜨릴수있다. 그렇지만, 가능한빠르게화면을다시그려야하는때가있는데이런경우에는 Refresh 를호출하는것이좋다. 그래픽객체의종류 VCL 은다음과같은그래픽객체를제공한다. 객체설명 Picture Bitmap Clipboard 그래픽이미지를담을수있다. 만약에추가적인그래픽파일포맷을추가하려면 RegisterFileFormat 메소드를사용한다. 그래픽파일을보여준다. 이미지를생성, 관리, 저장하는데사용되는강력한그래픽객체어플리케이션에 cut, copy, paste 를지원하게될텍스트나그래픽에대한컨테이너를나타낸다. 적절한포맷관리, 참조계수관리등을한다. Icon 윈도우아이콘파일을다룬다. 이미지를다룰때실제픽셀로서구성되는것이아니라, 이미지를구성하기 Metafile 위한여러작업들을기록하는것이다. 메타파일은비트맵에비해메모리도 적게차지하고, 이미지손상이적은장점이있으나, 처리속도가느리다. 캔버스객체의프로퍼티활용 캔버스객체에서제공하는여러가지프로퍼티를설정하여사용하는방법에대해서알아보자. 펜을이용하여라인을그리고, 브러쉬를이용하여내부를채우며, 적절한폰트를골라서텍
9 스트를기록하는등의작업이캔버스객체의프로퍼티를활용하여이루어진다. 펜의활용 캔버스의 Pen 프로퍼티는라인의형태를결정한다. 선을긋는작업을궁극적으로생각해보면두개의점사이에있는픽셀의그룹을바꾸는것이다. 펜에대해서연상할때가장쉽게생각할수있는것은포토샵이나페이트샵프로와같은그래픽프로그램의도구상자에서여러가지모양의붓을선택해서선이나도형을그릴수있다는것이다. 펜을선택한다는것은이런그래픽프로그램에서붓을선택하는것과같은것이다. 펜자체에는변경해서사용할수있는프로퍼티가 4 가지가있다. Color, Width, Style, Mode 가그것인데이들프로퍼티의값들이펜의형태를결정하게된다. 디폴트로모든펜은검정색, 두께는 1 픽셀이고 solid 형을가지며, 모드는캔버스에있는어떤것이든덧씌워그리는 copy 모드로설정되어있다. 1. 펜색상의변경 펜의색상을변경하는것은다른여러가지컴포넌트의 Color 프로퍼티를런타임에서변경하는것과똑같다. 펜의색상은그려지는라인의색상을결정하게된다. 사용자에게펜에대한새로운색상을결정하게하려면, 보통컬러그리드를띄워서선택하게한다. 컬러그리드는 foreground 색상과 background 색상을결정할수있게구성되어있다. 이때 foreground 색상은보통펜의색상을나타내며, background 색상은브러쉬의색상을나타낸다고생각하면된다. 2. 펜의두께변경 펜의두께는그려지는라인의두께를픽셀단위로결정하는것이다. 펜의두께가 1 보다크면, 펜의 Style 프로퍼티값에관계없이윈도우 95 는언제나 solid 라인을그리게된다. 펜의두께를변경하려면펜의 Width 프로퍼티에정수값을대입하면된다. 3. 펜의스타일변경 펜의 Style 프로퍼티는선의종류를일반적인선 (solid), 점선 (dotted line), 대쉬 (dashed line) 등이있다. 모두 6 개의스타일이존재하는데이들은각각 pssolid, psdash, psdot, psdashdot, psdashdotdot, psclear 이다. 앞에서도설명했지만, 펜의두께가 1 픽셀을넘을경우이프로퍼티의값은무시된다.
10 4. 펜의모드변경 펜의모드프로퍼티는펜의색상과캔버스의색상을결합하는방법을결정하는것이다. 예 를들어, 펜은언제나검정색이게할수도있고, 캔버스의배경색의보색으로보이게할수 도있고, 펜색상의보색으로보이게할수도있다. 5. 펜의위치얻기 펜이다음라인을그릴때시작점이되는위치를펜의위치 (position) 라고한다. 캔버스는펜의위치를 PenPos 프로퍼티에저장한다. 펜의위치는라인을그릴때에만영향을미친다. 그러므로, 다른도형이나텍스트를그리는경우에는그리려는위치를좌표로전달해야한다. 펜의위치를설정할때에는 MoveTo 메소드를사용한다. 예를들어, 다음의코드는펜의위치를캔버스의좌측상단으로이동한다. Canvas.MoveTo(0, 0); LineTo 메소드로라인을그릴때, 라인의끝점으로현재의위치를이동시킨다. 브러쉬의활용 캔버스컨트롤의 Brush 프로퍼티는도형의내부를채우는방법을결정한다. 브러쉬객체에는 Color, Style, Bitmap 의 3 개의프로퍼티를이용해서여러가지작업을하게된다. 이들프로퍼티의디폴트값은백색, solid 스타일, 패턴은없는것이다. 1. 브러쉬색상의변경 브러쉬의 Color 프로퍼티는영역의내부를채울색상을결정한다. 보통브러쉬는배경색을 결정하는것으로이해하면된다. 2. 브러쉬스타일의변경 브러쉬스타일은캔버스에채우는방법을결정한다. 스타일에따라브러쉬색상과캔버스의색상을결합하는방법을결정한다. 미리지정된스타일에는 solid, clear 와여러가지라인과해치패턴등을결정할수있다. Style 프로퍼티에는 bssolid, bsclear, bshorizontal, bsvertical, bsfdiagonal, bsbdiagonal, bscross, bsdiagcross 등의값들이있다.
11 3. 브러쉬비트맵프로퍼티의설정 브러쉬의 Bitmap 프로퍼티는브러쉬가여기에지정된비트맵을패턴으로사용하여영역을 채우게된다. 다음의코드는비트맵을파일에서로드하여, 이를브러쉬의패턴으로사용하 는예이다. var Bitmap: TBitmap; Bitmap := TBitmap.Create; try Bitmap.LoadFromFile('MyBitmap.bmp'); Form1.Canvas.Brush.Bitmap := Bitmap; Form1.Canvas.FillRect(Rect(0, 0, 100, 100)); finally Form1.Canvas.Brush.Bitmap := nil; Bitmap.Free; 참고 : 브러쉬비트맵 브러쉬의비트맵은 8x8 픽셀의비트맵패턴이어야한다. 브러쉬에비트맵을사용하기위해서는우선비트맵을생성하고, 이것을지정하여사용한후, 모든작업이완료되었으면이를해제시켜주어야한다. 그래픽객체그리기 라인그리기 캔버스에서그릴수있는라인은일반적인라인과폴리라인 (polyline) 이있다. 라인은두개의점을이어주는픽셀들이다. 폴리라인은라인이서로연결된것으로, 이들을그릴때에캔버스는펜을이용하게된다. 1. 라인그리기
12 캔버스에서라인을그리려면, LineTo 메소드를사용한다. LineTo 메소드는현재의위치에서지정한좌표까지현재의펜으로라인을그린다. 그리고, 현재위치가끝점으로이동하게된다. 예를들어, 다음의코드는폼이그려질때폼에라인으로 X 자를그리게된다. procedure TForm1.FormPaint(Sender: TObject); with Canvas do MoveTo(0, 0); LineTo(ClientWidth, ClientHeight); MoveTo(0, ClientHeight); LineTo(ClientWidth, 0); 2. 폴리라인그리기 폴리라인을캔버스에드리려면 PolyLine 메소드를사용한다. PolyLine 메소드에서사용하는파라미터는 Point 의배열이다. PolyLine 은기능적으로는 MoveTo 와 LineTo 메소드를계속해서호출하는것과같지만호출에따른오버헤드가없기때문에수행속도가빠르다. 도형그리기 캔버스에는여러가지종류의도형을그리는메소드가있다. 으로그리고, 내부는브러쉬로채운다. 캔버스는도형의외곽선은펜 1. 사각형과타원그리기 캔버스에사각형과타원을그리기위해서는 Rectangle, Ellipse 메소드를사용하면된다. 이두메소드모두좌표로는경계가되는 4 개의좌표를사용한다. Rectangle 메소드는넘어온 4 개의좌표를연결한사각형을그리며, Ellipse 메소드는사각형내를채우는타원을그린다. 다음의코드는좌측상단의 1/4 영역에사각형을그리고, 내부에타원을그린다.
13 procedure TForm1.FormPaint(Sender: TObject); Canvas.Rectangle(0, 0, ClientWidth div 2, ClientHeight div 2); Canvas.Ellipse(0, 0, ClientWidth div 2, ClientHeight div 2); 이코드를실행하면다음과같은실행화면을볼수있다. 2. 끝이둥근사각형그리기 끝이둥근사각형을그릴때에는 RoundRect 메소드를사용한다. RoundRect 메소드의 4 개의파라미터는다른메소드와마찬가지로사각형의좌표를나타내며, 이밖에도둥근코너를어떻게그릴지를나타내는 2 개의파라미터를추가로가진다. 다음의메소드는폼의좌측상단 1/4 영역에 10 픽셀의지름의원형코너를가진끝이둥근사각형을그리게된다. procedure TForm1.FormPaint(Sender: TObject); Canvas.RoundRect(0, 0, ClientWidth div 2, ClientHeight div 2, 10, 10); 3. 다각형그리기 다각형을그리기위해서는 Polygon 메소드를사용하면된다. 의배열을사용하며, 이들의점이꼭지점이된다. 다각형은파라미터로 Point
14 그래픽컨트롤사용하기 어플리케이션에그래픽객체를다루기위해서특별히다른컴포넌트를사용할필요는없다. 그렇지만, 사실상폼에직접드로잉을하는경우는거의없다. 그보다는보통 VCL 이미지컨트롤을이용해서그래픽을보여주는경우가많다. 이미지컨트롤은비트맵객체를디스플레이할수있는컨테이너컴포넌트이다. 이렇게이미지컨트롤을사용하면인쇄, 클립보드, 그래픽객체읽기와저장등의편리한기능을이용할수있다. 그래픽객체는비트맵파일, 메타파일, 아이콘등의여러가지그래픽클래스일수있다. 스크롤가능한그래픽만들기 그래픽의크기는폼과같은크기일필요는없다. 그래픽의종류에따라서는폼보다더크거나작을수있다. 이럴때스크롤박스컨트롤 (TScrollBox) 을폼에추가하고, 그래픽이미지를그안에위치시키면그래픽이폼보다훨씬커도 ( 스크린전체보다커도 ) 스크롤박스의기능을통해전체를볼수있다. 초기비트맵크기설정 이미지컨트롤을폼위에올려놓으면, 처음에는단순한컨테이너이다. 실제로그래픽을사용하려면 Picture 프로퍼티를설정해주어야한다. 그런데, 처음에비트맵을보여주지않더라도, 자리를차지한컨트롤이보이지않으면보기가무척싫을것이다. 이를피하기위해서는폼의 OnCreate 이벤트핸들러에비트맵객체를생성해서 Picture.Graphic 프로퍼티에대입하면된다. 다음은어플리케이션의폼에초기비트맵의크기를설정해서대입하는코드이다. procedure TForm1.FormCreate(Sender: TObject); var Bitmap: TBitmap; Bitmap := TBitmap.Create; Bitmap.Width := Image1.Width; Bitmap.Height := Image1.Height; Image1.Picture.Graphic := Bitmap;
15 비트맵을 Picture.Graphic 프로퍼티에대입하면, Picture 객체가비트맵의 Owner 가된다. 그러므로, Picture 객체가파괴되면, 비트맵객체도자동을파괴된다. 어플리케이션을실행 하면폼의클라이언트영역에비트맵이하얀색으로자리를차지하고있을것이다. 그래픽파일의읽기와쓰기 그래픽이미지는어플리케이션이실행되는동안에만존재한다. 그렇기때문에, 이를파일로저장하고, 불러오는것은필수적인부분이다. 그래픽이미지컨트롤도일반적인다른 VCL 컴포넌트와마찬가지로이미지를파일로저장하고, 읽어올수있다. 또한, 이미지컨트롤은설치가능한그래픽클래스를지원한다. 파일에서그림읽어오기 이미지컨트롤에그래픽을로드하려면 Picture 객체의 LoadFromFile 메소드를이용하면된다. 9 장의그래픽인쇄루틴에서이미한번소개한바있으므로이해가어렵지는않을것이다. 다음의코드는 OpenDialog 컴포넌트를이용해서그림파일을이미지컨트롤에불러오는예이다. procedure TForm1.Open1Click(Sender: TObject); if OpenDialog1.Execute then CurrentFile := OpenDialog1.FileName; Image.Picture.LoadFromFile(CurrentFile); 그림을파일로저장하기 VCL 그림객체는몇가지포맷의그래픽을읽고, 쓸수있다. 그리고, 자신만의그래픽파일포맷을생성하고, 등록시킬수있다. 이미지컨트롤의내용을파일에저장하려면 Picture 객체의 SaveToFile 메소드를이용하면된다. 다음의이벤트핸들러는 File Save, File Save As 메뉴를선택했을때사용할만한코드이다. 참고로하면, 쓸모가있을것이다. 이때 CurrentFile 변수는문자열형의전역변수로선언해서사용하면된다.
16 procedure TForm1.Save1Click(Sender: TObject); if CurrentFile <> '' then Image.Picture.SaveToFile(CurrentFile) else SaveAs1Click(Sender); procedure TForm1.SaveAs1Click(Sender: TObject); if SaveDialog1.Execute then CurrentFile := SaveDialog1.FileName; Save1Click(Sender); 그래픽에클립보드이용하기 이미지컨트롤을이용해서윈도우클립보드에 cut, copy, paste 기능을이용하려면 VCL 의클립보드객체를사용하면된다. VCL 클립보드객체를사용하려면사용하려는유닛의 uses 절에 Clipbrd.pas 유닛을추가하여야한다. 클립보드에그래픽복사, 잘라넣기 (copy and cut) 그림을클립보드에복사하려면, Picture 객체를클립보드객체로 Assign 메소드를사용해서대입하면된다. 그래픽을클립보드에잘라넣는것도복사하는것과비슷한방법을사용하지만, 소스에서그래픽을삭제하게된다. 그래픽을클립보드에잘라넣으려면, 먼저클립보드로복사를하고원래의내용을삭제하면된다. 삭제한이미지를어떻게보여줄것인가하는것도비교적중요한점이다. 흔히사용하는방법으로는지워진영역을하얗게표시하는방법이다. 다음의코드는클립보드로복사하기와잘라내기를메뉴에서선택했을때쓸수있는코드이다. procedure TForm1.Copy1Click(Sender: TObject); Clipboard.Assign(Image1.Picture);
17 procedure TForm1.Cut1Click(Sender: TObject); var ARect: TRect; Copy1Click(Sender); { 클립보드로일단복사한다.} with Image1.Canvas do CopyMode := cmwhiteness; { 복사모드를하얗게설정 } ARect := Rect(0, 0, Image1.Width, Image1.Height); { 비트맵크기를설정 } CopyRect(ARect, Image1.Canvas, ARect); { 비트맵을복사해넣는다.} CopyMode := cmsrccopy; { 원래의복사모드로복구 } 클립보드에서그래픽붙여넣기 (Paste) 윈도우클립보드에비트맵그래픽이담겨있으면, 이를이미지객체에붙여넣을수있다. 이를위해서는먼저클립보드의 HasFormat 메소드를호출하여클립보드가그래픽을가지고있는지를확인한다. HasFormat 메소드는 Boolean 값을반환하는데, 지정한데이터형이클립보드에담겨있으면 True 를반환한다. 비트맵이있는지확인하려면파라미터로 CF_BITMAP 를넘겨주면된다. 비트맵이있으면클립보드에서대입하면된다. 다음의코드는붙여넣기를구현한예제코드이다. procedure TForm1.PasteButtonClick(Sender: TObject); var Bitmap: TBitmap; if Clipboard.HasFormat(CF_BITMAP) then Image.Picture.Bitmap.Assign(Clipboard);
18 어플리케이션에드로잉객체이용하기 앞에서설명한다양한드로잉메소드는툴바나버튼패널에서도사용할수있다. 어플리케이션에그래픽을잘사용하면프로그램이화려하며고급스럽게보이게할수있지만, 너무많은색이나너무많은그래픽을사용할경우에는오히려비생산적이될수도있다. 그러므로, 적당한수준에서드로잉객체를잘사용하는것이좋은어플리케이션을만드는데상당히중요한역할을하는것이다. DIBs(Device Independent Bitmaps) 의지원 델파이는델파이 3 버전부터 TBitmap 객체에비트맵비트에대한포인터를프로퍼티로제공하기시작했다. 델파이 2 까지는 DDBs(Device Dependent Bitmaps) 를사용했으나, 델파이 3 부터 DIBs 를지원하게된것이다. DIB 비트에대한포인터를얻으려면 Bitmap.DibMemory 프로퍼티에접근하기만하면된다. 다음의코드는첫번째스캔라인의픽셀들을팔레트의첫번째색상을변경한다. 이코드는 256 색상의비트맵팔레트를기준으로작성되었기때문에, 다른형태의비트맵에는동작하지않을수있다. type TByteArray = array[0..0] of Byte; procedure TForm1.Button1Click(Sender: TObject); var p: ^TByteArray; i: Integer; Image1.Picture.LoadFromFile(c:\Windows\ 구름.bmp ); p := Image1.Picture.Bitmap.DibMemory; for i := 0 to (Image1.Picture.Bitmap.Width 1) do p^[i] := 0; 이코드를살펴보면, 바이트형의배열을선언하고여기에대한포인터변수 p 를선언한 다. 그리고, 비트맵을디스크에서읽어온후, DibMemoey 에대한포인터를변수 p 에대입 하고, DIB 메모리의첫번째스캔라인의색상을 DIB 팔레트의첫번째색상으로바꾼다.
19 라인을마음대로그리자! 지금까지설명한내용을바탕으로간단하게라인을그어주는어플리케이션을하나만들어보자. 제작할어플리케이션은사용자가마우스를움직이면이를따라런타임에서라인을그리는간단한드로잉프로그램이다. 이어플리케이션은마우스로클릭하고드래그를하면윈도우의캔버스에라인을그린다. 마우스버튼을누르면그리기가시작되고, 버튼을떼면그리기가완료된다. 마우스에반응하기 어플리케이션에서사용하는마우스의동작에는버튼을누르고 (MouseDown), 마우스를움직 이고 (MouseMove), 버튼을떼는 (MouseUp) 동작과클릭 (Click) 이있다. 1. 마우스이벤트의종류 VCL 에는 OnMouseDown, OnMouseMove, OnMouseUp 의 3 가지마우스이벤트가있다. VCL 어플리케이션이마우스의동작을감지하면해당되는이벤트핸들러를호출하게되는 데, 이들이벤트는모두 5 개의파라미터를사용한다. 이들파라미터의내용은다음과같다. 파라미터의미 Sender 마우스의동작을감지한객체 Button 어떤버튼의동작인가? mbleft, mbmiddle, mbright 중의하나이다. Shift Alt, Ctrl, Shift 키가눌렸는가? X, Y 이벤트가발생한좌표 2. MouseDown 이벤트의처리 사용자가마우스의버튼을누를때마다 OnMouseDown 이벤트가발생한다. 참고로라인을 긋는경우를생각해보자. 이때마우스버튼을누르면, 펜의위치가이동하도록해야한다. 그러므로다음과유사한이벤트핸들러를작성하여야할것이다. procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Canvas.MoveTo(X, Y);
20 3. MouseUp 이벤트의처리 OnMouseUp 이벤트는사용자가마우스버튼을뗄때발생하게된다. 이때이이벤트는마우스를누른컨트롤에발생하기때문에, 커서의위치가컨트롤의범위를벗어나더라도이를처리할수있다. 그러므로, 라인을폼의범위를벗어난경우에도처리를할수있다. 어쨌든앞에서의 MouseDown 이벤트에이어서라인을긋도록하려면, OnMouseUp 이벤트핸들러를다음과같이작성하면된다. procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Canvas.LineTo(X, Y); 이렇게함으로써사용자는마우스버튼을클릭하고드래그한후, 이를놓으면라인을그릴 수있게된다. 4. MouseMove 이벤트의처리 OnMouseMove 이벤트는사용자가마우스를움직일때마다주기적으로발생한다. 다음의 예제코드는사용자가마우스버튼을누른채로마우스를움직일때라인을그려주게된다. procedure TForm1.FormMouseMove(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Canvas.LineTo(X, Y); 마우스동작의기록 드로잉어플리케이션을작성하기위해서는마우스의동작을감시하는것이필요하다. 이를위해서는폼객체에여기에대한객체필드를추가하는것이좋다. 다음의코드는마우스버튼의동작을기록하기위해, 마우스버튼이눌려있는지여부를기록하는 Drawing 이라는 Boolean 필드를추가하였다. 또한, 마우스의위치를기록하기위해서 TPoint 형의 Orgin, MovePT 필드도사용한다.
21 참고 : TPoint 데이터형 TPoint 데이터형은 X 와 Y 의값을포인트 (Point) 라고불리는하나의레코드에저장한것이다. 포인트를생성하는가장쉬운방법은 Point 함수를사용하는것이다. Point 함수는 X 와 Y 의값을받아들여 TPoint 라는레코드를반환하게된다. type TForm1 = class(tform) procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormMouseMove(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); public Drawing: Boolean; // 마우스버튼이눌렸는지여부를기록한다. Origin, MovePt: TPoint; // 포인트를기록하는필드 사용자가마우스버튼을누르면 Drawing 필드를 True 로, 버튼을떼면 False 로설정한다. procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Drawing := True; Canvas.MoveTo(X, Y); procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Canvas.LineTo(X, Y); Drawing := False;
22 OnMouseMove 이벤트핸들러는 Drawing 프로퍼티가 True 일때에만동작하도록수정한 다. procedure TForm1.FormMouseMove(Sender: TObject;Button: TMouseButton; Shift: TShiftState; X, Y: Integer); if Drawing then //Drawing 플래그가설정되었을때만그린다. Canvas.LineTo(X, Y); 이렇게하면, 마우스버튼을누르고뗄때까지계속해서라인을이어서그리게된다. 마우스포인트의추적 라인을그릴때, Origin 필드에는 MouseDown 이벤트가발생한위치를기록하고이를이용 해서 MouseUp 이벤트에서라인을그려주면, 마우스를눌렀다가뗄때하나의라인이그려 질것이다. 다음과같이구현하면된다. procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Drawing := True; Canvas.MoveTo(X, Y); Origin := Point(X, Y); procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Canvas.MoveTo(Origin.X, Origin.Y); Canvas.LineTo(X, Y); Drawing := False; 이렇게하면라인을제대로그릴수있게되지만, 마우스를움직일때의라인을볼수가없 다. 이를위해서는마우스의움직임을점검해서적절한조치를취할필요가있다.
23 마우스움직임의추적 현재의 OnMouseMove 이벤트핸들러는마지막마우스의위치를따라서라인을그리기때문에문제가있다. 이를해결하기위해서는라인을그리는위치를 origin 포인트로옮길필요가있다. procedure TForm1.FormMouseMove(Sender: TObject;Button: TMouseButton; Shift: TShiftState; X, Y: Integer); if Drawing then Canvas.MoveTo(Origin.X, Origin.Y); // 펜을시작포인트로이동 Canvas.LineTo(X, Y); 이렇게하면, 현재의마우스위치를따라서라인을그리게되지만, 계속라인을겹쳐서그리기때문에제대로볼수가없다. 그러므로, 이를시정하기위해서는다음라인을그리기전에원래의라인을지워야한다. 이를위해서는이전에사용한점의위치를알아야하는데, 이를저장하기위해 MovePt 필드를사용한다. MovePt 필드는각각의중간라인의끝점으로설정되며, Origin 과 MovePt 를연결하는라인을다음과같이그리면이전의라인을지우게된다. procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Drawing := True; Canvas.MoveTo(X, Y); Origin := Point(X, Y); MovePt := Point(X, Y); procedure TForm1.FormMouseMove(Sender: TObject;Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
24 if Drawing then Canvas.Pen.Mode := pmnotxor; Canvas.MoveTo(Origin.X, Origin.Y); // 그리고, 지우기위해서 XOR 모드를사용 // 펜의위치를 origin 으로 Canvas.LineTo(MovePt.X, MovePt.Y); // 이전라인을지운다. Canvas.MoveTo(Origin.X, Origin.Y); // 펜의위치를 origin 으로 Canvas.LineTo(X, Y); // 새로운라인을그린다. MovePt := Point(X, Y); // 현재위치를기록한다. Canvas.Pen.Mode := pmcopy; 펜의모드를 pmnotxor 로선택하면, 라인이배경색과결합되어나타나게된다. 라인을지우기위해서는현재라인이그려진위치에라인을그리면된다. 그리고나면, 펜의모드를 pmcopy( 디폴트값 ) 로바꾼다. 이제완성이되었다. 특별히펜의스타일이나색상등을정하지않고디폴트값을사용하였으므로, 멋도없는매우단순한어플리케이션이지만기본적으로마우스를사용한드로잉프로그램을제작하는방법에대해서는익혔을것으로믿는다. 이어플리케이션을실행하고라인을마음대로그려보자. 그러면다음과같은형태의실행화면을얻을수있을것이다.
25 스크린캡쳐어플리케이션의제작 이번에는간단한스크린캡쳐어플리케이션을제작해보자. 이번어플리케이션에서배울점은 DC 에대한개념과비트맵을처리할때많이사용되는 API 함수를익히는것이다. 먼저폼을다음과같이디자인한다. 캡쳐프로그램의폼은그다지화려하지않아도되고, 어차피캡쳐를할때폼이숨겨져야하므로단순하게디자인한다. 캡쳐한파일을저장해야하므로, TSaveDialog 컴포넌트를하나추가한다. 그리고, DefaultExt 프로퍼티를.bmp, Filter 프로퍼티를 *.bmp *.bmp 로설정하자. 캡쳐할이미지를저장할 TImage 변수를다음과같이전역변수로선언한다. var Form1: TForm1; CaptureImage: TImage; 그러면, 실제로캡쳐를수행하는프로시저를작성해보자. 시저를 private 섹션에선언한다. 다음과같이 Capture 라는프로
26 private procedure Capture; 그러면, Capture 프로시저를실제로구현해보자. 스크린전체를캡쳐하는프로시저는다음 과같이구현할수있다. procedure TForm1.Capture; var DC, DCBuffer, Buffer: hdc; x, y: integer; Hide; Sleep(200); DC := CreateDC('DISPLAY', nil, nil, nil); x:= Screen.Width; Y:= Screen.Height; DCBuffer := CreateCompatibleDC(DC); Buffer := CreateCompatibleBitmap(DC, x, y); SelectObject(DCBuffer, Buffer); BitBlt(DCBuffer, 0, 0, x, y, DC, 0, 0, SRCCOPY); BitBlt(CaptureImage.Canvas.Handle, 0, 0, CaptureImage.Width, CaptureImage.Height, DCBuffer, 0, 0, SRCCOPY); DeleteDC(DCBuffer); DeleteDC(DC); CaptureImage.Refresh; Show; 지역변수로선언한 DC 는디스플레이객체의디바이스컨텍스트를저장한다. 그리고, DCBuffer 에는 DC 에대한메모리디바이스컨텍스트를생성해서대입하며, 실제비트맵에대한디바이스컨텍스트는 Buffer 변수에저장된다. x, y 는캡쳐할화면의크기를담는변수로쓰인다. 먼저 Hide 를호출하여폼을숨긴다. 그이후에 Sleep(200) 을호출한이유는폼을숨기는데약간의시간을벌어주기위한것이다. 필자가테스트한바로는바로캡쳐를시도할경우폼이숨겨지는모양이그대로캡쳐되어버린다. 그다음라인에서는사용할디바이스
27 컨텍스트를생성한다. CreateDC 함수는지정된이름의디바이스컨텍스트를생성한다. 여기서는화면에보여주는비트맵이므로 DISPLAY 로설정하여디스플레이디바이스컨텍스트를선택한다. 디바이스컨텍스트에대한자세한내용은이장의앞부분에잘정리해놓았으므로, 이를참고하기바란다. 그다음에는캡쳐할이미지의크기를스크린전체크기로설정하고, DCBuffer 와 Buffer 변수의값을설정한다. CreateCompatibleDC 함수는지정된디바이스에대한메모리디바이스컨텍스트를생성하는함수이다. 비트맵을선택하면, 디바이스컨텍스트는스크린으로복사되거나인쇄될이미지를준비하는데사용된다. CreateCompatibleDC 함수는래스터작업을지원하는장치에서만사용될수있다. 디스플레이 DC 는보존성이없기때문에, 이를통해출력한것은다른윈도우가그위치를덮어씌우기만해도문제가생길수밖에없다. 이렇게하면윈도우의특성상좋지않은것은당연하다. 이를막기위해서는디스플레이 DC 의내용을계속간직하고있을보존성이있는 DC 가필요하게되는데, 이런것이있다면디스플레이 DC 의내용을여기에보관했다가필요할때다시그려주면될것이다. 이때사용하는것이 CreateCompatibleDC 함수를이용해서생성하는메모리 DC 이다. 메모리 DC 의용도로는이미지를반복적으로사용할때와비트연산을하고자할때를들수있다. 메모리 DC 는경우에따라서빠르게생성해서사용할수있고, 저장도어느정도가능하기때문에장점이많지만, 메모리를소모한다는단점을가지고있다. 별것아닌것같지만디스플레이에필요한메모리가워낙크기때문에, 사용을남발하는것은절대로삼가해야하며, 사용한뒤에는반드시 DeleteDC 를호출하여꼭해제를해주어야한다. Buffer 변수에값을대입하기위해서사용하는 CreateCompatibleBitmap 함수는지정된디바이스컨텍스트의장치와호환되는비트맵을생성한다. 이함수에의해생성되는비트맵의컬러포맷은파라미터에지정된디바이스의컬러포맷과일치한다. 이비트맵은디바이스와호환되는메모리디바이스컨텍스트에선택되어사용되는경우가많다. 메모리디바이스컨텍스트는컬러와모노비트맵을모두허용하기때문에, 디바이스컨텍스트로메모리디바이스컨텍스트가지정될경우, CreateCompatibleBitmap 함수에의해반환되는비트맵의포맷은다를수있다. CreateCompatibleBitmap 함수의두번째와세번째파라미터는비트맵의크기를지정한다. 여기서는스크린의크기를지정한다. 그다음에는 SelectObject 함수를이용해서지정된디바이스컨텍스트에사용할그래픽객체를선택한다. 여기서는비트맵객체인 Buffer 를선택해야한다. 이제가장중요한 BitBlt 함수의사용법을익힐차례이다. BitBlt 함수에의해서실제로비트맵에그림을대입하게된다. BitBlt 함수는지정된소스디바이스컨텍스트에서목적디바이스컨텍스트로해당되는픽셀들의컬러데이터를전송하게된다. 이때스트레치 (stretch), 압축 (compress), 회전 (ratate) 등의변형을할수가있다. 소스와목적디바이스컨텍스트의컬러포맷이맞지않으면, 소스컬러포맷을목적포맷에맞추어변환을한다. 우리가사용한두가지디바이스컨텍스트는서로호환되도록설정하였으므로컬러포맷의
28 문제는없다. BitBlt 함수는파라미터가모두 9 개로무척많은데, 사실그내용을보면그다지어렵지않다. 첫번째파라미터에는목적디바이스컨텍스트의핸들을지정하며, 2~5 번째파라미터는목적디바이스컨텍스트에복사할영역의 4 군데좌표를설정한다. 6 번째파라미터는소스디바이스컨텍스트의핸들을지정하면되고, 7~8 번째파라미터는소스디바이스컨텍스트의좌측상단꼭지점의좌표를설정한다. 마지막으로 9 번째파라미터에는레스터작업의코드를지정한다. 여기서가장중요한것은마지막파라미터인데지우거나, 복사, 반전등의여러가지효과를지정할수있다. Capture 프로시저에사용한 BitBlt 함수의역할은디바이스컨텍스트인디스플레이장치의전체스크린영역을일단메모리디바이스컨텍스트로복사한후, 이를다시 CaptureImage 이미지컴포넌트의캔버스로복사하는것이다. 이때에는 SRCCOPY 를사용하여소스영역의내용을직접목적영역으로복사한다. 이것으로캡쳐작업이완료된다. 레스터작업코드는여러가지로사용되기때문에, 익혀두면많은도움이된다. 이를다음에정리하였으므로, 참고하기바란다. 값 설 명 BLACKNESS 목적영역을물리적팔레트의인덱스 0 인색상 ( 보통검은색 ) 으로채운다. DSTINVERT 목적영역을반전한다. MERGECOPY 소스영역의색상을 AND 연산을통해지정된패턴으로색상을합친다. MERGEPAINT 반전된소스영역의색상을목적영역의색상과 OR 연산을통해합친다. NOTSRCCOPY 소스영역을목적영역으로반전하여복사한다. NOTSRCERASE 소스와목적영역의색상을 OR 연산을해서합친후, 이를반전한다. PATCOPY 지정된패턴으로목적비트맵에복사한다. PATINVERT 지정된패턴의색상과목적영역의색상을 XOR 연산으로합친다. PATPAINT 소스영역의반전된색상과패턴의색상을 OR 연산을하고, 이를다시목적영역 의색상과 OR 연산을한다. SRCAND 소스와목적영역의색상을 AND 연산한다. SRCCOPY 소스영역의내용을목적영역으로직접복사한다. SRCERASE 목적영역의반전된색상과소스영역의색상을 AND 연산한다. SRCINVERT 소스와목적영역의색상을 XOR 연산한다. SRCPAINT 소스와목적영역의색상을 OR 연산한다. WHITENESS 목적영역을물리적팔레트의인덱스 1 인색상 ( 보통흰색 ) 으로채운다. 그러면, 이제폼의 OnCreate 이벤트핸들러에서이미지컴포넌트를생성하고, 프로퍼티를지정한다. 그리고, Capture 함수를호출하여일단스크린을 CaptureImage 변수에캡쳐한다.
29 procedure TForm1.FormCreate(Sender: TObject); CaptureImage := TImage.Create(Self); CaptureImage.Left := 0; CaptureImage.Top := 0; CaptureImage.Width:=Screen.Width; CaptureImage.Height:=Screen.Height; Capture; Button1 과 Button2 의이벤트핸들러를다음과같이작성하여캡쳐를하고, 캡쳐한이미지 를저장할수있도록한다. procedure TForm1.Button1Click(Sender: TObject); Capture; procedure TForm1.Button2Click(Sender: TObject); if SaveDialog1.Execute then CaptureImage.Picture.Bitmap.SaveToFile(SaveDialog1.FileName); 지역 (Region) 이란? 지역은상상할수있는모든형태의모양을클립핑영역으로설정할수있도록허용한다. 이를이용하면그리게되는모든것들이그영역에클리핑되거나마스크되게할수있다. 여기에대해서는델파이자체가지원하는메소드는없다. 그러므로, 이를사용하기위해서는 GDI 를직접사용해야한다. 지역을사용하는예제를간단하게하나만들어보자. 폼에버튼을하나얹고, Caption 을 실행 으로설정한뒤 OnClick 이벤트핸들러를다음과같이작성한다. procedure TForm1.Button1Click(Sender: TObject); var
30 NewRgn, OldRgn: hrgn; NewRgn := CreateEllipticRgn(0, 0, 100, 100); OldRgn := SelectObject(Canvas.Handle, NewRgn); PatBlt(Canvas.Handle, 0, 0, Width, Height, BLACKNESS); SelectObject(Canvas.Handle, OldRgn); DeleteObject(NewRgn); 지역을사용하기위해서는일단 2 개의지역을지정할수있는핸들을저장할변수를선언한후 CreateEllipticRgn 함수를실행하여동그란형태의지역을 NewRgn 변수에저장한다. 그리고, SelectObejct 함수로 NewRgn 지역객체를선택한다. 이때 SelectObject 객체는이전의지역객체를반환하므로, 이를저장해두었다가나중에지역을복구할때사용한다. PatBlt 함수는주어진사각영역에현재선택된브러쉬를이용해서칠하는함수로, 칠하는방법을마지막파라미터에지정하도록되어있다. 여기서는 BLACKNESS 를지정하여까맣게칠하도록하였다. 그다음에는원래의지역을복구하고, 지역객체를해제하면끝난다. 이어플리케이션을실행하면분명히 PatBlt 로사각형영역을칠하도록했지만, NewRgn 이동그란영역으로지정되었으므로다음과같이동그랗게칠해진다. 매핑모드 (Mapping Modes) 일반적으로윈도우의기본적인매핑모드는 MM_TEXT 를사용한다. 이모드에서는모든드로잉좌표가좌상측에서우하로내려올수록 X, Y 가 1 픽셀씩증가한다. 즉, 좌상꼭지점을 (0, 0) 으로하여우하로내려오면양의값으로증가하는것이다. 윈도우에는이모드말고도여러가지매핑에대한모드가존재하는데, 여기에는다음과같은것들이있다. 모드 설명
31 MM_TEXT 1 픽셀단위로, y 가증가할수록아래로내려온다. MM_LOMETRIC 0.1mm 단위로, y 가증가할수록위로올라간다. MM_HIMETRIC 0.01mm 단위로, y 가증가할수록위로올라간다. MM_LOENGLISH 0.01 인치단위로, y 가증가할수록위로올라간다. MM_HIENGLISH 인치단위로, y 가증가할수록위로올라간다. MM_TWIPS 1/20 포인트 (1/1440 인치 ) 단위로, y 가증가할수록위로올라간다. MM_ISOTROPIC SetWindowExtEx 와 SetViewportExtEx 함수를이용하여단위와축의방향을결 정한다. 그런데, x 와 y 의단위는같은크기이다. MM_ANISOTROPIC MM_ISOTROPIC 과거의동일하지만, x 와 y 의단위크기가다를수있다. 매핑모드를사용할때에는이들의변형을위해서몇가지함수를사용할수있다. 이들함수는과거의설정을반환하므로이를임시변수에저장했다가, 사용이끝나면다시복구시켜주는것이좋다. 가장흔히사용되는함수로는다음과같은것들이있다. 1. SetMapMode: 매핑모드를결정한다. 2. SetWindowOrgEx: (0, 0) 이위치할좌표를설정한다. 3. SetWindowExtEx: 논리적단위를결정한다. 4. SetViewportExtEx: 논리적단위가매핑할유닛의디바이스크기를결정한다. 간단한예제를하나만들어보자. 폼에버튼을 2 개얹고각각의캡션을 LOMETRIC, ANISOTROPIC 으로설정한다. 버튼의캡션에서도추측할수있겠지만, Button1 은 MM_LOMETRIC 모드를, Button2 는 MM_ANISOTROPIC 모드를사용한다. 먼저 Button1 의 OnClick 이벤트핸들러를다음과같이작성한다. procedure TForm1.Button1Click(Sender: TObject); var OldMapMode: Integer; OldOrigin: TPoint; OldMapMode := SetMapMode(Canvas.Handle, MM_LOMETRIC); SetWindowOrgEx(Canvas.Handle, 0, Canvas.Ellipse(0, 0, 200, 200); SetWindowOrgEx(Canvas.Handle, OldOrigin.X, OldOrigin.Y, nil); SetMapMode(Canvas.Handle, OldMapMode);
32 코드는단순하다. SetMapMode 함수를이용하여 MM_LOMETRIC 모드로설정하고, 원점을 (0, 200) 으로설정한다. MM_LOMETRIC 모드는 0.1mm 단위이므로원점은폼의좌상에서아래로 2cm 아래에위치하게된다. 여기에서지름이 2cm 인원을그리게된다. 그리고나서, 원래의원점과매핑모드를각각 OldMapMode 와 OldOrigin 변수에저장했던것을다시복구하면된다. Button2 의이벤트핸들러는다음과같이작성한다. procedure TForm1.Button2Click(Sender: TObject); var OldMapMode: Integer; OldOrigin: TSize; OldWindowExtent: TSize; OldViewportExtent: TSize; OldMapMode := SetMapMode(Canvas.Handle, MM_ANISOTROPIC); SetWindowExtEx(Canvas.Handle, 100, SetViewportExtEx(Canvas.Handle, 200, SetWindowOrgEx(Canvas.Handle, 0, Canvas.Ellipse(0, 0, 100, 100); SetWindowOrgEx(Canvas.Handle, OldOrigin.cx, OldOrigin.cy, nil); SetViewportExtEx(Canvas.Handle, OldViewportExtent.cx, OldViewportExtent.cy, nil); SetWindowExtEx(Canvas.Handle, OldWindowExtent.cx, OldWindowExtent.cy, nil); SetMapMode(Canvas.Handle, OldMapMode); 별로다를내용은없지만, MM_ANISOTROPIC 모드에서 SetViewportExtEx 함수에의해 x 축의크기요소를 y 축의 2 배로설정하였으므로 Ellipas(0, 0, 100, 100) 메소드에의해가로의길이가세로의 2 배인타원이그려지게된다. 이어플리케이션을실행하고, 두개의버튼을차례로클릭하면다음과같은결과를볼수있다.
33 어플리케이션에비디오클립추가 델파이 4 의애니메이션컨트롤을이용하면조용한비디오클립을간단하게어플리케이션에추가할수있다. Win32 페이지의 TAnimate 컴포넌트를사용하려면 CommonAVI, FileName, ResName, ResID 프로퍼티중의하나를설정해서보여줄비디오클립을선택한다. 일단 AVI 파일을메모리에적재한뒤에, Active 프로퍼티를설정하거나 Play 메소드에의해스크린에 AVI 클립을보여줄때첫번째프레임부터보여주려할경우에는 Open 프로퍼티를 True 로설정한다. 그리고, AVI 클립을반복할횟수를 Repetitions 프로퍼티에설정하는데, 이값에 0 을주면 Stop 메소드가호출될때까지재생이반복된다. 그밖에여러가지설정을변경할수있는데예를들어, 첫번째프레임부터보여주지않고특정프레임부터시작하게하려면 StartFrame 프로퍼티를프레임의번호로설정하면된다. 오디오 / 비디오를모두재생할수있는어플리케이션의제작 오디오와비디오를모두재생할수있는어플리케이션을제작하려면, System 페이지에있는 TMediaPlayer 컴포넌트를사용한다. 이컴포넌트를사용하려면먼저 DeviceType 프로퍼티를사용하려는적절한디바이스유형으로설정해야한다. 이프로퍼티가 dtautoselect 로설정되면디바이스유형은미디어파일의확장자에의해결정된다. 디바이스가미디어를파일로저장하면, 미디어파일의이름을 FileName 프로퍼티에지정하여사용하게된다 AutoOpen 프로퍼티를 True 로설정하면, 미디어플레이어는자동으로지정된디바이스를열게된다. 이값이 False 이면 Open 메소드가호출되어야만디바이스가열린다. AutoEnable 프로퍼티는미디어플레이어버튼을자동을 enable, disable 할것인지를결정
34 하는것이다. 이를설정하거나아니면, EnableButtons 프로퍼티를이용하여각각의버튼을 enable, disable 시킬수있다. 미디어플레이어의버튼으로는다음과같이 Play, Pause, Stop, Next, Previous 등이있다. 경우에따라서는미디어플레이어를런타임에보이지않게하고싶을때에는 Visible 프로퍼티를 False 로설정하면되며, 이럴때에는 Play, Pause, Stop, Next, Previous 등의적절한메소드를호출하여작동시키면된다. 그밖에도미디어가디스플레이윈도우를요구할경우에는 Display 프로퍼티를미디어를디스플레이할컨트롤로설정하면되며, 디바이스가다중트랙을사용할경우에는 Tracks 프로퍼티를해당되는트랙으로설정하면된다. 디바이스유형과재생되는종류와트랙과디스플레이윈도우의사용여부에대한사항을다음에나타내었다. 디바이스사용되는하드웨어 / 소프트웨어트랙사용여부 디스플레이 컨트롤사용여부 dtavivideo AVI Video Player for Windows No Yes (AVI Video files) dtcdaudio CD Audio Player for Windows Yes No CD Audio Player (CD Audio Disks) dtdat Digital Audio Tape Player Yes No (Digital Audio Tapes) dtdigitalvideo Digital Video Player for Windows No Yes (AVI, MPG, MOV files) dtmmmovie MM Movie Player (MM film) No Yes dtoverlay Overlay device (Analog Video) No Yes dtscanner Image Scanner No No N/a for Play (scans images on Record) dtsequencer MIDI Sequencer for Windows (MIDI files) Yes No dtvcr Video Cassette Recorder (Video Cassettes) No Yes dtwaveaudio Wave Audio Player for Windows (WAV files) No No 애니메이션컨트롤의활용
35 Animate 컨트롤은단일비디오스트림을가진 AVI 파일만을재생할수있으며, RLE8 압축기법으로압축되거나압축을해제하며, 팔레트변경은할수없다. 그리고, 사운드가있을경우압축이무시된다. Animate 컨트롤의재미있는특징중에하나는폼위에올려놓고, FileName 이나 CommonAVI 프로퍼티를설정하고 Active 프로퍼티를 True 로하면, 디자인시에서도애니메이션을볼수있다. 그러면, 표준으로제공되는애니메이션인 CommonAVI 프로퍼티의내용을사용자가선택하면이를보여주는간단한예제를하나만들어보자먼저폼에리스트박스하나와버튼 2 개, 애니메이트컨트롤 1 개를얹어서다음과같이디자인한다. 리스트박스의 Items 프로퍼티를앞의화면에보이는대로설정하고, 버튼 2 개의 Caption 프로퍼티를 시작 과 중지 로설정한다. ListBox1 의 OnClick 이벤트핸들러를다음과같이설정한다. procedure TForm1.ListBox1Click(Sender: TObject); case ListBox1.ItemIndex of 0: Animate1.CommonAVI := avifindfolder; 1: Animate1.CommonAVI := avifindfile; 2: Animate1.CommonAVI := avifindcomputer; 3: Animate1.CommonAVI := avicopyfiles; 4: Animate1.CommonAVI := avicopyfile; 5: Animate1.CommonAVI := avirecyclefile; 6: Animate1.CommonAVI := aviemptyrecycle; 7: Animate1.CommonAVI := avideletefile;
36 즉, 리스트박스에보여주는내용을그대로적용하는것이다. OnClick 이벤트핸들러는각각다음과같이작성한다. 그리고, 두개의버튼의 procedure TForm1.Button1Click(Sender: TObject); Animate1.Active := True; procedure TForm1.Button2Click(Sender: TObject); Animate1.Stop; 이제완성이되었으므로, 이를실행해보자. 볼수있을것이다. 파일복사 를선택하면다음과같은화면을 정리 (Summary) 이번장에서는델파이를이용하여그림을그리고, 비트맵을다루는방법과비디오와오디오클립을사용하는방법에대해서알아보았다. 사실그래픽에대한부분은따로책을한권써야할정도로설명할내용도많고, 이해해야할내용도많다. 그리고, 시각적컨트롤을나름대로제작해서쓰려고하는사람들은여기에대한필수적인이해가있어야한다. 팔레트에대해서도잘알고있어야하며, 그래픽이라는객체들이크기가상당히큰경우들이많기때문에메모리를효과적으로사용하는방법이나파일포맷과파일을다루는방법등에대해서도잘알고있어야한다. 이책에서는지면관계상그래픽에대해서가장기본적이고기초적인부분만소개하였다.
37 하지만, 훌륭한델파이프로그래머가되기위해서는꼭넘어야할산이므로단순히델파이가제공하는캔버스의메소드에의존하지말고, 필수적인 API 함수들의사용법은반드시익혀놓도록권하는바이다. 다음장에서는윈도우 95 가등장하면서부터제공되기시작한 Win32 의향상된공통컨트롤 (Common Control) 들의사용법과활용방법에대해서알아볼것이다. 델파이의수많은컴포넌트들중에서유용하게사용될수있음에도불구하고, 사용법에대한소개와활용이비교적미흡한편인컨트롤들을중심으로설명할것이다.
PowerPoint Template
JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것
More information4장기본프로그래밍2
4-2 마우스 (Mouse) 마우스이벤트 Click 이벤트 마우스버튼이눌렸다가떼어질때발생 DblClick 이벤트 마우스버튼이두번눌렸다가떼어질때발생 MouseDown 이벤트 마우스버튼이눌렸을때발생 MouseUp 이벤트 마우스버튼이떼어질때발생 MouseMove 이벤트 마우스가움직일때발생 DragOver 이벤트 마우스버튼을누른상태에서끌기를했을때발생 DragDrop
More informationMicrosoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More information디지털영상처리3
비트맵개요 BMP 파일의이해실제 BMP 파일의분석 BMP 파일을화면에출력 } 비트맵 (bitmap) 윈도우즈에서영상을표현하기위해사용되는윈도우즈 GDI(Graphic Device Interface) 오브젝트의하나 } 벡터그래픽 (vector graphics) 점, 선, 면등의기본적인그리기도구를이용하여그림을그리는방식 } 윈도우즈 GDI(Graphic Device
More informationJavascript
1. 이벤트와이벤트핸들러의이해 이벤트 (Event) 는웹브라우저에서발생하는다양한사건을말합니다. 예를들면, 버튼을마우스로을했다거나브라우저를닫았다거나 Enter 키를눌렀다거나등등아주다양한사건들이있습니다. 그렇다면이벤트핸들러 (Event Handler) 는무엇일까요? 이다양한이벤트들을핸들링 ( 처리 ) 해주는것입니다. 예를들면, 어떤버튼을했을때메시지창이뜨게하는등을말합니다.
More informationVisual Basic 반복문
학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More informationMicrosoft Word - ntasFrameBuilderInstallGuide2.5.doc
NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,
More information다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");
다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher
More informationWindows 8에서 BioStar 1 설치하기
/ 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar
More informationMicrosoft PowerPoint - e pptx
Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells
More information경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P
Duplicator 는기본적으로원본하드디스크를빠르게복사본하드디스크에복사하는기능을하는것입니다.. 복사본 하드디스크가원본하드디스크와똑같게하는것을목적으로하는것이어서저용량에서고용량으로복사시몇 가지문제점이발생할수있습니다. 하드디스크는사용하려면, 디스크초기화를한후에포맷을해야사용가능합니다. Windows PC는 MBR과 GPT 2 개중에 1개로초기화합니다. -Windows
More information歯MDI.PDF
E08 MDI SDI(Single Document Interface) MDI(Multiple Document Interface) MDI (Client Window) (Child) MDI 1 MDI MDI MDI - File New Other Projects MDI Application - MDI - OK [ 1] MDI MDI MDI MDI Child MDI
More informationISP and CodeVisionAVR C Compiler.hwp
USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler
More information제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호
제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법
More information쉽게 풀어쓴 C 프로그래밍
제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace
More information디지털영상처리3
비트맵 BMP 파일의 실제 BMP 파일의 BMP 파일을 화면에 개요 이해 분석 출력 } 비트맵 (bitmap) 윈도우즈에서영상을표현하기위해사용되는윈도우즈 GDI(Graphic Device Interface) 오브젝트의하나 } 벡터그래픽 (vector graphics) 점, 선, 면등의기본적인그리기도구를이용하여그림을그리는방식 } 윈도우즈 GDI(Graphic
More information. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요
. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요소로써안드로이드시스템에서는 Activities, Services, Content Providers,
More informationAPI - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어
메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어서가장중요한부분이라고도할수있기때문입니다. 1. 새로운메크로생성 새메크로만들기버튺을클릭하여파일을생성합니다. 2. 메크로저장 -
More informationPowerPoint Presentation
Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음
More information제8장 자바 GUI 프로그래밍 II
제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로
More informationvar answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");
자바스크립트 (JavaScript) - HTML 은사용자에게인터페이스 (interface) 를제공하는언어 - 자바스크립트는서버로데이터를전송하지않고서할수있는데이터처리를수행한다. - 자바스크립트는 HTML 나 JSP 에서작성할수있고 ( 내부스크립트 ), 별도의파일로도작성이가능하다 ( 외 부스크립트 ). - 내부스크립트 - 외부스크립트
More informationMicrosoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt
AWT 컴포넌트 (1) 1. AWT 패키지 2. AWT 프로그램과이벤트 3. Component 클래스 4. 컴포넌트색칠하기 AWT GUI 를만들기위한 API 윈도우프로그래밍을위한클래스와도구를포함 Graphical User Interface 그래픽요소를통해프로그램과대화하는방식 그래픽요소를 GUI 컴포넌트라함 윈도우프로그램만들기 간단한 AWT 프로그램 import
More informationgnu-lee-oop-kor-lec06-3-chap7
어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base
More information오버라이딩 (Overriding)
WindowEvent WindowEvent 윈도우가열리거나 (opened) 닫힐때 (closed) 활성화되거나 (activated) 비활성화될때 (deactivated) 최소화되거나 (iconified) 복귀될때 (deiconified) 윈도우닫힘버튼을누를때 (closing) WindowEvent 수신자 abstract class WindowListener
More informationMicrosoft Word - src.doc
IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...
More informationUI TASK & KEY EVENT
2007. 2. 5 PLATFORM TEAM 정용학 차례 CONTAINER & WIDGET SPECIAL WIDGET 질의응답및토의 2 Container LCD에보여지는화면한개 1개이상의 Widget을가짐 3 Container 초기화과정 ui_init UMP_F_CONTAINERMGR_Initialize UMP_H_CONTAINERMGR_Initialize
More informationVisual Basic 기본컨트롤
학습목표 폼 ( Form) 폼의속성, 컨트롤이름, 컨트롤메서드 기본컨트롤 레이블, 텍스트박스, 버튼, 리스트박스 이벤트 버튼 기본컨트롤실습 2 2.1 폼 (Form) 2.2 기본컨트롤 2.3 기본컨트롤실습 3 폼 - 속성 속성 (Name) AutoSize BackColor Font ForeColor Icon StartPosition Transparency WindowState
More informationStructure and Interpretation of Computer Programs: Assignment 3 Seung-Hoon Na October 4, George (아래 3개의 문제에 대한 구현이 모두 포함된 george.rkt파일을 제출하시오.
Structure and Interpretation of Computer Programs: Assignment 3 Seung-Hoon Na October 4, 2018 1 George (아래 3개의 문제에 대한 구현이 모두 포함된 george.rkt파일을 제출하시오. 실행후 Problem 1.3에 대한 Display결과가 나와야 함) George 그림은 다음과
More information17장 클래스와 메소드
17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는
More informationJAVA PROGRAMMING 실습 08.다형성
2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스
More informationMicrosoft PowerPoint UI-Event.Notification(1.5h).pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 UI 이벤트 Event listener Touch mode Focus handling Notification Basic toast notification Customized toast notification Status bar notification 2 사용자가인터랙션하는특정 View
More informationJVM 메모리구조
조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.
More informationAPI 매뉴얼
PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned
More informationgnu-lee-oop-kor-lec10-1-chap10
어서와 Java 는처음이지! 제 10 장이벤트처리 이벤트분류 액션이벤트 키이벤트 마우스이동이벤트 어댑터클래스 스윙컴포넌트에의하여지원되는이벤트는크게두가지의카테고리로나누어진다. 사용자가버튼을클릭하는경우 사용자가메뉴항목을선택하는경우 사용자가텍스트필드에서엔터키를누르는경우 두개의버튼을만들어서패널의배경색을변경하는프로그램을작성하여보자. 이벤트리스너는하나만생성한다. class
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More informationPowerPoint Presentation
객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean
More information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More information<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.
More informationOOO Paint
Webtoon Paint OSP Stage 2040 Team 2 200911371 김민철 200911381 김진현 200911417 정명권 REF. Activity 2033. Define Domain Model Activity 2041. Design Real Use Case Use Case Actors Purpose Overview Type R1.1 파일불러오기
More informationC# Programming Guide - Types
C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든
More informationView Licenses and Services (customer)
빠른 빠른 시작: 시작: 라이선스, 라이선스, 서비스 서비스 및 주문 주문 이력 이력 보기 보기 고객 가이드 Microsoft 비즈니스 센터의 라이선스, 서비스 및 혜택 섹션을 통해 라이선스, 온라인 서비스, 구매 기록 (주문 기록)을 볼 수 있습니다. 시작하려면, 비즈니스 센터에 로그인하여 상단 메뉴에서 재고를 선택한 후 내 재고 관리를 선택하십시오. 목차
More information<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>
SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......
More information게임 기획서 표준양식 연구보고서
ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ
More informationBMP 파일 처리
BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)
More information쉽게 풀어쓴 C 프로그래밍
CHAPTER 11. 자바스크립트와캔버스로게임 만들기 캔버스 캔버스는 요소로생성 캔버스는 HTML 페이지상에서사각형태의영역 실제그림은자바스크립트를통하여코드로그려야한다. 컨텍스트객체 컨텍스트 (context) 객체 : 자바스크립트에서물감과붓의역할을한다. var canvas = document.getelementbyid("mycanvas"); var
More information<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>
SAM4S Printer Driver Installer 달리명시하지않은한, 인쇄또는복사된문서는통제하지않는문서임 목 차 1. 1. WINDOWS DRIVER INSTALLER 설치 설치...... 2 2. 프린터추가...... 5 3. 프린터제거...... 19 4. 프린터추가 / 제거선택...... 21 5. 프로그램추가 / 제거...... 21 SHC- 11-01-
More informationMicrosoft PowerPoint - ch07 - 포인터 pm0415
2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More information<4D F736F F F696E74202D20C1A63233C0E520B1D7B7A1C7C820C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 23 장그래픽프로그래밍 이번장에서학습할내용 자바에서의그래픽 기초사항 기초도형그리기 색상 폰트 Java 2D Java 2D를이용한그리기 Java 2D 를이용한채우기 도형회전과평행이동 자바를이용하여서화면에그림을그려봅시다. 자바그래픽데모 자바그래픽의두가지방법 자바그래픽 AWT Java 2D AWT를사용하면기본적인도형들을쉽게그릴수있다. 어디서나잘실행된다.
More information이장에서다룰내용 테두리를제어하는스타일시트 외부여백 (Margin) 과내부여백 (Padding) 관련속성 위치관련속성 2
03 장. 테두리여백지정하는속성 이번장에서는테이블, 레이어, 폼양식등의더예쁘게꾸미기위해서 CSS 를이용하여 HTML 요소의테두리속성을바꾸어보자. 이장에서다룰내용 1 2 3 테두리를제어하는스타일시트 외부여백 (Margin) 과내부여백 (Padding) 관련속성 위치관련속성 2 01. 테두리를제어하는스타일시트 속성값설명 border-width border-left-width
More informationMF3010 MF Driver Installation Guide
한국어 MF 드라이버설치설명서 사용자소프트웨어 CD-ROM................................................ 1.................................................................... 1..............................................................................
More information목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.
소프트웨어매뉴얼 윈도우드라이버 Rev. 3.03 SLP-TX220 / TX223 SLP-TX420 / TX423 SLP-TX400 / TX403 SLP-DX220 / DX223 SLP-DX420 / DX423 SLP-DL410 / DL413 SLP-T400 / T403 SLP-T400R / T403R SLP-D220 / D223 SLP-D420 / D423
More information그래픽 프로그래밍
제 13 장그래픽프로그래밍 13.1 베지어곡선 실습 13-1 알고리즘을통한베지어곡선그리기 실습 13-2 컨트롤포인트이동및베지어곡선 해상도설정하기 그래픽프로그래밍 베지어곡선 베지어곡선알고리즘은곡선을생성하는대표적이고기본이되는알고리즘이다. MFC 에서의베지어곡선함수 BOOL PolyBezier(const POINT* lppoints, int ncount); lppoints
More informationadfasdfasfdasfasfadf
C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.
More information<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>
연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.
More information쉽게 풀어쓴 C 프로그래밍
CHAPTER 13. HTML5 위치정보와드래그앤드롭 SVG SVG(Scalable Vector Graphics) 는 XML- 기반의벡터이미지포맷 웹에서벡터 - 기반의그래픽을정의하는데사용 1999 년부터 W3C 에의하여표준 SVG 의장점 SVG 그래픽은확대되거나크기가변경되어도품질이손상되지않는다. SVG 파일에서모든요소와속성은애니메이션이가능하다. SVG 이미지는어떤텍스트에디터로도생성하고편집할수있다.
More informationMicrosoft PowerPoint - 06-Body Data Class.pptx
Digital 3D Anthropometry 6. Body Data Class Sungmin Kim SEOUL NATIONAL UNIVERSITY Body Data Class 의설계 Body Model 의관리 인체데이터입출력 데이터불러오기 인체모델그리기 TOpenGL의확장 프로젝트관리 프로젝트저장 / 불러오기 추가기능구현 좌표축정렬 Face, Wireframe,
More informationMicrosoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse
More information학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2
학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등
More information윈도우즈프로그래밍(1)
제어문 (2) For~Next 문 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 ) 2/17 Contents 학습목표 프로그램에서주어진특정문장을부분을일정횟수만큼반복해서실행하는문장으로 For~Next 문등의구조를이해하고활용할수있다. 내용 For~Next 문 다중 For 문 3/17 제어문 - FOR 문 반복문 : 프로그램에서주어진특정문장들을일정한횟수만큼반복해서실행하는문장
More information기본적인 컴포넌트의 제작
기본적인컴포넌트의제작 (Creating Basic Components) 델파이는가장잘된윈도우용 OOP 개발환경이라고말할수있다. 이러한델파이의가장핵심부분은누가뭐라해도델파이의튼튼한컴포넌트라고말할수있다. 컴포넌트란 OOP 의기본개념을충실하게지원하는델파이의객체로, 이러한컴포넌트를개발하는방법이야말로, 델파이개발자에게는가장중요한기술이라고말해도과언이아니다. 이번장에서는컴포넌트가동작하는방법을이해하고실제로컴포넌트를제작하는방법에대해서알아보기로한다.
More informationMicrosoft PowerPoint - additional01.ppt [호환 모드]
1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능
More informationCODESYS 런타임 설치과정
CODESYS 런타임설치과정 CODESYS Control RTE / SoftMotion RTE Setup Web: www.altsoft.kr E-mail: altsoft@altsoft.kr Tel: 02-547-2344 목 차 CODESYS 런타임 - Control RTE, SoftMotion RTE... 2 다운로드및설치과정... 2 CODESYS EtherCAT
More informationMicrosoft PowerPoint 자바-기본문법(Ch2).pptx
자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March
More informationPowerPoint 프레젠테이션
System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소
More informationPowerPoint Presentation
객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television
More information<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 19 장배치관리자 이번장에서학습할내용 배치관리자의개요 배치관리자의사용 FlowLayout BorderLayout GridLayout BoxLayout CardLayout 절대위치로배치 컨테이너안에서컴포넌트를배치하는방법에대하여살펴봅시다. 배치관리자 (layout manager) 컨테이너안의각컴포넌트의위치와크기를결정하는작업 [3/70] 상당히다르게보인다.
More informationMicrosoft PowerPoint - 07-Data Manipulation.pptx
Digital 3D Anthropometry 7. Data Analysis Sungmin Kim SEOUL NATIONAL UNIVERSITY Body 기본정보표시 Introduction 스케일조절하기 단면형상추출 단면정보관리 3D 단면형상표시 2 기본정보표시및스케일조절 UI 및핸들러구성 void fastcall TMainForm::BeginNewProject1Click(TObject
More informationSIGIL 완벽입문
누구나 만드는 전자책 SIGIL 을 이용해 전자책을 만들기 EPUB 전자책이 가지는 단점 EPUB이라는 포맷과 제일 많이 비교되는 포맷은 PDF라는 포맷 입니다. EPUB이 나오기 전까지 전 세계에서 가장 많이 사용되던 전자책 포맷이고, 아직도 많이 사 용되기 때문이기도 한며, 또한 PDF는 종이책 출력을 위해서도 사용되기 때문에 종이책 VS
More informationMicrosoft PowerPoint - 09-Object Oriented Programming-3.pptx
Development of Fashion CAD System 9. Object Oriented Programming-3 Sungmin Kim SEOUL NATIONAL UNIVERSITY Introduction Topics Object Oriented Programming (OOP) 정의 복수의 pattern object 로 이루어지는 새로운 class Pattern
More information<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>
게임엔진 제 4 강프레임리스너와 OIS 입력시스템 이대현교수 한국산업기술대학교게임공학과 학습내용 프레임리스너의개념 프레임리스너를이용한엔터티의이동 OIS 입력시스템을이용한키보드입력의처리 게임루프 Initialization Game Logic Drawing N Exit? Y Finish 실제게임루프 오우거엔진의메인렌더링루프 Root::startRendering()
More information쉽게 풀어쓴 C 프로그래밍
Power Java 제 20 장패키지 이번장에서학습할내용 패키지의개념 패키지로묶는방법 패키지사용 기본패키지 유틸리티패키지 패키지는연관된클래스들을묶는기법입니다. 패키지란? 패키지 (package) : 클래스들을묶은것 자바라이브러리도패키지로구성 ( 예 ) java.net 패키지 네트워크관련라이브러리 그림 20-1. 패키지의개념 예제 패키지생성하기 Q: 만약패키지문을사용하지않은경우에는어떻게되는가?
More informationMicrosoft Word - Armjtag_문서1.doc
ARM JTAG (wiggler 호환 ) 사용방법 ( IAR EWARM 에서 ARM-JTAG 로 Debugging 하기 ) Test Board : AT91SAM7S256 IAR EWARM : Kickstart for ARM ARM-JTAG : ver 1.0 ( 씨링크테크 ) 1. IAR EWARM (Kickstart for ARM) 설치 2. Macraigor
More informationMicrosoft PowerPoint - chap06-1Array.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어
More informationIP 심화 라우팅프로토콜적용시 라우팅테이블에서 이니셜이있는네트워크를설정하는것 : onnected 직접연결된네트워크를의미한다. 그러므로라우팅은 나는이런네트워크와연결되어있다. 를직접연결된라우터들에게알려주는것 1>en 1#conf t 1(config)#router rip 1
IP 심화 º 각 P 의게이트웨이는해당네트워크의마지막주소를사용한다. - P1 (210.220.10.1/26) 의게이트웨이 (5의 Fa0/0) : 210.220.10.63 /26 = 255.255.255.192 호스트비트수 : 32-26 = 6 비트 => = 64 그러므로 P1의 IP 210.220.10.1 중서브넷마스크에의거 26비트는변함이없고, 나머지 6비트가호스트비트로변하므로
More informationMicrosoft PowerPoint - chap01-C언어개요.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을
More informationMicrosoft PowerPoint 웹 연동 기술.pptx
웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우
More information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More informationPathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.
PathEye Mobile Ver. 0.71b 2009. 3. 17 By PathEye 공식 블로그 다운로드 받으세요!! http://blog.patheye.com 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다. PathEye 설치 1/3 최종 배포 버전을 다 운로드 받습니다. 다운로드된 파일은 CAB 파일입니다. CAB 파일에는
More informationPowerPoint 프레젠테이션
05 장 CSS3 선택자 1. 선택자개요 2. 기본선택자 3. 속성선택자 4. 후손선택자와자손선택자 5. 반응 / 상태 / 구조선택자 CSS 블록을생성할수있다. 선택자를이해하고적절한선택자를활용할수있다. 1 선택자개요 CSS3 선택자 특정한 HTML 태그를선택할때사용하는기능 선택한태그에원하는스타일이나스크립트적용가능 그림 5-1 CSS 블록 CSS 블록 style
More informationMicrosoft PowerPoint - 09-CE-5-윈도우 핸들
순천향대학교컴퓨터학부이상정 1 학습내용 윈도우핸들 윈도우찿기 윈도우확인및제거 윈도우숨기기 윈도우포커스 윈도우텍스트 윈도우핸들 순천향대학교컴퓨터학부이상정 3 핸들 (handle) 윈도우에서구체적인어떤대상을구분하기위해지정되는고유의번호 32비트의정수값 핸들은운영체제가발급하고사용자가이값을사용 실제값이무엇인지는몰라도상관없음 윈도우, DC, 브러쉬등등 순천향대학교컴퓨터학부이상정
More informationPowerPoint Template
SOFTWARE ENGINEERING Team Practice #3 (UTP) 201114188 김종연 201114191 정재욱 201114192 정재철 201114195 홍호탁 www.themegallery.com 1 / 19 Contents - Test items - Features to be tested - Features not to be tested
More informationGDI 와 DC GDI (Graphics Device Iterface) 응용프로그램이하드웨어를제어할수있도록윈도우 OS 가제공하는모든기능 윈도우가출력장치에대한정보를스스로판단하고분석하여, 실제로사용할드라이버를불러옴 이를이용할경우, 하드웨어독립적인프로그래밍을할수있음 Widw
Chapter 5. 그래픽처리 Widws Prgrammig, 2009 Fall GDI 와 DC GDI (Graphics Device Iterface) 응용프로그램이하드웨어를제어할수있도록윈도우 OS 가제공하는모든기능 윈도우가출력장치에대한정보를스스로판단하고분석하여, 실제로사용할드라이버를불러옴 이를이용할경우, 하드웨어독립적인프로그래밍을할수있음 Widws Device
More informationŸ 캔버스의크기와드로잉표면의크기 <canvas> 요소의 width/height 속성사용하여변경하면캔버스크기를드로잉표면의크기로자동변경한다. CSS를사용해서캔버스크기를지정하는경우는드로잉표면의크기는변경할수없기때문에캔버스와드로잉표면의불일치로인하여예기치않은결과를발생시킬수있음에주
1. 기본내용 1.1 캔버스 Ÿ canvas 요소는웹페이지에서자바스크립트를통해즉시그림을그리는데사용되며단순한그림표현을넘어여러효과와함께텍스트및애니메이션표현이가능하다. Ÿ 그림을그리기위해서는 를사용해서그림영역을지정하고, 자바스크립트를사용해서실제그림을그린다. 1.2 캔버스좌표시스템 Ÿ 캔버스의좌표시스템은 2D 컨텍스트로, 왼쪽상단모서리에있는평면직교표면을
More informationPowerPoint 프레젠테이션
실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3
More information슬라이드 1
프로세싱 광운대학교로봇학부박광현 프로세싱실행 2 C:\processing-3.2.1 폴더 창나타내기 실행 정지 3 폭 높이 600 400 도형그리기 배경칠하기 5 background(255, 255, 255); R G B background(255, 0, 0); background(255, 122, 0); 선그리기 6 background(255, 122, 0);
More informationVisual Basic Visual Basic 소개
1. Visual Basic 소개 학습목표 MS 비주얼베이직 6.0과 2010의차이 비주얼베이직 2010 express 설치 비주얼베이직 2010의통합개발환경 프로그램의시작과실행 2 1. 소개 1.1 MS 비주얼베이직 6.0과 2010의차이 1.2 비주얼베이직 2010 express 설치 1.3 비주얼베이직 2010의통합개발환경 1.4 프로그램의시작과실행 3
More informationChapter ...
Chapter 4 프로세서 (4.9절, 4.12절, 4.13절) Contents 4.1 소개 4.2 논리 설계 기초 4.3 데이터패스 설계 4.4 단순한 구현 방법 4.5 파이프라이닝 개요*** 4.6 파이프라이닝 데이터패스 및 제어*** 4.7 데이터 해저드: 포워딩 vs. 스톨링*** 4.8 제어 해저드*** 4.9 예외 처리*** 4.10 명령어 수준
More information<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 26 장애플릿 이번장에서학습할내용 애플릿소개 애플릿작성및소개 애플릿의생명주기 애플릿에서의그래픽컴포넌트의소개 Applet API의이용 웹브라우저상에서실행되는작은프로그램인애플릿에대하여학습합니다. 애플릿이란? 애플릿은웹페이지같은 HTML 문서안에내장되어실행되는자바프로그램이다. 애플릿을실행시키는두가지방법 1. 웹브라우저를이용하는방법 2. Appletviewer를이용하는방법
More information쉽게 풀어쓴 C 프로그래밍
Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법
More informationMFC 프로그래밍
윈도우프로그래밍 Visual C++ 2010 MFC Programming 4 장. 화면출력 GDI 와 DC GDI(Graphics Device Interface) 윈도우운영체제에서그래픽출력을담당하는부분 장치독립성및멀티태스킹지원 운영체제의하위시스템중하나로 DLL 로존재 응용프로그램의요청을받아서실제출력장치에대한출력을담당 O/S 응용프로그램 GDI 장치출력장치드라이버
More information[Brochure] KOR_TunA
LG CNS LG CNS APM (TunA) LG CNS APM (TunA) 어플리케이션의 성능 개선을 위한 직관적이고 심플한 APM 솔루션 APM 이란? Application Performance Management 란? 사용자 관점 그리고 비즈니스 관점에서 실제 서비스되고 있는 어플리케이션의 성능 관리 체계입니다. 이를 위해서는 신속한 장애 지점 파악 /
More informationJDK이클립스
JDK 와이클립스설치 A. JDK 다운로드, 설치및환경설정 지금부터 JDK를다운로드받아설치하고 JDK를윈도우에서활용할수있도록환경을설정하는전과정을소개한다. 다운로드 www.oracle.com 사이트에접속하여 Downloads 메뉴를선택한후 [ 그림 1] 과같이 "Java for Developers" 를클릭한다. [ 그림 1] www.oracle.com 사이트
More informationMicrosoft PowerPoint - logo_2-미해답.ppt [호환 모드]
Chap.2 Logo 프로그래밍기초 - 터틀그래픽명령어 ( 기본, 고급 ) 학습목표 터틀의이동과선그리기에대해살펴본다. 터틀의회전에대해살펴본다. 터틀펜과화면제어에대해살펴본다. 2012. 5. 박남제 namjepark@jejunu.ac.kr < 이동하기 > - 앞으로이동하기 forward 100 터틀이 100 픽셀만큼앞으로이동 2 < 이동하기 > forward(fd)
More informationtiawPlot ac 사용방법
tiawplot ac 매뉴얼 BORISOFT www.borisoft.co.kr park.ji@borisoft.co.kr HP : 00-370-077 Chapter 프로그램설치. 프로그램설치 3 2 Chapter tiawplot ac 사용하기.tiawPlot ac 소개 2.tiawPlot ac 실행하기 3. 도면파일등록및삭제 4. 출력장치설정 5. 출력옵션설정
More informationMicrosoft PowerPoint - 11주차.pptx
11 주차 비트맵버튼 & 폰트 그래픽객체의사용 This week, we will study Button 에사용자 graphic image를넣는방법 Edit box의색상변경방법 폰트의종류변경, 폰트크기 / 속성변경방법 Graphic object 비트맵버튼의생성 버튼이미지를준비 사용할버튼의크기에적합한이미지를준비. 일반적으로.BMP 이미지파일을사용. Ex) Resource
More information제11장 프로세스와 쓰레드
제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드
More informationMicrosoft Word - windows server 2003 수동설치_non pro support_.doc
Windows Server 2003 수동 설치 가이드 INDEX 운영체제 설치 준비과정 1 드라이버를 위한 플로피 디스크 작성 2 드라이버를 위한 USB 메모리 작성 7 운영체제 설치 과정 14 Boot Sequence 변경 14 컨트롤러 드라이버 수동 설치 15 운영체제 설치 17 운영체제 설치 준비 과정 Windows Server 2003 에는 기본적으로
More informationSOFTBASE XFRAME DEVELOPMENT GUIDE SERIES ActiveX 컴포넌트가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax
SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES 2012.02.18 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone 02-2108-8030 Fax 02-2108-8031 www.softbase.co.kr Copyright 2010 SOFTBase Inc. All rights reserved 목차 1 장 : ActiveX
More information