问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C#如何绘制跟随鼠标的十字线而不影响背景?

发布网友 发布时间:2022-05-15 12:56

我来回答

3个回答

热心网友 时间:2022-05-15 14:25

第一步:
定义变量:
//画十字的点,因为中间有空白,所以用8个点
Point[] ps = new Point[] { new Point(2, 0), new Point(2, 1), new Point(0, 2), new Point(1, 2), new Point(3, 2), new Point(4, 2), new Point(2, 3), new Point(2, 4) };
//十字大小
int sizeP = 1;
//十字的位置
Point pos = new Point(0, 0);

第二步:
在你要的控件上划出你要的十字
我测试用的是form1,记得在事件Paint里面,其他地方容易丢失
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;

g.DrawLine(new Pen(Color.Red), ps[0].X + pos.X, ps[0].Y + pos.Y, ps[1].X + pos.X, ps[1].Y + pos.Y);
g.DrawLine(new Pen(Color.Red), ps[2].X + pos.X, ps[2].Y + pos.Y, ps[3].X + pos.X, ps[3].Y + pos.Y);
g.DrawLine(new Pen(Color.Red), ps[4].X + pos.X, ps[4].Y + pos.Y, ps[5].X + pos.X, ps[5].Y + pos.Y);
g.DrawLine(new Pen(Color.Red), ps[6].X + pos.X, ps[6].Y + pos.Y, ps[7].X + pos.X, ps[7].Y + pos.Y);
}

第三步:
改变大小,在你想改变大小的时候调用下 我测试是再
form_load里面设置为5
private void SetSize(int sizep)
{
sizeP = sizep;
for (int i = 0; i < 8; ++i)
{
ps[i].X *= sizeP;
ps[i].Y *= sizeP;
}
}
第四部:
改变位置
private void SetPos(int x, int y)
{
pos.X = x - sizeP * 2;
pos.Y = y - sizeP * 2;
}
我吧他放在MouseMove事件里面 记得要调用Refresh来重绘啊
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
SetPos(e.X, e.Y);
this.Refresh();
}

就写这么多 不懂再问我追问波形图片,十字坐标可以即时读出幅度。
窗体下方放置按钮,加载波形图片直接在窗体上绘制,双击鼠标变成带十字线。
十字线中心是透明,利用背景颜色来确认鼠标位置是否确实在波形曲线上。
鼠标右下角显示Tips小标签。
问:十字线是否利用双窗体来实现,或是有其他简单的方式。

追答按照你现在的需求,确实可以用双窗体来实现,不过,窗体的透明有点复杂,
利用背景颜色来确认鼠标位置是否确实在波形曲线上。
这个不好,不是不能实现,是不准确
可以通过鼠标坐标(x,y)来算,将x带入波形函数,然后算值,y 和算出的结果误差不大于多少时候就是
若不是y函数 就把Y带入,算出一个x,x误差不超过就是在曲线上

最后给你的建议有个非常好的
就是找一个gif图片做十字架,用image控件来显示图片,它支持透明层。然后tooltips就用image的tooltips就好了:)
保证可以实现你要的:)
十字架图片可以自己ps
记得要有透明层哦

热心网友 时间:2022-05-15 15:43

可以考虑把这个十字线弄成一个图片,而这个图片是放在一个控件上的,你移动只是移动控件,这样就会很流畅。追问移动picturebox,为何form的背景图片backgroundimage也会跟着晃动起来,怎么解决这个问题?

热心网友 时间:2022-05-15 17:18

g.DrawLine(new Pen(Color.Red), ps[0].X + pos.X, ps[0].Y + pos.Y, ps[1].X + pos.X, ps[1].Y + pos.Y);
g.DrawLine(new Pen(Color.Red), ps[2].X + pos.X, ps[2].Y + pos.Y, ps[3].X + pos.X, ps[3].Y + pos.Y);
g.DrawLine(new Pen(Color.Red), ps[4].X + pos.X, ps[4].Y + pos.Y, ps[5].X + pos.X, ps[5].Y + pos.Y);
g.DrawLine(new Pen(Color.Red), ps[6].X + pos.X, ps[6].Y + pos.Y, ps[7].X + pos.X, ps[7].Y + pos.Y);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
锅炉切圆直径调整 为什么我打开excel后是灰色的? 有没有什么值得推荐的投资港股的QDII基金? - 知乎 win10电脑屏幕亮度调不了怎么办 考焊工证具体怎么操作 广汽传祺是丰田技术吗 广汽传祺与广汽丰田有关系吗 怎样才能让不愿写作业的孩子听话? 上初中不写作业不想学习的孩子应该如何管教? 出生在2020年农历七月十二日的宝宝怎么取名有内涵? 多哈回合谈判各方呼吁 如何评价新chromecast和chromecast audio 如何评价韩国 KBS 播出的纪录片 中国3.0《明见万里》 小程序在电脑上怎么打开 电脑版小程序如何打开 G7002火车餐车在几号车厢 为什么淘宝上有的卖家在没有评价前就能看到买家的评价呢? 怎么才能进入到百度小程序? k1347火车茶餐厅的地方在几车厢 k1296火车餐车在几号车厢? 粉水晶有荧光反应 我适合荧光绿、黄色、粉色我属于什么肤色 餐厅在火车几号车厢 商贸公司一般纳税人的行业的平均税负率指标各是多少? 火车餐厅一般几号车厢 求专业人士解析一下量子点全色域与荧光粉高色域差别~ 使命召唤4英文对白 《穿prada的女魔头》里安蒂应聘成功后的那个被EMILY电话吵醒的早晨放的那首歌是什么? get ready to是什么意思 I am ready to fight是什么意思? 时刻准备战斗 英文 如何除去黑色布鞋上的白色污渍??? 古尔邦节是哪一天? 如何评价节奏坦克小夜曲DSD 关于转档案和户口 ★黑色布鞋掉色怎么办? 黑色布鞋变黄怎么办 a/d数模转换的评价标准是什么,其中的量化精度什么意思 如何评价某宝上的新天马数字功放 1978年的古尔邦节是哪一天 全国有多少个中学 南充一共有多少个高中? 今天盐城阜宁天气好钓鱼吗? 阜宁响水县射阳县长沙市的天气情况 阜宁623龙卷风受灾多少公里 阜宁响水县射阳县怎么查询前几天的天气 阜宁天气环保局局长 阜宁县芦蒲烈士路,上面*多次拔款,为何至今道路还未建,遇下雨天气道路是无法可行 可 阜宁明天会更好吗》? 阜宁公兴镇太平桥天气 连云港阜宁响水县.世界上有哪些气候带?