none
GDI绘图的问题(C/S)。 RRS feed

  • 问题

  • 最近用gdi作程序,遇到点问题。 
    ①绘制到面板上的图象,我发清楚。用clear的话,只能把背景变为纯色。 
    ②绘制后,最小化窗口,然后再弹出,画板上面的东西就会消失了。 
    ③有时候绘图量大的时候,图像也会消失。

    各位大侠,有什么方法解决这几个问题哈。谢谢了先

    我只愿面朝大海,春暖花开……
    2009年10月22日 2:02

答案

全部回复

  • 我试了drawimage的方法,在实现坐标跟随时,我绘出了两条线(x,y)用来定位鼠标坐标,这两条线跟随鼠标移动,但是用drawimage的方法,cpu占用达到了50%,移动越快占用率越高。
    有没有什么好的方法?

    代码:
    private void panel1_MouseMove(object sender, MouseEventArgs e)//鼠标跟随绘制
            {
                if (e.X >= 45 && e.X <= 343&&e.Y>=79&&e.Y<=366)
                {
                    cleartip();
                    x = e.X;
                    y = e.Y;
                    Graphics gc = panel1.CreateGraphics();
                    Pen p = new Pen(Color.Beige, 1);
                    Point dx1 = new Point(x, 79);
                    Point dx2 = new Point(x, 366);
                    Point dy1 = new Point(45, y);
                    Point dy2 = new Point(343, y);
                    gc.DrawLine(p, dx1, dx2);
                    gc.DrawLine(p, dy1, dy2);
                }
            }
    clear方法
    private void cleartip()//清除画板
            {
                Graphics gclear = panel1.CreateGraphics();
                System.Drawing.Image img = Image.FromFile("img//mbc.jpg");
                gclear.DrawImage(img,0,0,380,391);//高宽是图片属性
            }


    我只愿面朝大海,春暖花开……
    2009年10月22日 4:03
  • 最小化窗口,改变窗口大小都会重绘窗口。
    要写到 paint事件里面,重绘时自动调用
    • 已标记为答案 KeFang Chen 2009年10月28日 2:07
    2009年10月22日 5:02