C++ GDI。。。或C+的等效物+;?

C++ GDI。。。或C+的等效物+;?,c++,winforms,gdi+,gdi,C++,Winforms,Gdi+,Gdi,我把自己弄糊涂了,所以我想这里是一个问这个问题的好地方 Irrlicht: 从技术上讲,它是一个游戏引擎,但我在许多项目中使用过它来绘制简单的2D UI。学习曲线也非常平缓 不管怎么说,它拥有你想要的所有控件,但是如果你愿意,它可以让你自己编写 不久前,我被告知GDI是一个C#东西 当然不是,GDI早于.NET,是c/c++和兼容语言的默认选择。它至少可以追溯到Windows 3天(之前我没有使用过的任何东西,所以我不能发表评论) Microsoft Windows图形设备界面(GDI)使应用

我把自己弄糊涂了,所以我想这里是一个问这个问题的好地方

<如果我想在C++中编写自己的自定义控件(完全自定义绘制),那么我有什么替代GDI/GDI+?

我已经在GDI中用VB做了这段时间,但是我想从C++开始。 我不喜欢使用任何第三方的东西,而是坚持使用本机。我将要制作的应用程序类型我想你可以说类似于基于WinForms应用程序/GUI的应用程序

<>但是我不想在C++中创建WiFrm应用程序。 在C++中,我应该使用DICT2D进行UI绘图吗?或者C++有GDI?我应该用什么

我将创建的控件类型有:

文本框、列表视图、开关控件、进度指示器。。。基本上,我将从头开始重写C++中所有的控件。

< P> Irrlicht:

从技术上讲,它是一个游戏引擎,但我在许多项目中使用过它来绘制简单的2D UI。学习曲线也非常平缓

不管怎么说,它拥有你想要的所有控件,但是如果你愿意,它可以让你自己编写

不久前,我被告知GDI是一个C#东西

当然不是,GDI早于.NET,是c/c++和兼容语言的默认选择。它至少可以追溯到Windows 3天(之前我没有使用过的任何东西,所以我不能发表评论)

Microsoft Windows图形设备界面(GDI)使应用程序能够在视频显示器和打印机上使用图形和格式化文本。基于Windows的应用程序不直接访问图形硬件。相反,GDI代表应用程序与设备驱动程序交互-

GDI+是“面向C/C++程序员的基于类的API”:

Windows GDI+是面向C/C++程序员的基于类的API。它使应用程序能够在视频显示器和打印机上使用图形和格式化文本。基于Microsoft Win32 API的应用程序不直接访问图形硬件。相反,GDI+代表应用程序与设备驱动程序交互。Microsoft Win64也支持GDI+

作品:

我想在C++中编写自己的自定义控件(完全自定义绘制)?< /P> 好问题。由于您希望在C++中创建它们,并执行完全自定义绘制,所以您有两个选项。 子类别化 这是一个非常古老的技术,我不确定是否有人再麻烦。这是我们在OLE/ActiveX控件出现之前所做的事情。这样做的目的是让控件已经存在,并且在运行时可以创建子类,这样就可以有效地接管控件的外观。缺点是容器做了大量的工作,并且它们实际上不是可重用的

ActiveX控件 最初是olecom控件;ActiveX大约出现在1995年左右,当时互联网正在起飞,需要将OLE控件变小,以便更快地加载网页。它们本质上是OLE控件,但删除了许多不需要的COM接口,这些接口对于网页来说并不是真正需要的

ActiveX控件,即COM;与子类化不同,它们与语言无关,并且真正可重用。您可以将ActiveX嵌入到COM感知容器中,无论它们是C++;德尔菲;视觉对象;VB;通道web甚至.NET WinForms

定制绘制

ActiveX真正的好处在于,您可以创建复合控件(包含其他标准Windows控件的控件)或完全可渲染的空白控件,在这些控件中,您可以使用GDI/GDI+(或任何可以渲染到GDI上下文的控件),从而创建一个真正漂亮的控件;定制控制

看过那些漂亮的图表吗?很有可能是他们

查找微软ATL C++类库。它为创建COM ActiveX控件和容器提供了一些很好的框架。WTL也是一个很好的通用库,如果内存可用,MS会将其发布到公共域

Direct2D 在C++中,我应该使用DICT2D进行UI绘图吗?或者C++有GDI?我应该用什么

除非您特别需要硬件加速,否则使用Direct2D会使您走上您可能不希望走的特定道路,例如在支持Direct2D的计算机上,在应用程序中设置Direct2D环境。但是,如果你感兴趣的话


我会坚持使用GDI/GDI+。

Direct2D对于自定义控件来说可能是杀伤力过大;你不想使用GDI有什么原因吗?如果你想“坚持本土”,这真的是一个显而易见的选择。@JonathanPotter刚才告诉我GDI是一个C#东西。我从来没有见过像GDI一样的C++,所以我只是不看就相信了。但是,当我在C++中搜索自定义绘图时,我看到的是DigTrRITE DICT2D等等。如果GDI可用,我将使用它。我很高兴。那Direct2D怎么办呢?你能详细阐述一下吗?GDI是一个本地的Windows API,意思是它在C和C++中也可用(以及其他语言)。DigT2D是一个基于COM的API,虽然可以从C++中使用,但比GDI要复杂得多。除非您需要它所能提供的性能,而这对于控件来说似乎不太可能,否则GDI应该可以。