以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [分享]绘制反锯齿椭圆形代码  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=7521)

--  作者:qtcks
--  发布时间:2010/7/4 21:01:00
--  [分享]绘制反锯齿椭圆形代码

Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim g As Graphics = p.Graphics
g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias     ‘反锯齿代码


g.DrawEllipse(Pens.Blue,30,30,100,100)
p.Repaint()


图片点击可在新窗口打开查看此主题相关图片如下:反锯齿.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2010-7-4 21:42:30编辑过]

--  作者:qtcks
--  发布时间:2010/7/4 21:46:00
--  
顶,申请加精
--  作者:qtcks
--  发布时间:2010/7/4 21:54:00
--  
Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim g As Graphics = p.Graphics
Dim fnt As New Font("宋体",76)
Dim msg As String = "I Like Foxtable"
g.TextRenderingHint=TextRenderingHint.AntiAlias     \'消除文字锯齿
g.DrawString(msg,fnt,Brushes.Red,10,10)
p.Repaint()

--  作者:qtcks
--  发布时间:2010/7/4 22:23:00
--  
 用直线和曲线消除锯齿
Windows 窗体编程<!---->
用直线和曲线消除锯齿<!---->
<!--Content type: DocStudio. Transform: devdiv2mtps.xslt.-->

当使用 GDI+ 绘制直线时,需要提供直线的起点和终点,但不必提供有关直线上个别像素的任何信息。GDI+ 与显示设备驱动程序软件协同工作,以确定要开启哪些像素以便在特殊显示设备上显示直线。

锯齿化

请注意从点 (4,2) 到点 (16,10) 的红色直线。假定坐标系统的原点位于左上角且度量单位是像素。另外假定 x 坐标轴指向右边、y 坐标轴指向下边。下面的插图显示了在多颜色背景下绘制的红线的放大视图。

未消除锯齿的线条

用来呈现直线的红色像素是不透明的。直线中没有部分透明的像素。这种呈现类型的直线看上去带有锯齿,有点像楼梯。这种用楼梯状来表示直线的技术被称为锯齿化;楼梯是理论直线的一个别名。

消除锯齿

一项更为复杂的呈现直线的技术需要使用部分透明的像素和不透明的像素。像素被设为纯红色或红色与背景色的混合色(取决于它们和直线的接近程度)。这种呈现方式被称为消除锯齿,它可以生成视觉上更感平滑的直线。下面的插图显示了如何混合特定的像素和背景来生成消除锯齿的直线。

消除锯齿的线条

消除锯齿(也称为平滑)也可应用于曲线。下面的插图显示了平滑椭圆的放大视图。

消除锯齿的曲线

下面的插图显示了实际大小的同一个椭圆,一次没有使用消除锯齿,另一次使用了消除锯齿。

消除锯齿示例

若要使用“消除锯齿”功能绘制直线和曲线,请创建 Graphics 类的实例,并将其 SmoothingMode 属性设置为 AntiAliasHighQuality。然后调用同一 Graphics 类的某个绘制方法。

Visual Basic
myGraphics.SmoothingMode = SmoothingMode.AntiAlias
myGraphics.DrawLine(myPen, 0, 0, 12, 8)
myGraphics.SmoothingMode = SmoothingMode.AntiAlias;
myGraphics.DrawLine(myPen, 0, 0, 12, 8);

--  作者:程兴刚
--  发布时间:2010/7/4 23:09:00
--  
顶,应该加精,很有用!
--  作者:czy
--  发布时间:2010/7/4 23:42:00
--  

好!顶一个。

加精!


--  作者:狐狸爸爸
--  发布时间:2010/7/5 7:10:00
--  
呵呵,谢谢了
--  作者:kylin
--  发布时间:2010/7/5 8:26:00
--  

楼主,敬佩你的探索精神!

 

不如老六给收留在Foxtable之中了,省得大家每次都要来写这一行。


--  作者:baoxyang
--  发布时间:2010/7/5 11:18:00
--  

建议老六加入在Foxtable应用之中,并写入帮助中。


--  作者:狐狸爸爸
--  发布时间:2010/7/5 11:43:00
--  
以下是引用baoxyang在2010-7-5 11:18:00的发言:

建议老六加入在Foxtable应用之中,并写入帮助中。

 

图片点击可在新窗口打开查看