c# winform 点击按钮后计算坐标 然后画图

c# winform 点击按钮后计算坐标 然后画图,第1张

估计地球人都看不懂你说的整合到一起是什么意思吧,click求出了四个点的值,全局变量在paint事件里面取就可以了。在click代码最后加上pictureBox1Invalidate();就可以进入到pictureBox1_Paint事件了

你的窗体代码中添加如下API定义代码(引人SystemRuntimeInteropServices命名空间(using SystemRuntimeInteropServices;)):

[Flags]

enum MouseEventFlag : uint

{

Move = 0x0001,

LeftDown = 0x0002,

LeftUp = 0x0004,

RightDown = 0x0008,

RightUp = 0x0010,

MiddleDown = 0x0020,

MiddleUp = 0x0040,

XDown = 0x0080,

XUp = 0x0100,

Wheel = 0x0800,

VirtualDesk = 0x4000,

Absolute = 0x8000

}

[DllImport("user32dll")]

static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);

在你的按钮单击事件中(Button_Click)加入如下代码:

CursorPosition = new Point(0 /x坐标/, 0 /y坐标/); //这里是移动鼠标的代码

mouse_event(MouseEventFlagLeftDown,0,0,0,UIntPtrZero);

mouse_event(MouseEventFlagLeftUp,0,0,0,UIntPtrZero);

//这里是鼠标点击的代码(左键)

要知道鼠标的坐标是X,Y两个值你存的话也要存两个 存一个无意义代码:using System;

using SystemCollectionsGeneric;

using SystemComponentModel;

using SystemData;

using SystemDrawing;

using SystemLinq;

using SystemText;

using SystemWindowsForms;namespace WinForm_test_02

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

int x1, y1, x2, y2, x3, y3, x4, y4,count = 0;

private void Form1_MouseClick(object sender, MouseEventArgs e)

{

switch (count)

{

case 0://count = 0;第一次点击时赋值

x1 = eX;

y1 = eY;

break;

case 1://count = 0;第二次点击时赋值

x2 = eX;

y2 = eY;

break;

case 2://count = 0;第三次点击时赋值

x3 = eX;

y3 = eY;

break;

case 3://count = 0;第四次点击时赋值

x4 = eX;

y4 = eY;

break;

default://超出四次 不做记录

return;

}

count++;//记录点击次数

}

}

}

你可以加一句MessageBoxShow() 来判断下是否正确本人测试无问题

按Ctrl + R统治者将出现在地图上。用鼠标右键单击标尺上,选择[像素]。

所以,你的规模将鼠标移动到任何位置,在地图上就会显示相应的。

(在视图菜单栏中的“标尺”选项,快捷键为Ctrl + R。)

我这是Winform版本的,就是在Form窗体中加:ToolTip控件, 然后在Form中的MouseMove事件中加:

toolTip1Show("" + eX + ";" + eY, this, new Point(eX, eY));

就完了。。。

页面代码:

namespace WindowsFormsApplication1

{

partial class Form1

{

/// <summary>

/// Required designer variable

/// </summary>

private SystemComponentModelIContainer components = null;

/// <summary>

/// Clean up any resources being used

/// </summary>

/// <param name="disposing">true if managed resources should be disposed; otherwise, false</param>

protected override void Dispose(bool disposing)

{

if (disposing && (components != null))

{

componentsDispose();

}

baseDispose(disposing);

}

#region Windows Form Designer generated code

/// <summary>

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor

/// </summary>

private void InitializeComponent()

{

thiscomponents = new SystemComponentModelContainer();

thislabel1 = new SystemWindowsFormsLabel();

thistoolTip1 = new SystemWindowsFormsToolTip(thiscomponents);

thisSuspendLayout();

//

// label1

//

thislabel1AutoSize = true;

thislabel1Location = new SystemDrawingPoint(227, 106);

thislabel1Name = "label1";

thislabel1Size = new SystemDrawingSize(41, 12);

thislabel1TabIndex = 0;

thislabel1Text = "label1";

//

// Form1

//

thisAutoScaleDimensions = new SystemDrawingSizeF(6F, 12F);

thisAutoScaleMode = SystemWindowsFormsAutoScaleModeFont;

thisClientSize = new SystemDrawingSize(641, 382);

thisControlsAdd(thislabel1);

thisName = "Form1";

thisText = "Form1";

thisMouseMove += new SystemWindowsFormsMouseEventHandler(thisForm1_MouseMove);

thisResumeLayout(false);

thisPerformLayout();

}

#endregion

private SystemWindowsFormsLabel label1;

private SystemWindowsFormsToolTip toolTip1;

}

}

主要代码:

using System;

using SystemCollectionsGeneric;

using SystemComponentModel;

using SystemData;

using SystemDrawing;

using SystemLinq;

using SystemText;

using SystemWindowsForms;

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void Form1_MouseMove(object sender, MouseEventArgs e)

{

toolTip1Show("" + eX + ";" + eY, this, new Point(eX, eY));

}

}

}

panel3Location

=

new

Point(X,Y);或者右边属性栏里面有location自己设置

追问:

我想根据鼠标的位置设置panel的坐标。

但是位置始终不准确。

但是坐标始终不准确。

红圈为鼠标位置。

红色块为panel的位置。

回答:

给你的控件添加一个MouseClick事件

然后在事件里面用eX

eY去获取当前鼠标点下的坐标

然后将坐标值替换里面的panel3Location

=

new

Point(X,Y);

X,Y就可以了~~

还可以根据不同需要来换鼠标事件

追问:

还是不行啊。

回答:

鼠标悬停改用MouseHover事件

如果取出来坐标赋值上去还出现你说的坐标显示不对

可能对应的坐标算法不一样

有时候是父容器里的坐标

有时候是对应窗体来算得

追问:

使用MouseHover事件,不知道怎么获取鼠标坐标。

且坐标还是不准确。

回答:

说那么明白了

eX

eY

就是对应当前鼠标的的坐标

直接用这句就可以

panel1Location

=

new

Point(eX,

eY);

追问:

我知道eX

eY

如图,form的窗口大小为300300,以像素为单位计算

form坐上角坐标:0,0,右下角为300,300

button1坐标:-30,32  (x为负值,所以跑到左边去了)

button2坐标:86,-8  (y为负值,所以跑到上面去了)

button3坐标:86,84

以上就是关于c# winform 点击按钮后计算坐标 然后画图全部的内容,包括:c# winform 点击按钮后计算坐标 然后画图、c# winform 控制鼠标,让鼠标在窗体的指定坐标上单击、c#记录鼠标坐标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9327270.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存