首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于画画(重绘)的有关问题

2013-08-06 
关于画画(重绘)的问题楼主想要通过按钮(只有在点击后才会出现那张图自己画的图)来实现在Form1上画一张图(

关于画画(重绘)的问题
楼主想要通过按钮(只有在点击后才会出现那张图自己画的图)来实现在Form1上画一张图(图的大小大于窗口的大小,所以设置了滚动条),但是在点击以后就在窗口中出现了话的一部分,但是当楼主想拖动滚动条的时候不仅以前未显示的部分没有出现,而且原来的那部分也不见了;

代码如下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 重绘1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.AutoScroll = true;
            this.BackColor = Color.Pink;
            this.AutoScrollMinSize = new Size(10000, 10000);
        }
       private void weizhi(PaintEventArgs e)
        {
            Point startPoint=new Point (0,0);
            Size  location = new Size(1000, 1000);
            Rectangle rectangle = new Rectangle(startPoint,location);
            e.Graphics.Clip = new Region(rectangle ); 
        }
       private void button1_Click(object sender, EventArgs e)
        {
            
            huahua();

            
        }
        private void huahua()
        {
            
            Graphics g = CreateGraphics();
            
            Point startPoint = new Point(0, 0);


            Point endPoint = new Point(800, 800);
            SolidBrush brush = new SolidBrush(Color.Green);
            Pen pen = new Pen(brush, 18);
            g.TranslateTransform(AutoScrollPosition.X, AutoScrollPosition.Y);
            g.FillEllipse(brush, 0, 0, 120, 120);
            g.DrawEllipse(pen, 120, 120, 300, 300);
            g.DrawLine(pen, startPoint, endPoint);
            g.Dispose();
            pen.Dispose();this.BackColor = Color.Pink;
            brush.Dispose();
        }

        
        private void button2_Click(object sender, EventArgs e)
        {
            Graphics g = CreateGraphics();
            g.Clear(Color.White);
            g.Dispose();
        }
    }
}
类 重绘
[解决办法]
要在 paint事件里处理绘制  要不窗体发生重绘你的画面就不见了
[解决办法]


public partial class Form1 : Form
{
    bool bPaint = false;
    public Form1()
    {
        InitializeComponent();



        this.AutoScroll = true;
        this.BackColor = Color.Pink;
        this.AutoScrollMinSize = new Size(10000, 10000);

        Paint += new PaintEventHandler(Form1_Paint);
    }

    void Form1_Paint(object sender, PaintEventArgs e)
    {
        if (bPaint)
        {
            huahua(e.Graphics);
        }
    }

    private void weizhi(PaintEventArgs e)
    {
        Point startPoint = new Point(0, 0);
        Size location = new Size(1000, 1000);
        Rectangle rectangle = new Rectangle(startPoint, location);
        e.Graphics.Clip = new Region(rectangle);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        bPaint = true;
        this.Invalidate();
    }

    private void huahua(Graphics g)
    {

        //Graphics g = CreateGraphics();

        Point startPoint = new Point(0, 0);
        Point endPoint = new Point(800, 800);
        SolidBrush brush = new SolidBrush(Color.Green);
        Pen pen = new Pen(brush, 18);
        g.TranslateTransform(AutoScrollPosition.X, AutoScrollPosition.Y);
        g.FillEllipse(brush, 0, 0, 120, 120);
        g.DrawEllipse(pen, 120, 120, 300, 300);
        g.DrawLine(pen, startPoint, endPoint);
        // g.Dispose();


        pen.Dispose();
        this.BackColor = Color.Pink;
        brush.Dispose();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        bPaint = false;
        // Graphics g = CreateGraphics();
        // g.Clear(Color.White);
        // g.Dispose();

        this.BackColor = Color.White;
    }
}


[解决办法]
引用:
Quote: 引用:

huahua(e.Graphics)中的参数是什么,哪里来的?有什么用?


void Form1_Paint(object sender, PaintEventArgs e)

在重绘事件中,事件参数PaintEventArgs ,这个参数的 Graphics也就是当前窗体的绘图表面 


当然,你也可以这样huahua(CreateGraphics())

是一样的
[解决办法]
引用:
那个又晕了,重绘事件是什么?是point事件吗?还是说point事件触发了重绘事件;
void Form1_Paint(object sender, PaintEventArgs e)这个是什么意思?是事件还是函数?有什么用,对于Paint 我一直不能理解,


是窗体的重绘事件,很多情况下都会发生这个事件,比如你移动你窗体时会发生重绘,拉动滚动条发生重绘,最小化最大化发生重绘,一部分是操作系统完成的,你也可以强制置当前窗体无效,导致重绘。

热点排行