在C#中有一个pannel控件,我现在想在上面画矩形,当画完一个矩形,要记住矩形的位置以及大小,松开鼠标后矩形消失!怎么弄?请教高手!

问题描述

在C#中有一个pannel控件,我现在想在上面画矩形,当画完一个矩形,要记住矩形的位置以及大小,松开鼠标后矩形消失!怎么弄?请教高手!

解决方案

解决方案二:
帮你顶一下
解决方案三:
xml记录一下?
解决方案四:
谢了,有没有例子我看一下,对这个一无所知,学winform不久,请高手指点一下!
解决方案五:
pannel控件上有鼠标的按下事件panel1_MouseDown和panel1_MouseUp利用这两个事件。来计算。在鼠标按下的时候,记住那个点(intX=e.X;intY=e.Y;)在鼠标弹起的时候,记住这个点。利用这两个点计算。画好以后。不刷新的话。是不显示的。
解决方案六:
YoumightuseControlPaint.DrawReversibleFrame:publicpartialclassForm1:Form{PointstartPoint;RectanglelastRect;boolisDragging;publicForm1(){InitializeComponent();}protectedoverridevoidOnMouseDown(MouseEventArgse){startPoint=this.PointToScreen(e.Location);lastRect=newRectangle(0,0,0,0);isDragging=true;}protectedoverridevoidOnMouseMove(MouseEventArgse){if(isDragging){Pointcurrent=this.PointToScreen(e.Location);intwidth=current.X-startPoint.X;intheight=current.Y-startPoint.Y;ControlPaint.DrawReversibleFrame(lastRect,this.BackColor,FrameStyle.Dashed);lastRect=newRectangle(startPoint,newSize(width,height));ControlPaint.DrawReversibleFrame(lastRect,this.BackColor,FrameStyle.Dashed);}}protectedoverridevoidOnMouseUp(MouseEventArgse){if(isDragging){isDragging=false;ControlPaint.DrawReversibleFrame(lastRect,this.BackColor,FrameStyle.Dashed);MessageBox.Show("therectis"+lastRect);}}}

From:
解决方案七:
blog.csdn.net/dunao看看这个吧!应该就是你想要的
解决方案八:
要在OnMouseDown和OnMouseMove事件里面用e.X,和e.Y坐标来取得长和宽然后记录下来作为你矩形的长和宽

时间: 2025-01-01 16:44:09

在C#中有一个pannel控件,我现在想在上面画矩形,当画完一个矩形,要记住矩形的位置以及大小,松开鼠标后矩形消失!怎么弄?请教高手!的相关文章

c++-请教一个CListCtrl控件的一个问题

问题描述 请教一个CListCtrl控件的一个问题 list.SetExtendedStyle(list.GetExtendedStyle()|LVS_EX_FULLROWSELECT); 请问下CLISTCTRL控件的设置风格语句,如上所写和 list.SetExtendedStyle(LVS_EX_FULLROWSELECT)这样写有啥区别呀? 我运行结果看了看没啥区别呀? 解决方案 list.SetExtendedStyle(list.GetExtendedStyle()|LVS_EX_F

c++ mfc activex-开发一个activex控件调用另一个Activex控件

问题描述 开发一个activex控件调用另一个Activex控件 我现在利用Vc++2010开发一个新的控件项目,其中一个显示画面要插入其他厂家的activeX控件,想利用其中的功能,做进一步的功能增强.但是我发现尽管项目编译没有报错,但在实际运行调用过程根本实现不了.通过断点追踪发现,那个显示画面的m_hWnd在生成过程中为0x0000000.但是如果移除那个厂家的activex控件,那个显示画面的m_hWnd在生成过程中为非零.请教高手其中的原因?请问activeX控件的二次封装能否实现?最

cmscomm 串口通讯-多个对话框能不能调用一个MSCOMM控件

问题描述 多个对话框能不能调用一个MSCOMM控件 主页面中有一个tab控件,里面有几个子页面,主页面中有一个CMSComm控件,主页面中可以正常进行串口通讯.现在在子页面中通过得到父窗体的指针,调用封装的发送函数,到用控件发送数据那里就有内存错误.求解~

c#-VS2010的C#编程添加一个datagridview控件就报错

问题描述 VS2010的C#编程添加一个datagridview控件就报错 VS2010的C#编程添加一个datagridview控件就出现"未处理AccessViolationException"的错误,就添加了一个控件.我得用这个搞毕业设计,急啊!!!求高手指点 解决方案 楼主 的 问题解决了吗?

浏览器-SSH项目如何添加一个ocx控件

问题描述 SSH项目如何添加一个ocx控件 我想请教一下就是,我有一个SSH框架的JAVA项目和ocx控件,现在想把两者结合,让用户访问ie时能加载,这要如何实现?还有如果项目中已经使用了ocx控件,但是google浏览器不兼容,有没有什么办法可以解决一下的? 解决方案 activex和ssh没关系,在你的页面上添加object标签就可以了.google不支持ocx没办法,即便是网上银行之类的系统,能做到的就是检测user-agent给出提示,你的浏览器不兼容,让用户使用ie.而且退一步说,就算

activex-请教一个OCX控件的问题

问题描述 请教一个OCX控件的问题 如果机子上不安装REALPLAYER的话 VC++的MFC的ACTIVE控件里面就不会有REALPLAYER 那请问下这两者有什么关系吗?VC里面的ACTIVE控件里面的REALPLAYER是 REALPLAYER提供的吗? 还是VC自身提供的,只不过没安装REALPLAYER不显示而已? 解决方案 com组件,xuyaoregsvr32注册到系统上,这样程序才能调用 解决方案二: realplayer为系统提供编码器,这样windows media play

winform中有很多label控件,双击后怎么判断是在哪一个label控件上双击的呢

问题描述 ,如图,窗体中有很多个label控件,想在双击不同的label的时候打印不同的东西出来,请问怎么判断是在哪个label上双击的呢?谢谢 解决方案 解决方案二:给每个label加上DoubleClick事件的处理代码.1:给每个不同的控件添加不同的处理代码,那么直接就知道了2:给每个控件绑定相同的处理代码,在事件的参数里有sender参数,把它强转为label后判断name就可以知道是谁被点击的解决方案三:无论是托放的还是动态的每个控件名称都是不同的当然可以区别解决方案四:事件中有一个s

FORM上有二个pannel控件,请问怎么实现这二个Panel 之间的连线.

问题描述 FORM上有二个pannel控件,请问怎么实现这二个Panel之间的连线.怎么实现连线随着Panel的移动再变化. 解决方案 解决方案二:onpaint里面直接用panel的坐标就可以了解决方案三:Runtime还是DesignTimeRuntime下只能在放一个控件,化成线,必要时显示.DesignTime设置BaseLine就可以了解决方案四:谢谢楼上的.我要求实现的功能是通过鼠标进行连线,即起点第一个,终点第二个.怎么实现呢.解决方案五:连线?不太明白解决方案六:就是在二个控件间

wpf中我的一个用户控件在一个窗体中不同的位置显示的效果不一样啊

问题描述 我写了一个窗帘的动态控件,空可以控制窗帘上下拉动,实现的原理是我让那张窗帘的背景图片慢慢的上下移动,往上移动的时候,超出的窗帘顶部的时候,超出的部分是看不见的,那样窗帘的效果可以实现.现在问题来了,我把这个用户控件放到一个窗体中,在这个窗体的这个位置的时候,运行程序,这个控件没出现什么问题,但是把该控件拖到窗体的中间的时候,运行程序,当往上的时候,窗帘超出的部分就会显示出来,也就是这张图片会完全显示出来,这样效果就没有了,但是在刚刚那个位置的时候,该窗帘控件超出的部分是显示不出来的,可