当前位置:编程学习 > C#/ASP.NET >>

请问这个圆为什么不圆啊


Graphics graphics = e.CreateGraphics();
SolidBrush brush = new SolidBrush(Color.Blue);
Point point1 = new Point(100,100);
Rectangle rectangle = new Rectangle(point1, new Size(15, 15));
graphics.FillEllipse(brush,rectangle);


请问,为什么刷出来的圆,不圆呢?还号称计算机呢!!! --------------------编程问答-------------------- 你用的是矩形?不是Ecllipse

Graphics graphics = e.CreateGraphics();
SolidBrush brush = new SolidBrush(Color.Blue);
Point point1 = new Point(100,100);
Ecllipse rectangle = new Ecllipse (point1, new Size(15, 15));
graphics.FillEllipse(brush,rectangle);

--------------------编程问答-------------------- 太小了,你把Size改大点就能看出圆了 --------------------编程问答--------------------

public   void   DrawEllipseFloat(PaintEventArgs   e)
{
Pen   redkPen   =   new   Pen(Color.Red,   3);
float   x   =   0.0F;
float   y   =   0.0F;
float   width   =   200.0F;
float   height   =   200.0F;
e.Graphics.DrawEllipse(readPen,   x,   y,   width,   height);

--------------------编程问答--------------------
引用 2 楼 ojlovecd 的回复:
太小了,你把Size改大点就能看出圆了

可事实上,我只需要这么大的圆啊 --------------------编程问答-------------------- Graphics   g1   =   this.CreateGraphics();
g1.DrawEllipse(new   Pen(Color.Red,2),x,y,w,h);//来空心圆
g1.FillEllipse(Brushes.Red,x,y,w,h);//来实心圆  --------------------编程问答--------------------

Graphics graphics = e.CreateGraphics();
graphics.SmoothingMode = SmoothingMode.AntiAlias;
SolidBrush brush = new SolidBrush(Color.Blue);
Point point1 = new Point(100,100);
Rectangle rectangle = new Rectangle(point1, new Size(15, 15));
graphics.FillEllipse(brush,rectangle);


改为上面的试一下

--------------------编程问答--------------------
引用 5 楼 lcl_data 的回复:
Graphics g1 = this.CreateGraphics();
g1.DrawEllipse(new Pen(Color.Red,2),x,y,w,h);//来空心圆
g1.FillEllipse(Brushes.Red,x,y,w,h);//来实心圆


路过 , 借鉴...swing.... --------------------编程问答--------------------
引用 5 楼 lcl_data 的回复:
Graphics g1 = this.CreateGraphics();
g1.DrawEllipse(new Pen(Color.Red,2),x,y,w,h);//来空心圆
g1.FillEllipse(Brushes.Red,x,y,w,h);//来实心圆

还是不圆 --------------------编程问答--------------------
引用 6 楼 libinguest 的回复:
C# code

Graphics graphics = e.CreateGraphics();
graphics.SmoothingMode = SmoothingMode.AntiAlias;
SolidBrush brush = new SolidBrush(Color.Blue);
Point point1 = new Point(100,100);
Rectangle rec……

稍好一点,不过,边缘太模糊 --------------------编程问答-------------------- 屏幕输出是整形,打印机才是浮点型 --------------------编程问答--------------------
引用 10 楼 tomscat 的回复:
屏幕输出是整形,打印机才是浮点型

你的意思,屏幕输出就是不圆吗?可是我在其他地方,看到这么大的圆,就是圆的 --------------------编程问答-------------------- 觉得不圆就自己写算法
计算机图形学 正负法生成圆弧 --------------------编程问答--------------------
引用 6 楼 libinguest 的回复:
C# code

Graphics graphics = e.CreateGraphics();
graphics.SmoothingMode = SmoothingMode.AntiAlias;
SolidBrush brush = new SolidBrush(Color.Blue);
Point point1 = new Point(100,100);
Rectangle rec……

只有这个办法,消除锯齿。

或者lz画大一些。 --------------------编程问答--------------------
引用 12 楼 gxttr 的回复:
觉得不圆就自己写算法
计算机图形学 正负法生成圆弧

算法,俺不会呢?啥办法,都想尽了,都不行 --------------------编程问答--------------------
引用 14 楼 dvtd443 的回复:
引用 12 楼 gxttr 的回复:
觉得不圆就自己写算法
计算机图形学 正负法生成圆弧

算法,俺不会呢?啥办法,都想尽了,都不行

找个你觉得圆的图片再画到Graphics上。 --------------------编程问答--------------------
引用 15 楼 fangxinggood 的回复:
引用 14 楼 dvtd443 的回复:

引用 12 楼 gxttr 的回复:
觉得不圆就自己写算法
计算机图形学 正负法生成圆弧

算法,俺不会呢?啥办法,都想尽了,都不行

找个你觉得圆的图片再画到Graphics上。

+1 --------------------编程问答--------------------
引用 15 楼 fangxinggood 的回复:
引用 14 楼 dvtd443 的回复:

引用 12 楼 gxttr 的回复:
觉得不圆就自己写算法
计算机图形学 正负法生成圆弧

算法,俺不会呢?啥办法,都想尽了,都不行

找个你觉得圆的图片再画到Graphics上。

drawimage吗?也不行,找了几个ps高手专门做的图,drawimage上去,还是变形.......哎 --------------------编程问答-------------------- 你电脑分辨率的问题了吧 --------------------编程问答--------------------
引用 18 楼 gxttr 的回复:
你电脑分辨率的问题了吧

不是的 --------------------编程问答-------------------- 6楼的已经是最好的办法了,毕竟你的圆实在太小了 --------------------编程问答-------------------- 电脑就是这样的啊,没有真正的圆 --------------------编程问答--------------------
引用 21 楼 hebuttm 的回复:
电脑就是这样的啊,没有真正的圆

可为什么别人做的这个,就很圆呢?
--------------------编程问答-------------------- 这个圆,长得很有特色 --------------------编程问答-------------------- Graphics graphics = e.Graphics;
graphics.SmoothingMode = SmoothingMode.AntiAlias;
SolidBrush brush = new SolidBrush(Color.Blue);
Point point1 = new Point(100, 100);
Rectangle rectangle = new Rectangle(point1, new Size(15, 15));
graphics.DrawEllipse(Pens.Blue, rectangle);
graphics.FillEllipse(brush, rectangle);
--------------------编程问答--------------------
引用 23 楼 inhibitory 的回复:
这个圆,长得很有特色
 哈哈 哈哈
--------------------编程问答-------------------- 外面再把边框描一下就圆了。 --------------------编程问答--------------------
            Graphics graphics = this.CreateGraphics();
            graphics.SmoothingMode = SmoothingMode.AntiAlias;
            SolidBrush brush = new SolidBrush(Color.Blue);
            Point point1 = new Point(0, 0);
            int i = 1;
            for (int x = 1; x < 6; x++)
                for (int y = 1; y < 5; y++)
                {
                    i++;
                    point1 = new Point(x * 25, y * 25);
                    Rectangle rectangle = new Rectangle(point1, new Size(i, i));
                    graphics.FillEllipse(brush, rectangle);
                }
            graphics.Dispose();
--------------------编程问答-------------------- --------------------编程问答-------------------- 刚才错觉了,就 graphics.SmoothingMode = SmoothingMode.HighQuality 、AntiAlias 就行了。
--------------------编程问答-------------------- 加入反走样 --------------------编程问答--------------------
引用 30 楼 stormsnow2011 的回复:
加入反走样

反走样?啥意思?怎么用 --------------------编程问答-------------------- 我想到一个办法,多画几次,就可以把不圆的地方,抹圆了
可是,对话几次,这个坐标咋算呢?请教一下 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 30 楼 stormsnow2011 的回复:
加入反走样

这叫反锯齿。乱翻译。 --------------------编程问答-------------------- 你的分辨率问题? --------------------编程问答-------------------- 哈哈
引用 23 楼 inhibitory 的回复:
这个圆,长得很有特色
--------------------编程问答-------------------- 中国特色的圆 --------------------编程问答-------------------- WPF抗锯齿,可以试试 --------------------编程问答-------------------- 谁能画一个1x1像素的圆是圆的我就服了他! --------------------编程问答--------------------
引用 39 楼 zhao4zhong1 的回复:
谁能画一个1x1像素的圆是圆的我就服了他!

显示器上1*1的本身看上去就像圆的 不信你试试 错觉 哈哈 --------------------编程问答--------------------
引用 27 楼 caozhy 的回复:
C# code
            Graphics graphics = this.CreateGraphics();
            graphics.SmoothingMode = SmoothingMode.AntiAlias;
            SolidBrush brush = new SolidBrush(Color.Blue);
            ……


如果楼主使用27楼这样的办法都没画好 说明问题有2种. 
1 你的屏幕分辨率设置有问题 比如说拉伸的屏幕分辨率 原本屏幕尺寸是4:3 你非要安排一个16:9或者16:10的分辨率给它 就可能出现你看到的问题.
2 你的屏幕或者显卡有问题 出现这个问题就真杯具了.. --------------------编程问答-------------------- 先用笔画空心,再去填充试试? --------------------编程问答-------------------- 你是不是画在控件里面的?感觉是圆的直径大于控件大小的效果 --------------------编程问答-------------------- 那个应该是图片吧?gif图片 或者png图片
引用 22 楼 dvtd443 的回复:
引用 21 楼 hebuttm 的回复:
电脑就是这样的啊,没有真正的圆

可为什么别人做的这个,就很圆呢?
--------------------编程问答-------------------- 如果是我,我就用PS画个圆,再加载进软件。 --------------------编程问答-------------------- 是人民选择了这个圆。 --------------------编程问答-------------------- 虽然不是很清楚楼主所用的语言 貌似是微软的东西吧~我不搞这一块~但是这种情况下画圆不圆应该是没有设置抗锯齿和颜色抖动造成的~
SolidBrush brush 不过这个bursh应该可以设置像素抖动和防锯齿的
这里有一篇文章仅供参考~
http://www.softwelt.com/Know/KnowDetail-113740.html

望有所帮助

--------------------编程问答-------------------- 话说当年阿Q也画不圆! --------------------编程问答-------------------- 建议参考《windows程序设计》,那里面的范例有关于圆画法的介绍,虽然那个是c的,但是算法用得上,相信楼主能够看得懂的。 --------------------编程问答--------------------
引用 27 楼 caozhy 的回复:
C# code
            Graphics graphics = this.CreateGraphics();
            graphics.SmoothingMode = SmoothingMode.AntiAlias;
            SolidBrush brush = new SolidBrush(Color.Blue);
            Po……

顶。 --------------------编程问答-------------------- 反走样
--------------------编程问答-------------------- --------------------编程问答--------------------   外方内圆 很强大 --------------------编程问答-------------------- 太小了,你把Size改大点就能看出圆了 --------------------编程问答-------------------- 太小了,你把Size改大点就能看出圆了 --------------------编程问答--------------------
引用 27 楼 caozhy 的回复:
C# code
            Graphics graphics = this.CreateGraphics();
            graphics.SmoothingMode = SmoothingMode.AntiAlias;
            SolidBrush brush = new SolidBrush(Color.Blue);
            ……


学习,不错 --------------------编程问答--------------------
引用 34 楼 caozhy 的回复:
引用 30 楼 stormsnow2011 的回复:
加入反走样

这叫反锯齿。乱翻译。


没有乱翻译,图形学课本上叫反走样 --------------------编程问答-------------------- --------------------编程问答-------------------- 一般调用图片资源~ --------------------编程问答-------------------- --------------------编程问答-------------------- 没啥,只求加分。 --------------------编程问答--------------------  protected override void OnPaint(PaintEventArgs e)
        {
            this.Width = this.Height;
            e.Graphics.FillEllipse(new SolidBrush(ShowColor), e.ClipRectangle);
        } --------------------编程问答-------------------- --------------------编程问答-------------------- 它傲娇了 --------------------编程问答--------------------
引用 40 楼 sjzlxd 的回复:
引用 39 楼 zhao4zhong1 的回复:
谁能画一个1x1像素的圆是圆的我就服了他!

显示器上1*1的本身看上去就像圆的 不信你试试 错觉 哈哈


1*1的圆能看的到吗 --------------------编程问答-------------------- --------------------编程问答-------------------- 咋那么笨呢,不会拿圆规画啊!-  -~! --------------------编程问答-------------------- 圆太小
一个一像素大的圆是方的
目前只能像上面的反走样那样做 --------------------编程问答-------------------- 话说当年阿Q也是画不圆呢。 --------------------编程问答-------------------- 居然在方框里面填充圆...
graphics.FillEllipse(brush,rectangle); --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 嘿嘿,有意思 --------------------编程问答-------------------- 楼主的是8角形吧。 --------------------编程问答-------------------- 把尺寸搞大点,显示的时候缩小 --------------------编程问答-------------------- --------------------编程问答-------------------- 搞笑吗? --------------------编程问答-------------------- 不知道的路过.接分走人 --------------------编程问答-------------------- Size大小 --------------------编程问答-------------------- LZ你电脑坏了!!! --------------------编程问答--------------------
引用 37 楼 lynn_h10 的回复:
中国特色的圆


幽默了 --------------------编程问答-------------------- 圆形就是方形!! --------------------编程问答-------------------- Graphics graphics = e.CreateGraphics();
graphics.SmoothMode=Anti;
SolidBrush brush = new SolidBrush(Color.Blue);
Point point1 = new Point(100,100);
Rectangle rectangle = new Rectangle(point1, new Size(15, 15));
graphics.FillEllipse(brush,rectangle);
--------------------编程问答-------------------- 终于圆了!!!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,