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

.net画圆问题(新手请教)

在form-paint事件中利用g.DrawEllipse可以实现画圆的效果,现在遇到的问题的,我想在另外几个事件中改变这个圆的背景颜色,该怎么操作这个圆呢,请大家指点,谢谢了

另外我在窗体load事件中能实现画圆不? --------------------编程问答-------------------- 其他事件中改变颜色,然后调用窗体的Invalidate接口,在Onpaint中使用这个颜色画图
load事件可以画图,不过如果不在paint中画图的话,你就算画出来也看不到(被刷新掉了) --------------------编程问答-------------------- 谢谢楼上回复,请问“其他事件中改变颜色,然后调用窗体的Invalidate接口,在Onpaint中使用这个颜色画图”是什么意思啊,能说得详细点吗,谢谢了
--------------------编程问答-------------------- override onpaint方法, 写画东西的逻辑。

然后在需要重画的时候, 调用Invalidate方法, 就自动重画了。 --------------------编程问答-------------------- 谢谢楼上,请问能给个例子看看吗,谢谢了 --------------------编程问答-------------------- Color redColor = Color.Red --------------------编程问答-------------------- 我在Form1_Paint事件中写了如下代码,画了一个红色实心圆: 
Dim tbrush As New Drawing.SolidBrush(Color.Red)
        Dim j As Integer = 0
        Dim g As Graphics
        g = Me.CreateGraphics
        g.FillEllipse(tbrush, 0, 0, 20, 20)

我想在button1_click事件中判断这个园,如果其颜色是红色,就变成绿色;如果其颜色是绿色,就变成红色,该怎么实现呢,请各位高手指点啊,谢谢了
       
       --------------------编程问答--------------------
引用 6 楼 xiaojin0710 的回复:
我在Form1_Paint事件中写了如下代码,画了一个红色实心圆: 
Dim tbrush As New Drawing.SolidBrush(Color.Red)
  Dim j As Integer = 0
  Dim g As Graphics
  g = Me.CreateGraphics
  g.FillEllipse(tbrush, 0, 0, 20, 20)

我想在b……

// 当前圆的颜色
Color currentColor;

Paint()
{
   ...
   Drawing.SolidBrush(currentColor)
   ...
}

button1_Click()
{
   if(currentColor == Color.Red)
   {
       currentColor = Color.Green;
    }
    if(currentColor == Color.Green)
    {
        currentColor = Color.Red;
     }
    this.Refresh(); // this 代表你在上面画圆的控件,比如:form
} --------------------编程问答-------------------- 楼主这种情况
1 load事件肯定可以绘画,但是无法显示,建议Onpaint里面画
2 你需要反复改变圆点颜色,必须重绘
   建议你实际应用过重载一个圆型label或者button,通过属性改变颜色最方便

代码:
public partial class EllipseButton : System.Windows.Forms.Button
    {
        private Color startColor = Color.Blue;

        private Color endColor = Color.GreenYellow;

        [Description("设定渐变的起始色"), Category("Appearance")]//注视 

        public Color StartColor
        {
            get
            {
                return startColor;
            }
            set
            {
                startColor = value;

                RePaint();
            }
        }
        [Description("设定渐变的终止色"), Category("Appearance")]
        public Color EndColor
        {
            get
            {
                return endColor;
            }
            set
            {
                endColor = value;
                RePaint();
            }

        }
        public EllipseButton()
        {
            InitializeComponent();

            this.Width = 25;

            this.Height = 25;
        }
        //绘制圆形区域
        protected override void OnPaint(PaintEventArgs pe)
        {
            base.OnPaint(pe);

            Graphics g = pe.Graphics;

            g.SmoothingMode = SmoothingMode.AntiAlias;

            g.Clear(this.BackColor);

            Rectangle rect = new Rectangle(0, 0, this.Width, this.Height);

            LinearGradientBrush myBrush = new LinearGradientBrush(rect, startColor, endColor, LinearGradientMode.ForwardDiagonal);

            g.FillEllipse(myBrush, rect);

            myBrush.Dispose();

            StringFormat format = new StringFormat();

            format.LineAlignment = StringAlignment.Center;

            format.Alignment = StringAlignment.Center;

            g.DrawString(this.Text, Font, new SolidBrush(this.ForeColor), rect, format);


        }
        //重新绘制圆形区域
        private void RePaint()
        {
            Rectangle rect = new Rectangle(0, 0, this.Width, this.Height);

            OnPaint(new PaintEventArgs(this.CreateGraphics(), rect));
        }
        private void EllipseButton_Resize(object sender, System.EventArgs e)
        {
            RePaint();
        }
        private void EllipseButton_TextChanged(object sender, System.EventArgs e)
        {
            RePaint();
        }

    }
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,