使用Delphi如何画出具有抗锯齿能力(anti-aliasing)的直线,有无有关控件?(100分)

  • 主题发起人 主题发起人 chummy
  • 开始时间 开始时间
C

chummy

Unregistered / Unconfirmed
GUEST, unregistred user!
使用Delphi如何画出具有抗锯齿能力(anti-aliasing)的直线,
有无有关控件?
 
chummy,

Delphi itself does not has this ability. But you can try OpenGl.
 
I have s simple demo procedure to show how to draw anti-aliased line, :)
I'll put it tomorrow,
 
请问,什么是抗锯齿能力(anti-aliasing)的直线,
能不能形象地说一说?
 
呵呵,刚刚在大富翁论坛知到什么是Anti-Aliasing的。:)
就是避免显示直线(或任意曲线)时出现锯齿形边缘,以提高显示效果。
看看计算机图形学吧。很多算法的,比如有的跟离散余弦变换有关,具体没研究过。
在前导翻译的一本专讲计算机图形编程(包括游戏编程,id公司一位高手,Quake
作者之一写的)的书里面有一个很简单快速的算法,好像还是中国人提出来的,
没有任何复杂的变换,只是简单的位操作。现在书不在手边,如需要可把算法贴出来。

 
是这样的:
当您把低分辨率的直线放大时, 原先的点阵图像会呈现出锯齿状的边缘,
所以需要进行平滑, :)
 
把位图放大,到最后肯定会会呈现出锯齿状的边缘,也需要平滑。
但是用一般算法画直线,就算不放大,一般也会呈现出锯齿状的边缘呀(除了
特殊角度)
有的算法是基于点阵的,有的是基于矢量的,所以要区别对待。
 
把锯齿地方的颜色调淡不就感觉好多了吗?
(瞎说的)
 
>把锯齿地方的颜色调淡不就感觉好多了吗?
>(瞎说的)
hehe, eYes真是图像处理的天才!
抗锯齿的主要原理就是这样的!
 
不知道你的线条矢量化了没?否则在放大缩小的情况下和原来的效果是一样的.
 
采用Tmetafile可以得到矢量化的图形,先创建一个TmetaFileCanvas,就可以象在其他画布上来进行操作了。
 
//smoothln.zip
ftp://202.120.100.49/incoming/smoothln.zip

begin
thanks(tqz);
end;
 
I'm so tired, if not fair, please forgive me.
 
后退
顶部