[转]鼠标移到图像上显示激活的例子

简介:

原文作者 java_liyi, c#+Gdi,怎么移动和改变已经绘制好的图形位置和大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Drawing;
using  System.Data;
using  System.Linq;
using  System.Text;
using  System.Threading.Tasks;
using  System.Windows.Forms;
 
namespace  DrawTest
{
     public  delegate  void  DrawMeHandler(Graphics g);
     public  delegate  void  MouseMoveHandler(Point p);
     public  partial  class  Canvas : UserControl
     {
         RectangleFigure rectangleFigure =  new  RectangleFigure();
         DrawMeHandler drawMeHandler;
         MouseMoveHandler mouseMoveHandler;
         public  Canvas()
         {
             InitializeComponent();
             this .DoubleBuffered =  true ;
             this .Paint += Canvas_Paint;
             this .Load += Canvas_Load;
             this .MouseMove += Canvas_MouseMove;
         }
 
         void  Canvas_MouseMove( object  sender, MouseEventArgs e)
         {
             this .mouseMoveHandler.Invoke(e.Location);
             this .Refresh();
         }
 
         void  Canvas_Load( object  sender, EventArgs e)
         {
             rectangleFigure.X = 10;
             rectangleFigure.Y = 10;
             rectangleFigure.Width = 100;
             rectangleFigure.Height = 50;
             drawMeHandler =  new  DrawMeHandler(rectangleFigure.DrawMe);
             mouseMoveHandler =  new  MouseMoveHandler(rectangleFigure.MouseMove);
             
         }
 
         void  Canvas_Paint( object  sender, PaintEventArgs e)
         {
             if  (drawMeHandler !=  null ) drawMeHandler.Invoke(e.Graphics);
         }
 
 
         /// <summary>
         /// 矩形对象
         /// </summary>
         public  class  RectangleFigure
         {
             
             public  int  X {  get set ; }
             public  int  Y {  get set ; }
             public  int  Height {  get set ; }
             public  int  Width {  get set ; }
 
             public  bool  Actived {  get set ; }
 
             public  bool  IsExist(Point p)
             {
                 Rectangle rectangle =  new  Rectangle( this .X,  this .Y,  this .Width,  this .Height);
                 return  rectangle.Contains(p);
             }
 
             public  void  MouseMove(Point p)
             {
                 Actived = IsExist(p);
             }
 
             public  void  DrawMe(Graphics g)
             {
                 Pen p =  new  Pen(Color.Black);
                 g.FillRectangle(p.Brush,  this .X,  this .Y,  this .Width,  this .Height);
                 if  (Actived)
                 {
                     p.Color = Color.Red;
                     g.DrawRectangle(p,  this .X,  this .Y,  this .Width,  this .Height);
                 }
             }
         }
     }
}

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。


    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5810773.html ,如需转载请自行联系原作者


相关文章
vitepress如何配置右上角的小两侧标志,利用nav标签进行修改,右侧边栏如何设置成自动弹出水平框,让原先隐藏的框能够显示出来
vitepress如何配置右上角的小两侧标志,利用nav标签进行修改,右侧边栏如何设置成自动弹出水平框,让原先隐藏的框能够显示出来
|
6月前
|
定位技术 iOS开发
在地图页面,自动布局控件开始是隐藏或在屏幕外需要正常显示时再为正常的显示状态的,需要在显示之前加入
在地图页面,自动布局控件开始是隐藏或在屏幕外需要正常显示时再为正常的显示状态的,需要在显示之前加入
47 0
|
6月前
如何在屏幕的任意位置拖拽控制图片的移动?
如何在屏幕的任意位置拖拽控制图片的移动?
97 1
|
6月前
|
开发工具 开发者
在屏幕的任意位置拖拽,控制角色移动
在屏幕的任意位置拖拽,控制角色移动
64 0
布局之悬浮显示更多文本并增加箭头指示效果
布局之悬浮显示更多文本并增加箭头指示效果
123 0
布局之悬浮显示更多文本并增加箭头指示效果
|
Java
swing中一些常见的鼠标事件(鼠标形状的改变、鼠标接近、按下(图标的切换)、鼠标接近、离开(字体颜色的改变)、鼠标拖拽等)还有系统托盘+对话框
swing中一些常见的鼠标事件(鼠标形状的改变、鼠标接近、按下(图标的切换)、鼠标接近、离开(字体颜色的改变)、鼠标拖拽等)还有系统托盘+对话框
477 0
swing中一些常见的鼠标事件(鼠标形状的改变、鼠标接近、按下(图标的切换)、鼠标接近、离开(字体颜色的改变)、鼠标拖拽等)还有系统托盘+对话框
PS实用技巧:用原始图片制作显示(正常状态)、鼠标悬浮(hover)、鼠标点击(pressed)的方法
PS实用技巧:用原始图片制作显示(正常状态)、鼠标悬浮(hover)、鼠标点击(pressed)的方法
PS实用技巧:用原始图片制作显示(正常状态)、鼠标悬浮(hover)、鼠标点击(pressed)的方法
Qt实用技巧:将QWidget作为输入窗口,接收键盘消息、输入法并且控制输入法悬浮工具栏位置控制
Qt实用技巧:将QWidget作为输入窗口,接收键盘消息、输入法并且控制输入法悬浮工具栏位置控制
推荐一个免费的屏幕取色器,鼠标放到的位置自动显示RGB
推荐一个免费的屏幕取色器,鼠标放到的位置自动显示RGB
361 0
推荐一个免费的屏幕取色器,鼠标放到的位置自动显示RGB