none
如何用C#用*编写一个规则的圆形 RRS feed

答案

  • 你好 参考我下面的这段代码 可以画出个用*组成的圆形

    protected override void OnPaintBackground(PaintEventArgs e)
          {
             base.OnPaintBackground(e);

             Graphics g = e.Graphics;

             //定义椭圆的大小限制的矩形,此处定义为圆直径为200
             int x = 30;
             int y = 30;
             int width = 200;
             int height = 200;
             Rectangle rect = new Rectangle(x, y, width, height);

             //画个*的位图大小20px,颜色为黑色
             Bitmap starBitmap = new Bitmap(10, 10);
             Graphics startG = Graphics.FromImage(starBitmap);
             startG.DrawString("*", new Font(this.Font.FontFamily, 10, GraphicsUnit.Pixel), Brushes.Black, new RectangleF(0, 0, 10, 10));
             startG.Save();
             g.FillEllipse(new TextureBrush(starBitmap), rect);
          }




    如果仅是一个边框是*的圆形

    protected override void OnPaintBackground(PaintEventArgs e)
          {
             base.OnPaintBackground(e);

             Graphics g = e.Graphics;
             //红色画笔填充圆内部
             SolidBrush redBrush = new SolidBrush(Color.Red);

             //定义椭圆的大小限制的矩形,此处定义为圆直径为200
             int x = 30;
             int y = 30;
             int width = 200;
             int height = 200;
             Rectangle rect = new Rectangle(x, y, width, height);

             //画个*的位图大小20px,颜色为黑色
             Bitmap starBitmap = new Bitmap(20, 20);
             Graphics startG = Graphics.FromImage(starBitmap);
             startG.DrawString("*", new Font(this.Font.FontFamily, 20, GraphicsUnit.Pixel), Brushes.Black, new RectangleF(0, 0, 20, 20));
             startG.Save();

             //这个圆的边的画笔
             Pen starPen = new Pen(new TextureBrush(starBitmap), 20);
             float startAngle = 0.0F;
             float sweepAngle = 360.0F;
             g.DrawArc(starPen, rect, startAngle, sweepAngle);
             g.FillEllipse(redBrush, rect);
          }


    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年9月25日 2:29
    版主
  • 你好!
         你是想在控制台(黑色窗口)下输出一个*组成的圆吧!
         如果半径小的话很难看起来规则,可以把半径设置的大一些,然后利用循环和Console.Write("*")来实现,实际上很难看起来规则,需要反复调整!
         这种练习还是建议你自己做一下,就是练习循环的使用,不然你总也跨不过这个门槛啊!
    周雪峰
    2009年9月25日 6:04
    版主

全部回复

  • 用文本输出还是图形输出?

    半径要求多少?


    family as water
    2009年9月25日 1:20
  • 你好 参考我下面的这段代码 可以画出个用*组成的圆形

    protected override void OnPaintBackground(PaintEventArgs e)
          {
             base.OnPaintBackground(e);

             Graphics g = e.Graphics;

             //定义椭圆的大小限制的矩形,此处定义为圆直径为200
             int x = 30;
             int y = 30;
             int width = 200;
             int height = 200;
             Rectangle rect = new Rectangle(x, y, width, height);

             //画个*的位图大小20px,颜色为黑色
             Bitmap starBitmap = new Bitmap(10, 10);
             Graphics startG = Graphics.FromImage(starBitmap);
             startG.DrawString("*", new Font(this.Font.FontFamily, 10, GraphicsUnit.Pixel), Brushes.Black, new RectangleF(0, 0, 10, 10));
             startG.Save();
             g.FillEllipse(new TextureBrush(starBitmap), rect);
          }




    如果仅是一个边框是*的圆形

    protected override void OnPaintBackground(PaintEventArgs e)
          {
             base.OnPaintBackground(e);

             Graphics g = e.Graphics;
             //红色画笔填充圆内部
             SolidBrush redBrush = new SolidBrush(Color.Red);

             //定义椭圆的大小限制的矩形,此处定义为圆直径为200
             int x = 30;
             int y = 30;
             int width = 200;
             int height = 200;
             Rectangle rect = new Rectangle(x, y, width, height);

             //画个*的位图大小20px,颜色为黑色
             Bitmap starBitmap = new Bitmap(20, 20);
             Graphics startG = Graphics.FromImage(starBitmap);
             startG.DrawString("*", new Font(this.Font.FontFamily, 20, GraphicsUnit.Pixel), Brushes.Black, new RectangleF(0, 0, 20, 20));
             startG.Save();

             //这个圆的边的画笔
             Pen starPen = new Pen(new TextureBrush(starBitmap), 20);
             float startAngle = 0.0F;
             float sweepAngle = 360.0F;
             g.DrawArc(starPen, rect, startAngle, sweepAngle);
             g.FillEllipse(redBrush, rect);
          }


    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年9月25日 2:29
    版主
  • 你好!
         你是想在控制台(黑色窗口)下输出一个*组成的圆吧!
         如果半径小的话很难看起来规则,可以把半径设置的大一些,然后利用循环和Console.Write("*")来实现,实际上很难看起来规则,需要反复调整!
         这种练习还是建议你自己做一下,就是练习循环的使用,不然你总也跨不过这个门槛啊!
    周雪峰
    2009年9月25日 6:04
    版主