切换到宽版

中国黑防联盟

查看: 115|回复: 26

[智能手机] 请问C# winform如何实现将一个不规则外形的图片弄成按键?

[复制链接]
发表于 2024-12-17 12:06:43 | 显示全部楼层 |阅读模式
2黑币
请问C# winform如何实现将一个不规则外形的图片弄成按键?

永远支持中国黑防联盟论坛:www.vcs6.com
回复

使用道具 举报

发表于 2024-12-17 12:06:53 | 显示全部楼层
<div class="content-rich-box rich-text-" ><div class="law-answer-wrapper-highlight">一看你就不是C++转过来的,最简单的法子是winform按钮设置省flag然后把边设置为0。这种是出缺点的,你按他的时候不怎么生动,要生动点那就给他按钮事件,鼠标enter、leave、mouseup、mousedown、mousemove全部给全,每一个事件按钮的样子要先P好。然后设置按钮弧度。有人说为什么不用图片去处置,你不要自作聪明,图片是要缓冲的,多了你就头痛了。
这样做你会发现每个按钮都要去写,很头痛,那就做成自定义控件。
永远支持中国黑防联盟论坛:www.vcs6.com
回复

使用道具 举报

发表于 2024-12-17 12:07:04 | 显示全部楼层
<div class="content-rich-box rich-text-" ><div class="law-answer-wrapper-highlight">涉及常识:控件重绘、自定义控件(User Control类继承)
先创建自定义控件,
1、让后将backcolor设置为transparents(透明),
2、再为控件添加Mouse_Enter和Mouse_Leave事件,
3、定义重绘函数,例如RePaint(object sender,PaintEventArgs e)(名字随意起,参数要一样)
4、定义int变量用于指示状态,一个数字表示一个状态,例如0表示普通状态,1表示悬停状态,2表示按下后状态......
3、Mouse_Enter时先修改自定义变量,再执行Validate(RePaint)函数
4、再在重绘函数中画图,假如是提早ps好的,能够间接加载图片绘制
永远支持中国黑防联盟论坛:www.vcs6.com
回复

使用道具 举报

发表于 2024-12-17 12:07:15 | 显示全部楼层
<div class="content-rich-box rich-text-" ><div class="law-answer-wrapper-highlight">能够使用 Visual Studio 的图形控件将不规则图形 A 和 B 作为图片放到 Winform 控件中,然后使用事件 MouseLeave 和 MouseDown 来设置不同图片的显示效果。代码如下:
Private Sub PictureBox1_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox1.MouseLeave
PictureBox1.Image = Image.FromFile("path-to-image-A")
End Sub
Private Sub PictureBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseDown
PictureBox1.Image = Image.FromFile("path-to-image-B")
End Sub
永远支持中国黑防联盟论坛:www.vcs6.com
回复

使用道具 举报

发表于 2024-12-17 12:07:23 | 显示全部楼层
<div class="content-rich-box rich-text-" ><div class="law-answer-wrapper-highlight">这个实现起来比较费事。首先做两个透明png图片,然后获取图片的不透明区域的region,然后每隔25ms获取鼠标位置,判断该点能否在region内部,假如是就切换图片并将Enable设为true,分开区域就切换回来。
PS:其别人的方法点击区域是矩形而不是不规则图形。
永远支持中国黑防联盟论坛:www.vcs6.com
回复

使用道具 举报

发表于 2024-12-17 12:07:32 | 显示全部楼层
<div class="content-rich-box rich-text-" ><div class="law-answer-wrapper-highlight">button的FlatStyle属性设置成flat,然后在事件中设置button的BackgroundImage:MouseLeave的时候设为A图片,MouseEnter的时候设为B图片。
永远支持中国黑防联盟论坛:www.vcs6.com
回复

使用道具 举报

发表于 2024-12-17 21:24:18 | 显示全部楼层
不错,又占了一个沙发!
永远支持中国黑防联盟论坛:www.vcs6.com
回复

使用道具 举报

发表于 2024-12-19 05:54:10 | 显示全部楼层
这个非常给力  ,感谢楼主
永远支持中国黑防联盟论坛:www.vcs6.com
回复

使用道具 举报

发表于 2024-12-21 19:15:25 | 显示全部楼层
谢谢分享!一直在找
永远支持中国黑防联盟论坛:www.vcs6.com
回复

使用道具 举报

发表于 2024-12-23 02:25:52 | 显示全部楼层
感谢楼主分享
永远支持中国黑防联盟论坛:www.vcs6.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

手机版|小黑屋|网站地图|( 蜀ICP备2020029785号 )

快速回复 返回顶部 返回列表