c# 窗体控件上绘制跟随鼠标的十字线

一.技术路线

(1)以自定义大小的image为画布,绘制窗体控件显示的主题内容

 public Image img=new Bitmap(250,250);   //定义img  

 Graphics gr = Graphics.FromImage(img); //img用作画布,绘制控件中显示的主题内容;

  ____________________________

    在img画布上绘制显示内容

  gr.DrawLine(pen,point1,point2);

  gr.Draw.........

  ...............

  ____________________________

(2)将(1)中完成的image加载到控件上,类似背景图片

Graphics grv =pb.CreateGraphics();

grv.DrawImage(img,ClientRectangle);  //  ClientRectangle参数设置img适应控件大小 

(3)利用MouseMove事件动态绘制十字光标

private void pb1_MouseMove(object sender, MouseEventArgs e)
{
Point pt1_1 = new Point(e.X,0);
Point pt1_2 = new Point(e.X,ClientRectangle.Height);
Point pt2_1 = new Point(0,e.Y);
Point pt2_2 = new Point(ClientRectangle.Width, e.Y);
Graphics grvisual = pb1.CreateGraphics();
grvisual.DrawImage(img, ClientRectangle);
Pen pen = new Pen(Color.Brown,5);
pen.DashStyle = DashStyle.DashDotDot;
grvisual.DrawLine(pen, pt1_1, pt1_2);
grvisual.DrawLine(pen, pt2_1, pt2_2);
}

二.实现代码

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;
using System.Drawing.Drawing2D;
namespace testMouseEvent
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public Image img = new Bitmap(250,350);
private void pb1_MouseMove(object sender, MouseEventArgs e)
{
tb1.Text = e.X.ToString();
tb2.Text = e.Y.ToString();
Point pt1_1 = new Point(e.X,0);
Point pt1_2 = new Point(e.X,ClientRectangle.Height);
Point pt2_1 = new Point(0,e.Y);
Point pt2_2 = new Point(ClientRectangle.Width, e.Y);
Graphics grvisual = pb1.CreateGraphics();
grvisual.DrawImage(img, ClientRectangle);
Pen pen = new Pen(Color.Brown,5);
pen.DashStyle = DashStyle.DashDotDot;
grvisual.DrawLine(pen, pt1_1, pt1_2);
grvisual.DrawLine(pen, pt2_1, pt2_2);
}

private void button1_Click(object sender, EventArgs e)
{

Graphics gr = Graphics.FromImage(img);
Random rd = new Random();
gr.FillRectangle(Brushes.White, ClientRectangle);
for (int x = 0; x < ClientRectangle.Width; x++)
{
for (int y = 0; y < ClientRectangle.Height; y++)
{
Color c = Color.FromArgb(rd.Next(255), rd.Next(255), rd.Next(255));
using (Pen p = new Pen(c, 1))
{
gr.DrawLine(p, new Point(0, 0), new Point(x, y));
}//of using
}//of for_1_2
Graphics grv = pb1.CreateGraphics();
grv.DrawImage(img, ClientRectangle);
}//of for_1
}
}
}

三.实现效果

*本文疏漏错误在所难免,望大家提出宝贵的意见和建议!

转载于:https://www.cnblogs.com/mr-ch/p/5220466.html

关于Winform中类似股票K线图十字交叉线随着鼠标移动的实现方法! 有一个项目组这段时间主要多为MFC及Winform类型的项目,主要从技术面而言而已,否则这个项目组的成本也忒高了,......还是记录一段时间的桌面应用知识吧!       今天主要分享一下一个实习生解决一套大型系统中的一个功能模块之分析模块的类似股票十字交叉线的实现方法,哈哈,我的心态也是实习心态哦!-_-!       我们知道在winform中,无论其VB、C#、J#等,还是其它技术或语 阅读详情

相关推荐

WinForm图表控件缺失之谜:.NET 6与Framework的差异解析与ScottPlot实战

本文解析了.NET 6与Framework在WinForm图表控件上的差异,探讨了微软移除Chart控件的原因,并详细介绍了ScottPlot在.NET 6中的实战应用。通过安装指南、基础绘图示例和高级功能演示,帮助开发者快速掌握这一现代图表解决方案,提升WinForm项目的开发效率。

weixin_33796205的博客 735

在图形中,随着鼠标的移动显示十字交叉线

在图形中,随着鼠标的移动显示十字交叉线,VC++

【工业级视觉框架实战】C#+Winform+OpenCvSharp二次开发指南:从零搭建高扩展性检测系统

本文详细介绍了如何基于C#、Winform和OpenCvSharp从零搭建一个高扩展性的工业级视觉检测框架。通过模块化设计,将相机采集、图像处理、流程控制与设备通讯等核心功能标准化,并采用插件化架构提升可维护性。该框架能帮助开发者快速构建稳定、可复用的视觉系统,将精力聚焦于核心业务逻辑,大幅提升开发效率。

weixin_29231263的博客 75

全屏半透明十字鼠标特效

通过C#、WPF实现系统桌面跟随鼠标的全屏半透明十字光标特效,可用于辅助定位光标。具体实现方式为使用Canvas进行绘图,并实时响应鼠标的移动事件进行跟随。运行时会将鼠标指针临时修改为本人自己绘制的光标,关闭后会恢复原光标。注:所用环境为VS2015,通过将.NET Framework修改为较低的3.0以适应在win7上可以直接运行exe。

实现绘图区的大十字光标

有时,我们需要用VB快速开发一个试验数据绘图处理程序,将绘图控件内的鼠标光标改变成与AutoCAD软件中使用的大十字光标的形式,将可以比普通的箭头光标达到更好的效果。那么我们如何实现这样的大十字光标呢? ----首先,我们明确一下要达到的效果,假若我们在一个Picture控件中绘图,那么,鼠标移动到这个控件上时,鼠标光标立即改变为大十字形状,光标中的横线从控件的左边界到右边界,竖线从控件的上边

向往大海专栏 2045

【VM服务管家】VM4.x算子SDK开发_3.4 控件嵌入类

在算子SDK中支持五种类型的图形改变事件,分别是图形添加事件(MVD_SHAPE_ADDED),图形删除事件(MVD_SHAPE_DELETED),图形编辑事件(MVD_SHAPE_EDITED),图形选中事件(MVD_SHAPE_SELECTED)以及未定义事件(MVD_SHAPE_UNDEFINE)。调用SaveImage(图片储存),以存储图片到E盘为例,示例代码如下,其中要判断路径中的文件夹已经创建。现象:有的用户在使用算子SDK开发时,希望能够在图像上显示辅助十字线。不熟悉鼠标事件的实现方法。

让视觉应用更轻松 1618

C#与Halcon联合(10)打造高效图像处理控件

本文详细介绍了如何基于C#与Halcon打造一个高效、多功能的图像处理控件库。通过封装图像无失真显示、鼠标交互(拖动、缩放)、实时信息叠加等核心功能,解决了原生控件使用繁琐、代码重复的问题。该控件库能显著提升机器视觉项目的开发效率与代码复用率,并提供了完整的封装、打包及在实际项目中应用的指南。

oil88的博客 259

基于C#实现屏幕放大镜功能

基于C#实现屏幕放大镜功能

listhi520的博客 533

C# ScottPlot 5.0 WinForms 十字光标示例:轻松实现动态数值显示,你学会了吗?

ScottPlot是一个免费、开源的.NET交互式绘图库,能够轻松地实现大型数据集的交互式显示。它支持多种图表类型,如折线图、柱状图、饼图、散点图等。ScottPlot的性能非常出色,即使是处理千万级别的数据也游刃有余。

java专栏 2185

Qt编写数据可视化大屏界面电子看板7-窗体浮动

一、前言 窗体浮动的场景也比较多,用途也比较大,比如视频监控模块,有时候需要调整大小和位置,而不是作为dock嵌入到布局中,一旦嵌入到布局中,大小和位置都被布局接管了,只能任由布局使唤,按在地上摩擦的那种。所以窗体浮动独立出来以后,就可以当做单独的窗体使用了,八个方位任意调整大小,(做到这里,是不是想起来,很多人写的无边框窗体类,自己写代码实现边框的拉伸调整大小?原来Qt也内置类无边框调整大小的位...

weixin_33981932的博客 230

FormScreen.cs

using System;using System.Drawing;using System.Windows.Forms;namespace DIYWordpad{    public partial class FormScreen : Form    {        #region 自定义对象        private Point position = Point.Empty;   

kingzhexian的专栏 425

史上最全Winform中使用ZedGraph教程与资源汇总整理(附资源下载)

场景 C#窗体应用中使用ZedGraph曲线插件绘制图表: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/99716066 Winforn中设置ZedGraph曲线图的属性、坐标轴属性、刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1001...

BADAO_LIUMANG_QIZHI的博客 2934

获取光标在文本控件中的坐标

[DllImport("user32")] public static extern bool GetCaretPos(out Point lpPoint); [DllImport("user32.dll")] private static extern IntPtr GetForegroundWindow(); [DllImport

liujun198773的专栏 1331

Qt/C++编写可视化大屏电子看板系统11-自定义控件

一、前言 说到自定义控件,我是感觉特别熟悉的几个字,本人亲自原创的自定义控件超过110个,都是来自各个行业的具体应用真实需求,而不是凭空捏造的,当然有几个小控件也有点凑数的嫌疑,在编写整个数据可视化大屏界面电子看板系统中,也用到了四五个自定义的控件,比如那个环形百分比图,多态进度条,合格率仪表盘,速度仪表盘等,这些控件在现有的类中是没有的,需要用QPainter这个牛逼的工具来绘制,类似于神笔马良...

Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法 5929

VisionMaster 4.4实战:基于MVDAlgorithmSDK渲染控件打造媲美Halcon的工业视觉交互界面

本文详细介绍了如何利用VisionMaster 4.4的MVDAlgorithmSDK渲染控件,高效开发媲美Halcon的工业视觉交互界面。通过实战案例,从环境搭建、图像加载、ROI绘制、自定义菜单到结果保存,系统讲解了该控件在性能、功能与集成方面的优势,帮助开发者快速构建流畅、专业的视觉检测软件,显著提升开发效率与用户体验。

happy2的博客 478

【工业视觉实战】基于Winform+Halcon+C#的通用视觉框架开发与机器人定位应用

本文详细介绍了基于Winform、Halcon和C#开发通用视觉框架的实践方法。通过模块化设计,将相机采集、图像处理、坐标转换等功能封装为独立工具,实现流程图式编程,显著提升工业视觉项目的开发效率与可维护性。文章以机器人定位应用为例,阐述了从框架设计、工具实现到系统集成的全流程,并分享了性能优化与避坑指南。

milk8的博客 481

Qt/C++编写可视化大屏电子看板系统22-平滑曲线图

一、前言 平滑曲线是所有涉及到曲线图的项目中,绕不开的一个话题,尽管很多人爱看折线图,但是很多时候来个平滑曲线图,会更加赏心悦目,这就好比现在的手机app移动客户端上,从最初的四方四正到现在的平滑圆角大行其道,甚至连小米的LOGO都从方形稍微调整成丝滑的圆角,设计师还收了个几百万。曲线从弯来弯去的折线向平滑丝滑曲线转变是个趋势,所以这也是我一直纳闷的一个问题就是,为何现在众多的曲线图表控件,不仅限于Qt的,包括C#/JAVA/ANDROID等开发框架,默认都是折线图形式的而不是平滑的,莫非是英文折线图代码简

Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法 2781
上一篇: 【转】Android自定义Adapter的ListView的思路及代码
下一篇: GSM/GPRS/3G/4G
weixin_30507481
博客等级 码龄11年 107粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值