c# 鼠标左键绘制矩形

c# 鼠标左键绘制矩形
1.鼠标左键按下,记录开始绘图,并记录当前鼠标位置为开始位置
2.鼠标移动,清除之前绘制的图(关键步骤),并将鼠标的位置记录为结束位置
3.鼠标松开,绘图结束

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

namespace 画矩形
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        // 开始点
        Point start;
        // 是否绘制
        bool blnDraw = false;
        // 矩形
        Rectangle rect = new Rectangle();
        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            // 指定开始点
            start = e.Location;
            blnDraw = true;
        }

        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            blnDraw &= false;
        }

        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (blnDraw)
            {
                if (e.Button != MouseButtons.Left)
                {
                    return;
                }
                // 关键:使本次移动之前所绘制的图像无效
                pictureBox1.Invalidate();
                // 指定结束点
                Point tempEndPoint = e.Location;
                rect.Location = new Point(
                Math.Min(start.X, tempEndPoint.X),
                Math.Min(start.Y, tempEndPoint.Y));
                // 指定绘制矩形的尺寸
                rect.Size = new Size(
                Math.Abs(start.X - tempEndPoint.X),
                Math.Abs(start.Y - tempEndPoint.Y));
            }
        }

        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            if (blnDraw)
            {
                if (rect != null && rect.Width > 0 && rect.Height > 0)
                {
                	//重新绘制颜色为红色
                	e.Graphics.DrawRectangle(new Pen(Color.Red, 3), rect);
                }
            }
        }
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将C#中的鼠标左键点击事件(MouseLeftButtonDown)绑定到命令,可以使用以下步骤: 1. 在XAML中添加事件触发器: ``` <Button Content="Click Me" MouseLeftButtonDown="Button_MouseLeftButtonDown"/> ``` 2. 在C#中创建命令和命令绑定器: ``` public class MyCommand : ICommand { public event EventHandler CanExecuteChanged; public bool CanExecute(object parameter) { return true; } public void Execute(object parameter) { // 命令要执行的代码 } } public class MyCommandBinding : DependencyObject { public static readonly DependencyProperty CommandProperty = DependencyProperty.RegisterAttached( "Command", typeof(ICommand), typeof(MyCommandBinding), new PropertyMetadata(null, CommandPropertyChanged)); public static ICommand GetCommand(DependencyObject obj) { return (ICommand)obj.GetValue(CommandProperty); } public static void SetCommand(DependencyObject obj, ICommand value) { obj.SetValue(CommandProperty, value); } private static void CommandPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e) { var element = obj as UIElement; if (element != null) { element.MouseLeftButtonDown += (sender, args) => { var command = e.NewValue as ICommand; if (command != null && command.CanExecute(null)) { command.Execute(null); } }; } } } ``` 3. 在XAML中绑定命令: ``` <Button Content="Click Me" local:MyCommandBinding.Command="{Binding MyCommand}"/> ``` 这将使用自定义的命令绑定器将命令绑定到鼠标左键点击事件(MouseLeftButtonDown)。当按钮被点击时,命令将被执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值