1

我在 GMS2 中使用包装器库 这是在 GM6 Days (gamemaker) 中制作的,有人能够包装大部分 win32API 以在 GM6-8 中使用。在将控件绘制到主应用程序窗口时,只有 1 个奇怪的实例是 WinAPI 系统似乎搞砸了。

所需的目标是将图像绘制到子窗口并绘制一个网格,根据用户输入 EX: 16x16 定义它的拆分,并让用户通过鼠标单击 + 拖动框来选择正方形。

不幸的是,我在 win32API 方面几乎没有经验,所以我对从哪里开始有点迷茫。查看文档,看起来他留下了 DLL 的大部分脚本名称,以模仿在 C++ 或 C 中调用时的格式(只是我的假设)。

从他的文档中,他有诸如“绘图系统”之类的东西,其中包含诸如“移动项目”、“添加线”、“添加图形缓冲区”等内容……然后是其他图形缓冲区功能。但是还有“Draw”函数,其中包含“Draw Fill Rect,DrawSelectObj”等......他并没有真正提供示例,所以我不确定如何将这些东西一起使用以获得我想要的结果。绘图系统和绘图函数有什么区别?我必须将它们与图形缓冲区一起使用吗?

有人可以指出完成它的必要步骤的正确方向吗?一个没有代码的示例和等效的函数就足够了,我只需要知道要使用哪些函数,然后将其绑定到子窗口。

他的演示中的示例代码是这样的

GbGradient2 = API_GB_Create (105,105); //Graphics Buffer
DcGradient2 = API_GB_GetDC (GbGradient2); 
API_Draw_Gradient (DcGradient2,0,0,105,105,0,c_yellow,c_lime);
BrGradient2 = API_Draw_CreatePatternBrush (API_GB_GetBitmap (GbGradient2));
API_Draw_Gradient (DcGradient2,0,0,105,105,0,c_red,65535);
BrGradient3 = API_Draw_CreatePatternBrush (API_GB_GetBitmap (GbGradient2));

hRectangle = API_DS_AddRectangle (2,5,5,105,105); // Adds a rectangle(Drawing System)
hEllipse = API_DS_AddEllipse (2,5,5,105,105);
hNoPen = API_Draw_CreatePen (PS_NULL,0,0);
API_DS_SetItemBrush (hRectangle,BrGradient2); // Sets the brush
API_DS_SetItemBrush (hEllipse,BrGradient3);
API_DS_SetItemPen (hRectangle,hNoPen); // Sets the pen
API_DS_SetItemPen (hEllipse,hNoPen);
API_Draw_Gradient  (GbGradient2,0,0,16,16,0,c_yellow,c_lime);

再看看它,看起来绘图函数以某种方式链接到 GDI。

4

1 回答 1

0

由于 GMS2 是一个跨平台工具,它的仅 Windows 功能气体已被移除。您可以使用 GMS2 对象为该 porpose 制作一个不错的 GUI,因为您对 Win32 API 有一点 Xp,这将比那些笨拙的编码更容易

这里有一些提示,

  • 创建一个带有矩形精灵的窗口对象
  • 在上述对象的创建事件中创建 ui 对象
  • 向全局鼠标事件添加一些代码
于 2020-10-31T05:05:45.800 回答