C#在form中绘制圆形图案的问题,急求!!!

主要想实现的效果是form1中按下按钮,可以将form2中的空心圆变为实心圆主要的画圆的代码,不需要非用picturebox的paint...网上能查到的都试过了,然而都... 主要想实现的效果是form1中按下按钮,可以将form2中的空心圆变为实心圆
主要的画圆的代码,不需要非用picturebox的paint...网上能查到的都试过了,然而都不显示!!!按解析试了一下改进方法也都没成功...
已经走头无路了...希望哪位大神能行行好直接做个工程分享QAQ...拜...
解决问题后金币重谢啊QAQ【虽然可能大神应该并不在乎这点东西吧...
展开
 我来答
百度网友d242235
2016-05-05 · TA获得超过2385个赞
知道大有可为答主
回答量:1403
采纳率:84%
帮助的人:811万
展开全部

对熟悉GDI+编程的人来说,这个功能并不难,只要不停的切换Graphics.FillEllipse和DrawEllipse函数就可以了,贴一下Form2的关键代码。

public partial class Form2 : Form
{
    private const int Diameter = 200; //圆的直径
    private bool _fillCircle;

    public Form2()
    {
        InitializeComponent();
    }

    private Point LeftTop
    {
        get
        {
            int x = DisplayRectangle.Width/2;
            int y = DisplayRectangle.Height/2;
            int radius = Diameter/2;

            return new Point(x - radius, y - radius);
        }
    }

    public void ReDraw()
    {
        //  切换空心和实心
        _fillCircle = !_fillCircle;

        //  重绘窗体
        Invalidate();
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        e.Graphics.SmoothingMode = SmoothingMode.HighQuality;

        //  取得圆形左上角的坐标位置
        Point circleStart = LeftTop;
        if (_fillCircle)
        {
            e.Graphics.FillEllipse(new SolidBrush(Color.CornflowerBlue), circleStart.X, circleStart.Y, Diameter, Diameter);
            e.Graphics.DrawEllipse(new Pen(Color.Red, 1.0f), circleStart.X, circleStart.Y, Diameter, Diameter);
        }
        else
        {
            e.Graphics.DrawEllipse(new Pen(Color.CornflowerBlue, 1.0f), circleStart.X, circleStart.Y, Diameter, Diameter);
        }
    }
}

然后你要在Form1中调用Form2的ReDraw函数

public partial class Form1 : Form
{
    private Form2 _form2;

    public Form1()
    {
        InitializeComponent();
    }

    private void btnDraw_Click(object sender, EventArgs e)
    {
        if (_form2 == null || _form2.IsDisposed)
            _form2 = new Form2();

        _form2.ReDraw();
        _form2.Show();
    }
}

如果看不太明白,就直接下载项目吧。

fs剑龙
2016-05-05 · 超过66用户采纳过TA的回答
知道答主
回答量:118
采纳率:0%
帮助的人:86万
展开全部
每个控件都有一个获取画布的方法,只要用画笔或画刷在返个画布上画图就可以了。另外要在窗体重新显示时仍然看到图片,则要把画图的代码写在窗体的重画方法里。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jimodeduzou
2016-05-05 · TA获得超过3202个赞
知道大有可为答主
回答量:2567
采纳率:66%
帮助的人:1276万
展开全部
整两张图片替换最方便.....
追问
我也想啊TAT...可是打算这么干之后被老师发现了...她要求要用画图...虽然只是整个程序中很小的一部分...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式