我用beizer曲线将椭圆分成8段弧,然后画了椭圆,椭圆是对称画的,可是出来的效果却差强人意,存在以下问题...1、右下角(第4象限)的弧明显和其它3段不对称,往里面凹进去,在想是不是beizer曲线的控制点取得不好。
我是连接椭圆的外界矩形的对角线与椭圆会有交点,过交点做椭圆的切线分别与椭圆的外接矩形相较于两个点,这2个交点便分别是2段beizer曲线的控制点。
如果有更好的控制点的取法,请问是怎样取?
2、如果椭圆画得很小的话,会非常不好看,不仅不圆,连椭圆的形状都走样得很厉害!
3、如果我把椭圆的线宽设为0,则走样得很厉害,而GDI+提供的反走样函数smoothmode似乎只有在有边的时候才能处理,我目前的处理方法是就算边界是0的时候,也用填充的颜色再画一个圈,可是存在的问题是如果我用渐进色填充椭圆的话,那就不能用此方法处理。很紧急!麻烦各位达人帮帮忙!!
我是连接椭圆的外界矩形的对角线与椭圆会有交点,过交点做椭圆的切线分别与椭圆的外接矩形相较于两个点,这2个交点便分别是2段beizer曲线的控制点。
如果有更好的控制点的取法,请问是怎样取?
2、如果椭圆画得很小的话,会非常不好看,不仅不圆,连椭圆的形状都走样得很厉害!
3、如果我把椭圆的线宽设为0,则走样得很厉害,而GDI+提供的反走样函数smoothmode似乎只有在有边的时候才能处理,我目前的处理方法是就算边界是0的时候,也用填充的颜色再画一个圈,可是存在的问题是如果我用渐进色填充椭圆的话,那就不能用此方法处理。很紧急!麻烦各位达人帮帮忙!!
1.采用镜像,应该不会出现。
2.没办法,光栅化的通病。
// MAGICAL CONSTANT to map ellipse to beziers
// 2/3*(sqrt(2)-1)
const double EToBConst = 0.2761423749154;
....居然还magical...额...
6楼的文章~~http://www.codeguru.com/cpp/g-m/gdi/article.php/c131/