Delphi 2009中纯图形显示的选项

时间:2010-11-17 18:48:54

标签: delphi graphics delphi-2009 gdi

我直接使用图形的整体经验包括使用Turbo Pascal的gdi单元在386年前的机器上绘制形状,发现它难以忍受的速度并且从未给它第二个想法。换句话说,我接下来不知道从哪里开始。

对于一个简单的互联网广播播放器应用程序,我想设计一个有点类似于Winamp的图形显示(但是眼睛更大更容易,因为这种显示器的模糊性是我试图做的一个原因拥有)。

模仿LED显示屏的简单图形组件当然远远不够。我不希望绘制可点击的UI控件,当然也不是皮肤 - 只是读数,带有文本,数字和一些符号。我知道Delphi 2010支持Direct2D,但我只有D2009。

我有什么选择?是否有任何第三方组件可以提供帮助?

编辑两个小点。我需要绘图无闪烁(即,不像我多年前在Turbo Pascal中所经历的那样:-)。 TCanvas会变得足够快吗?另外,我可能想要使用alphablending,我认为我不能使用基本的TextOut,LineTo等图形API。 (我只是不知道有什么可能)。 GDI +怎么样?

4 个答案:

答案 0 :(得分:3)

Delphi的快速2D图形库在Sourceforge上作为开源提供:

Graphics32(主页:http://www.graphics32.org/

  

Graphics32是一个图形库   Delphi和Kylix / CLX。优化   32位像素格式,提供快速   像素和图形的操作   原语。在大多数情况下Graphics32   明显优于标准   TBitmap / TCanvas方法。

功能一些Graphics32功能包括:

  • 与标准TBitmap相比,快速逐像素访问速度提高了100倍;
  • 高性能Bitmap alpha混合(包括每像素alpha混合);
  • 像素,线和多边形抗锯齿,具有亚像素精度(结合alpha混合);
  • 任意多边形转换和自定义填充;
  • 使用高质量重建滤镜重新取样位图(例如Lanczos,Cubic,Mitchell);
  • 一种独特的最先进的光栅化系统;
  • 位图的仿射变换:具有子像素精度的旋转,缩放等;
  • 位图的任意投影变换;
  • 任意重映射位图的转换(例如,用于Warping,Morphing);
  • 灵活的超级采样实现,以获得最大的采样质量;
  • 通过基于MicroTiles的高级重绘优化器显示具有优化双缓冲的组件的无闪烁图像;
  • 多个可自定义的易于使用的叠加层;
  • 锁定位图以实现安全多线程;
  • 用于RGB和alpha通道加载的属性编辑器;
  • 标准TPicture支持的图像格式的设计时加载;
  • 适用于Borland Delphi,C ++ Builder和Kylix(支持Kylix的最后一个版本是1.8.3)。

从版本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)

刚看到你的编辑。如果你需要alpha混合和无闪烁绘图,TCanvas可能不会对你有好处。您应该查看包装OpenGL或Direct3D的组件,并为您提供高功率图形画布。

其中一个包是Asphyre,但我不确定他们是否有适用于Delphi 2009+的版本。我还有一个包装SDL 1.3的自定义库,并为您提供了一个可以放在Delphi表单上的绘图框组件。它确实适用于Delphi 2009及更高版本,但我尚未将其作为自己的软件包发布。你可以在我的游戏引擎的SVN存档中找到它,但如果你可以等一两天,我可以尝试将它制作成一个易于使用的BPL组件包并可供下载。