标题:在窗体中如何能移动地画线或者是矩形?
只看楼主
lkljsan
Rank: 1
等 级:新手上路
帖 子:9
专家分:3
注 册:2008-10-18
结帖率:0
已结贴  问题点数:10 回复次数:5 
在窗体中如何能移动地画线或者是矩形?

private void Form1_Paint(object sender, PaintEventArgs e)

        {
            Graphics g = this.CreateGraphics();
            Pen p = new Pen(Color.Red, 3);
            g.DrawRectangle(p, 10, 10, 100, 100);
        }
这样画出来的是固定的矩形,我要的是能再窗体中能自由的在任意位置画出,还有在窗体放大的时候,也要能使矩形随着变化(这是不是叫重绘,我也不清楚),请哪位高手指点一下,我是新手,谢谢了。
搜索更多相关主题的帖子: 矩形 窗体 
2009-10-25 09:33
jedypjd
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1096
专家分:4969
注 册:2009-7-27
得分:5 
自由的在任意位置画,是指位置随机吗?

天涯无岁月,歧路有风尘,百年浑似醉,是非一片云
2009-10-25 10:45
lkljsan
Rank: 1
等 级:新手上路
帖 子:9
专家分:3
注 册:2008-10-18
得分:0 
恩,是的。就像是在画图工具一样,点击矩形按钮,然后就可以在任意位置上画了。好像要用那个point来控制,我就是不知道这要怎么做?
2009-10-25 11:49
jedypjd
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1096
专家分:4969
注 册:2009-7-27
得分:0 
程序代码:
using System; 
using System.Collections.Generic; 
using  
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 
 
namespace WindowsApplication29 
{ 
    public partial class Form1 : Form 
    { 
        public Point firstPoint = new Point(0, 0);  //鼠标第一点 
        public Point secondPoint = new Point(0, 0);  //鼠标第二点 
        public bool begin = false;   //是否开始画矩形 
        Graphics g; 
        public Form1() 
        { 
            InitializeComponent(); 
            g = this.CreateGraphics(); 
        } 
 
        private void Form1_MouseDown(object sender, MouseEventArgs e) 
        { 
            begin = true; 
            firstPoint = new Point(e.X, e.Y); 
        } 
 
        private void Form1_MouseMove(object sender, MouseEventArgs e) 
        { 
            if (begin) 
            { 
                g.Clear(this.BackColor); 
                //获取新的右下角坐标 
                secondPoint = new Point(e.X, e.Y); 
                int minX = Math.Min(firstPoint.X, secondPoint.X); 
                int minY = Math.Min(firstPoint.Y, secondPoint.Y); 
                int maxX = Math.Max(firstPoint.X, secondPoint.X); 
                int maxY = Math.Max(firstPoint.Y, secondPoint.Y); 
 
                //画框 
                g.DrawRectangle(new Pen(Color.Red), minX, minY, maxX - minX, maxY - minY); 
 
            } 
        } 
 
        private void Form1_MouseUp(object sender, MouseEventArgs e) 
        { 
            begin = false; 
        } 
    } 
}
怎么放大我还不知道

[ 本帖最后由 jedypjd 于 2009-10-25 13:01 编辑 ]

天涯无岁月,歧路有风尘,百年浑似醉,是非一片云
2009-10-25 12:59
lkljsan
Rank: 1
等 级:新手上路
帖 子:9
专家分:3
注 册:2008-10-18
得分:0 
嘿嘿,要的就是这种效果,我还才第一次进来,发表的时候忘记给分了,等下次我一定会加上的。谢谢你了。

还有一个小问题,就是当窗口放大的时候,它不会随着窗口放大,这要怎么改啊?
2009-10-25 13:15
ghl2312
Rank: 4
等 级:业余侠客
威 望:2
帖 子:208
专家分:226
注 册:2008-7-10
得分:5 
回复 楼主 lkljsan
你是想橡皮筋画图吧。
--------------------------
思路:
1.mouseDown,指定一点。
2.mouseUp,再指定一点。
3.OnPaint,绘你要的图形,应该就可以了,可能还会有些小问题,可以自己慢慢摸索。

向灰太狼学习
2009-10-25 13:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-289835-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.172749 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved