首页 新闻 会员 周边

C# Winform在picturebox中画圈,最小化或拉动滚动条后,圈消失

0
悬赏园豆:30 [待解决问题]

在picturebox中画圈,最小化或拉动滚动条后,圈消失。

把代码写在paint事件中也不行

Graphics gc = pictureBox1.CreateGraphics();
gc.DrawEllipse(new Pen(Color.Red), new Rectangle(50, 50, 100, 100));
gc.Dispose();
+小马哥++的主页 +小马哥++ | 小虾三级 | 园豆:906
提问于:2015-01-19 11:22
< >
分享
所有回答(4)
-2

你得在 picturebox 中画。

Launcher | 园豆:45045 (高人七级) | 2015-01-19 11:25

是在picturebox中画。我看你之前好像回答过类似问题

支持(0) 反对(0) +小马哥++ | 园豆:906 (小虾三级) | 2015-01-19 11:27

@+小马哥++: 

Graphics gc = pictureBox1.CreateGraphics();

看你这段代码,你好像是在 pictureBox1 的父窗体中写的绘制代码。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-01-19 11:32

@Launcher: 不是在父窗体绘制的。是在picturebox中

支持(0) 反对(0) +小马哥++ | 园豆:906 (小虾三级) | 2015-01-19 11:35

@+小马哥++: 难道你的 PictureBox 派生类中还有个 PicutureBox 类型的成员变量 pictureBox1?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-01-19 11:47
0

怕是不能直接画在picturebox,你要new一个BitMap,然后画在BitMap中,把picturebox的Image之设为BitMap,这样才合理,能起到双缓冲的作用。

刘宏玺 | 园豆:14020 (专家六级) | 2015-01-19 11:39
0

private void DrawEllipseOnPictureBox()
        {
            Bitmap bmp = new Bitmap(this.pictureBox2.Width, this.pictureBox2.Height);
            Graphics g = Graphics.FromImage(bmp);
            g.DrawEllipse(new Pen(Color.Red), new Rectangle(50, 50, 100, 100));
            g.Dispose();
            this.pictureBox2.Image = bmp;
        }

Firen | 园豆:5385 (大侠五级) | 2015-01-19 16:26
0

你拉动 或者启动操作的时候 就会触发重绘 。肯定会消失!你把代码写在 重绘 函数里 。肯定一直在!

bos_kg | 园豆:7 (初学一级) | 2016-01-15 18:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册