我直接使用图形的整体经验包括使用Turbo Pascal的gdi单元在386年前的机器上绘制形状,发现它难以忍受的速度并且从未给它第二个想法。换句话说,我接下来不知道从哪里开始。
对于一个简单的互联网广播播放器应用程序,我想设计一个有点类似于Winamp的图形显示(但是眼睛更大更容易,因为这种显示器的模糊性是我试图做的一个原因拥有)。
模仿LED显示屏的简单图形组件当然远远不够。我不希望绘制可点击的UI控件,当然也不是皮肤 - 只是读数,带有文本,数字和一些符号。我知道Delphi 2010支持Direct2D,但我只有D2009。
我有什么选择?是否有任何第三方组件可以提供帮助?
编辑两个小点。我需要绘图无闪烁(即,不像我多年前在Turbo Pascal中所经历的那样:-)。 TCanvas会变得足够快吗?另外,我可能想要使用alphablending,我认为我不能使用基本的TextOut,LineTo等图形API。 (我只是不知道有什么可能)。 GDI +怎么样?
答案 0 :(得分:3)
Delphi的快速2D图形库在Sourceforge上作为开源提供:
Graphics32(主页:http://www.graphics32.org/)
Graphics32是一个图形库 Delphi和Kylix / CLX。优化 32位像素格式,提供快速 像素和图形的操作 原语。在大多数情况下Graphics32 明显优于标准 TBitmap / TCanvas方法。
功能一些Graphics32功能包括:
从版本1.5.1b开始,Graphics32根据Mozilla Public License的条款获得许可。
答案 1 :(得分:1)
看看TCanvas。它内置于大多数可视控件中,并包含简单的方法,可用于您正在查看的简单绘图,而无需使用DirectX或OpenGL。如果你想要一个非常简单的表面你可以画画,在表格上放置一个空白的 TImage TPaintBox,并使用它的画布作为绘图表面。
答案 2 :(得分:0)
大多数情况下,我同意梅森和评论。 TPaintBox真的是一个非常简单的组件。您实现OnPaint事件并完全控制。它在足够快的机器上足够快。
将它放在TScrollBox上,您甚至不必担心用户滚动到的位置:)
确保查看父控件的DoubleBufferred
属性(panel / ScrollBox)。
如果是复杂的绘图/图形,请查看InvalidateRect
- 这会控制画布的哪个区域被重绘。
当然,像所有图形/绘图一样,它很快变得非常复杂:(
答案 3 :(得分:0)