我用graphics在窗体上绘了一个图,然后用点连接处一个封闭的曲线出来,请问怎么才能取出曲线内的图,然后保存下来呢?图片

解决方案 »

  1.   

    用你封闭区域的点构建GraphicsPath,再用这个GP构建区域,在该区域绘图保存即可。比如:
    GraphicsPath gp = new GraphicsPath();
    gp.AddXXX(yourData);
    Region region = new Region(gp); 
    graphics.FillRegion(Brushes.Red, region); //也可以画图
    //最后保存即可。
      

  2.   

    闪烁问题使用双缓冲技术即可,主要有这样的句子:
    SetStyle(ControlStyles.UserPaint | ControlStyles.DoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true);
    在外面:
    Bitmap bmp = null;
    Graphics g = null;
    在初始化控件时:
    SetStyle(ControlStyles.UserPaint | ControlStyles.DoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true);
    this.UpdateStyles();
    Enabled = false;
    bmp = new Bitmap(100, 100);在OnPaint中做你要做的动作,动作中,把图画在bmp上即可。
    protected override void OnPaint(PaintEventArgs pea)
    {
    g  = pea.Graphics;
    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
    DrawClock(g);//这里是你要做的动作
    base.OnPaint (pea);
    }
    希望对你有用。