WPF - XDL Tutorial (piXoneer XDL Tutorial)
NXPlanetView¸¦ È°¿ëÇÏ¿© ±¸ ±â¹Ý 2D µµ½Ã ȯ°æ¿¡¼ ±â´ÉÈ°¿ë¹ýÀ» ÀÍÈ÷°í ¸¶¿ì½º À§Ä¡¿¡ µû¸¥ ÁÂÇ¥ µµ½Ã, ³ªÄ§¹Ý µµ½Ã, µµ½Ã ±â´ÉÀ» ±¸ÇöÇØ º¾´Ï´Ù.
2019. 04.
|
1 »ç¿ëÇϱâ
1.1 XDL ¿£Áø¼³Ä¡ ÇÁ·Î±×·¥À¸·Î ¹èÆ÷µÇ´Â XDL ¿£ÁøÀº Visual Studio 2010 x86 Release ¹öÀüÀ¸·Î, Visual Studio 2010 ÀÌ»óÀÇ ¹öÀü¿¡¼ »ç¿ë °¡´ÉÇÏ´Ù. ¾Æ·¡ÀÇ ¼³¸íÀº Visual Studio 2015À» ±âÁØÀ¸·Î ÇÏ°Ú´Ù. 2 NXPlanetView¸¦ ÀÌ¿ëÇÑ ¿¹Á¦ ÇÁ·Î±×·¥ ¸¸µé±âl º» ¿¹Á¦ ÇÁ·Î±×·¥Àº NXPlanetView¿Í NXPlantLayer¸¦ ÀÌ¿ëÇÏ¿© Planet2D ¸ðµå »ó¿¡¼ ±âº» »ç¿ë¹ýÀ» ÀÍÈ÷°í °£´ÜÇÑ µµ½Ã±â´ÉÀ» Ãß°¡ÇØ º¸µµ·Ï ÇÑ´Ù. 2.1 ±âº» ÇÁ·Î±×·¥ ÀÛ¼º2.1.1 Visual Studio 2015À» ½ÇÇàÇÑ´Ù.2.1.2 ¸Þ´º [ÆÄÀÏ]-[»õ·Î ¸¸µé±â]-[ÇÁ·ÎÁ§Æ®]¸¦ ¼±ÅÃÇÑ´Ù.
2.1.3 [»õ ÇÁ·ÎÁ§Æ®] ´ëÈ»óÀÚ¿¡¼ ¿ÞÂÊÀÇ ÅÛÇø´ â¿¡¼ ¡°Visual C#¡±À» ¼±ÅÃÇÏ°í, ´ëÈ»óÀÚ Áß°£ÀÇ ¸ñ·Ï¿¡¼ ¡°WPF ÀÀ¿ë ÇÁ·Î±×·¥¡±À» ¼±ÅÃÇÑ´Ù»ç¿ëÀÚ°¡ ¿øÇÏ´Â °æ·Î¸¦ ¼±ÅÃÇÑ ´ÙÀ½ ÇÁ·ÎÁ§Æ® À̸§À» ¡°XDL_PlanetView1¡± À¸·Î ÀÔ·ÂÇÏ°í [»õ ÇÁ·ÎÁ§Æ®] ´ëÈ»óÀÚÀÇ ¡°È®ÀΡ± ¹öÆ°À» Ŭ¸¯ÇÑ´Ù. ÀÌ ¹®¼¿¡¼´Â ´ëÈ»óÀÚ ¿À¸¥ÂÊ ¾Æ·¡¿¡ ÀÖ´Â ¡°¼Ö·ç¼Ç¿ë µð·ºÅ͸® ¸¸µé±â¡±´Â ¼±ÅÃÇÏÁö ¾Ê°Ú´Ù. ¡°È®ÀΡ± ¹öÆ°À» ´©¸£¸é ÇÁ·ÎÁ§Æ®°¡ ±âº»ÀûÀ¸·Î »ý¼ºµÇ°í, ȸ鿡 WindowÀ» µðÀÚÀÎÇÒ ¼ö Àִ ȸéÀÌ ¶á´Ù. ¸¸¾à ¾Æ·¡¿Í °°Àº Window âÀÌ »ý¼ºµÇÁö ¾ÊÀ¸¸é, [¼Ö·ç¼Ç Ž»ö±â] â¿¡¼ MainWindow.xaml¡±¸¦ ¸¶¿ì½º ´õºíŬ¸¯À» ÇÏ¿© âÀ» ¿¬´Ù.
2.1.4 ¼Ö·ç¼Ç Ž»ö±âÀÇ ÇÁ·ÎÁ§Æ® ÇϺÎÀÇ [ÂüÁ¶]ÀÇ ¿À¸¥ÂÊ ¸¶¿ì½º Ŭ¸¯À» ÅëÇØ [ÂüÁ¶Ãß°¡]¸¦ ¼±ÅÃÇÑ´Ù.
2.1.5 [ã¾Æº¸±â]ÅÇÀ¸·Î À̵¿ÇÑ ÈÄ ¡°C:\Pixoneer\XDL1.2\bin\¡±°æ·Î·Î À̵¿ÇÑ´Ù. CtrlÅ°¸¦ ´©¸¥ ä ¡°NXDL.dll¡±, ¡°NXPlanet.dll¡±, ¡°NXDLgr.dll¡± À» ¼±ÅÃÇÑ ÈÄ ¡°È®ÀΡ±¹öÆ°À» ¼±ÅÃÇÑ´Ù.2.1.6 ¼Ö·ç¼Ç Ž»ö±âÀÇ ÇÁ·ÎÁ§Æ® ÇϺÎÀÇ [ÂüÁ¶]Ç׿¡ NXDL, NXDLgr, NXPlanetÀÌ Ãß°¡µÇ¾úÀ½À» È®ÀÎÇÑ´Ù.
2.1.7 NXPlanet ÄÁÆ®·ÑÀ» È°¿ëÇϱâ À§ÇØ MainWindow.xaml â¿¡ namespace¸¦ ´ÙÀ½°ú °°ÀÌ Ãß°¡ÇÑ´Ù
2.2 ÇÁ·Î±×·¥ µðÀÚÀÎ
2.2.1 MainWindow.xaml â¿¡¼ ±âº»À¸·Î »ý¼ºµÈ Grid ·¹À̾ƿô¿¡ Grid.ColumnDefinitionÀ» ÀÌ¿ëÇÏ¿© ¼¼ °³ÀÇ ColumnÀ» »ý¼ºÇÑ´Ù. ù ¹ø° Column¿¡´Â À§ÀÇ Ç¥¸¦ Âü°íÇÏ¿© µðÀÚÀÎÇÏ´Â ÀÛ¾÷À» ÇÑ´Ù. (¨ç~¨ï). µÎ ¹ø° ColumnÀº GridSpiltter ÄÁÆ®·ÑÀ» Á¤ÀÇÇÏ°í ¼¼ ¹ø° ColumnÀº NXPlanetView ÄÁÆ®·Ñ°ú NXPlanetLayerÀ» ¹èÄ¡ÇÑ´Ù.¸ÕÀú Grid¸¦ ¼¼ °³ÀÇ ColumnÀ¸·Î ³ª´«´Ù. ±× ´ÙÀ½À¸·Î ù ¹ø° Column¿¡ µµ±¸»óÀÚ¸¦ ÀÌ¿ëÇÏ¿© CheckBox¿Í Button ÄÁÆ®·Ñ µîÀ» ÀÌ¿ëÇØ µðÀÚÀÎÇÑ´Ù(Ç¥ Âü°í). ÀÚ¼¼ÇÑ XAMLÄÚµå´Â »ùÇÃÀ» Âü°íÇÑ´Ù.
2.2.2 µÎ ¹ø° Column¿¡ GridSplitterÀ» ¹èÄ¡ÇÏ¿© Á¿츦 ±¸ºÐÇÑ´Ù. ¾Æ·¡ÀÇ Äڵ带 Ãß°¡Çϰųª µµ±¸»óÀÚ¿¡¼ GridSplitterÀ» ²ø¾î´Ù ¹èÄ¡ÇÑ´Ù.
2.2.3 ¼¼ ¹ø° Cell¿¡ WindowsFormsHost ÄÁÆ®·ÑÀ» ¹èÄ¡ÇÑ´Ù. ÀÌ´Â Window forms¸¦ Hosting ÇØÁÖ´Â °³Ã¼À̸ç Window Forms ControlÀ» »ç¿ëÇÒ ¶§ ÀÌ¿ëµÈ´Ù. (WindowFormIntegration¿Í System.Window.Forms À» ¾î¼Àºí¸®¿¡ ´ëÇÑ ÂüÁ¶ Ãß°¡¸¦ ÇÑ´Ù.)2.2.4 ¾Õ¼ Ãß°¡ÇÑ namespaceÀÎ nxPlanetÀ» ÀÌ¿ëÇÏ¿© NXPlanetViewÄÁÆ®·ÑÀ» ºÒ·¯¿Â´Ù. ÀÌ NXPlanetViewÀÇ À̸§(Name)Àº nxPlanetView1À¸·Î ÇÑ´Ù.
2.2.5 ÀÌ¾î¼ NXPlanetView ÄÁµå·Ñ À§¿¡ NXPlanetLayerÀ» ¿Ã·Á ³õ´Â´Ù. NXPlanetLayerÀÇ À̸§(Name)Àº nxPlanetLayer1À̶ó°í ÇÑ´Ù.
NXPlanetView´Â ´Ù¾çÇÑ NXPlanetLayerXXXXXµéÀ» ´ãÀ» ¼ö ÀÖ´Â ÄÁÅ×À̳ÊÀÌ´Ù. Áï, NXPlanetView´Â ´Ù¾çÇÑ ·¹À̾ ±¸¼ºÇÏ¿© ±¸ ±â¹Ý ±â´ÉÀ» ´Ù¾çÇÏ°Ô ±¸ÇöÇÒ ¼ö ÀÖ´Ù. NXPlanetLayer´Â PlanetView¿¡ Ãß°¡µÇ¾î XDL ¿£Áø¿¡¼ ¹ß»ýÇÏ´Â À̺¥Æ®¸¦ ¿ÜºÎ ¾îÇø®ÄÉÀ̼ǿ¡¼ ó¸®ÇÒ ¼ö ÀÖ´Ù. µðÀÚÀÎÀÌ ¿Ï·áµÇ¸é ¾Æ·¡¿Í °°Àº âÀ» ¾òÀ» ¼ö ÀÖ´Ù.
2.2.6 ¼Ö·ç¼ÇÀ» ºôµåÇÏ°í ½ÇÇàÇÑ´Ù.
2.3 ±â´É ¹× À̺¥Æ® Ãß°¡2.3.1 Window âÀ» ¼±ÅÃÇÏ°í [¼Ó¼º] â - [À̺¥Æ® ] ¸Þ´º¸¦ ¼±ÅÃÇÑ µÚ ¡°Loaded¡± À̺¥Æ®¸¦ ´õºí Ŭ¸¯ÇÑ´Ù.
¡°Loaded¡± À̺¥Æ®¸¦ ´õºí Ŭ¸¯Çϸé, ¡°Window_Loaded¡± ÇÔ¼ö°¡ ÀÚµ¿ÀûÀ¸·Î Ãß°¡µÇ°í ¾Æ·¡¿Í °°ÀÌ Ãß°¡ÀûÀÎ ±â´ÉÀ» ±¸ÇöÇÒ ¼ö ÀÖµµ·Ï MainWindow.xaml.csÀ¸·Î À̵¿ÇÏ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. ¾Æ·¡¿Í °°ÀÌ Äڵ带 Ãß°¡ÇÑ´Ù.
2.3.2 ¨ç~¨ï ÄÁÆ®·ÑÀ» °¢°¢ µðÀÚÀθðµå¿¡¼ ¼±ÅÃÇÑ ÈÄ ´õºí Ŭ¸¯ÇÑ´Ù.ÄÁÆ®·Ñ¿¡¼ ¸¶¿ì½º·Î ´õºí Ŭ¸¯ÇÏ¸é ´ëÇ¥ÀûÀÎ À̺¥Æ®¿¡ ´ëÇØ ÀÚµ¿ÀûÀ¸·Î ÇÔ¼ö°¡ Ãß°¡µÈ´Ù. ¾Æ·¡¿Í °°ÀÌ Äڵ带 MainWindow.xaml.cs¿¡ Ãß°¡ÇÑ´Ù.
ÀÌ¾î¼ Äڵ带 Ãß°¡ÇÑ´Ù.
¸¶Áö¸·À¸·Î View»ó¿¡¼ ¸¶¿ì½º À§Ä¡¿¡ ´ëÇÑ ÁÂÇ¥¸¦ ȸ鵵½ÃÇÏ°í, ³ªÄ§¹ÝÀ» ȸ鿡 Ãß°¡Çϵµ·Ï ÇÏ°Ú´Ù. ¸ÕÀú ¸¶¿ì½º ȸé ÁÂÇ¥¸¦ ÀúÀåÇÏ´Â º¯¼ö¿Í ȸ鵵½Ã¸¦ À§ÇÑ º¯¼ö¸¦ »ý¼ºÇÑ´Ù.
³ªÄ§¹Ý À̹ÌÁö·Î »ç¿ëÇÏ´Â ¡°compass.png¡± ÆÄÀÏÀÌ ¿¹Á¦ ÄÚµå¿Í °°Àº °æ·Î¿¡ ¾øÀ¸¸é, ¿¹Á¦ »ùÇà ÇÁ·Î±×·¥ ¾ÐÃà ÆÄÀÏ¿¡ ÀÖ´Â ÆÄÀÏÀ» ÀÌ¿ëÇϱ⠹ٶõ´Ù. 2.3.3 nxPlanetLayer1À» ¼±ÅÃÇÏ¿© ¡°OnWndProc¡± À̺¥Æ®¿Í ¡°OnOrthoRender¡± À̺¥Æ® ÇÔ¼ö¸¦ Ãß°¡ÇÏ¿© Äڵ带 ÀÛ¼ºÇÑ´Ù.OnWndProc À̺¥Æ®´Â NXPlanetLayer°¡ Ãß°¡µÇ¾î ÀÖ´Â ViewÀÇ À©µµ¿ì À̺¥Æ®¸¦ ¿ÜºÎ¿¡¼ ¹Þ¾Æ¼ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. OnOrthoRender´Â NXPlanetLayer°¡ Ãß°¡µÇ¾î ÀÖ´Â ViewÀÇ Ortho-renderingÀÌ ¿Ï·áµÈ ÈÄ ¾îÇø®ÄÉÀ̼ǿ¡¼ Ãß°¡ÀûÀÎ ÀÛ¾÷À» ±¸ÇöÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¶§ »ç¿ëÇÏ¸é µÈ´Ù. Âü°í·Î NXPlanetViewÀÇ ³»ºÎ Rendering ¼öÇà->OnRender À̺¥Æ® ¹ß»ý->NXPlanetViewÀÇ ³»ºÎ OrthoRendering ¼öÇà->OnOrthoRender À̺¥Æ® ¹ß»ý ¼ø¼·Î ÀÌ·ç¾îÁø´Ù. ÄÚµå´Â ¾Æ·¡¿Í °°´Ù.
2.3.4 ¼Ö·ç¼ÇÀ» ºôµåÇÏ°í ½ÇÇàÇÑ´Ù.
|