脉冲按钮

下载VS2008 source and demo project - 34.4 KB

介绍

本文演示了如何使用。net 2.0和GDI+创建带有动态元素(pulse)的按钮。该控件利用了。net框架的Button类。

按钮状态

这里是不同的按钮状态:

鼠标移过的地方显示为白色(透明)边框,焦点显示为纯橙色。按下状态与默认状态相同,但没有反射。

图形

下面是显示的按钮的不同元素:

图像和文本属性都可以设置。按钮支持两种形状:圆形和矩形。矩形的形状可以有圆角。

体系结构

该控件由一个类PulseButton组成,它继承自System.Windows.Forms。按钮类:

使用的代码

要测试该按钮,只需下载演示项目并使用Visual Studio 2008构建它。
单击不同的PulseButtons,以便在属性网格中引用它们。

以下是对属性的简要描述:

ButtonColorBottom -中心底部的颜色	ButtonColorTop -中心顶部的颜色	角半径-当形状设置为矩形时角的半径	FocusColor -显示焦点的边框颜色	前院颜色-文本的颜色	Interval—定时器的时间间隔,默认为50 [ms](此属性不可浏览)	脉冲数-脉冲数,1 - 3可以得到最好的结果	脉冲色-脉冲的颜色	脉冲宽度——脉冲的宽度——应该小于控制宽度的一半	形状型——圆形或长方形	脉冲速度-脉冲的速度,值在0.1 - 2之间看起来没问题

代码

脉冲使用system . window . forms . timer来更新。渲染脉冲的例程是这样的:

隐藏,缩小,复制代码///
/// Handles the pulse timer tick.
///
/// The sender.
/// The
/// instance containing the event data.
private void PulseTimerTick(object sender, EventArgs e)
{
pulseTimer.Enabled = false;
InflatePulses();
Invalidate();
pulseTimer.Enabled = true;
}

///
/// Inflates the pulses.
///
private void InflatePulses()
{
for (var i = 0; i < pulses.Length; i++)
{
pulses[i].Inflate(PulseSpeed, PulseSpeed);
if (pulses[i].Width > Width || pulses[i].Height > Height ||
pulses[i].X < 0 || pulses[i].Y < 0)
pulses[i] = new RectangleF(pulseWidth, pulseWidth,
Width - 2 * pulseWidth, Height - 2 * pulseWidth);
pulseColors[i] = Color.FromArgb((int)(Math.Min(pulses[i].X * 255 /
pulseWidth, 255)), PulseColor);
}
}

脉冲被充气使用脉冲脉冲,当一个脉冲超过控制的范围,然后大小重置。当移动到控件的边缘时,脉冲颜色变得更加透明。

的兴趣点

常规的按钮控件所涵盖的内容远不止眼前所见,因此我们从它继承了很多东西。另一种可能是继承ButtonBase并实现IButtonControl,以避免获得您不需要的东西,但这会花费更多的精力。

历史

2009年10月10日:第一版control 1.0	2015年6月:在这里找到WPF版本:



					本文转载于:http://www.diyabc.com/frontweb/news14583.html
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 JK 触发器和单次脉冲按钮可以实现 00 01 10 11 的循环输出。具体实现如下: 1. 首先将两个 JK 触发器以串联的方式连接。 2. 将时钟信号输入到第一个 JK 触发器的时钟输入端。 3. 将第一个 JK 触发器的 Q 输出连接到一个单次脉冲按钮的输入端。 4. 将单次脉冲按钮的输出端连接到第二个 JK 触发器的时钟输入端。 5. 将第一个 JK 触发器的 J 和 K 输入端都连接到高电平。 6. 将第二个 JK 触发器的 J 和 K 输入端连接到第一个 JK 触发器的 Q 输出端,这里需要使用反相器将第一个 JK 触发器的 Q 输出反相。 7. 将初始状态设置为 00,即将第一个 JK 触发器的 J 和 K 输入端都连接到低电平。 8. 当单次脉冲按钮按下时,单次脉冲触发器会输出一个脉冲信号,使得第二个 JK 触发器的状态切换到 10。 9. 当时钟信号的上升沿到来时,第一个 JK 触发器会切换到 01 状态,此时单次脉冲触发器不会再次输出脉冲信号,第二个 JK 触发器的状态仍然是 10。 10. 当时钟信号的下降沿到来时,第一个 JK 触发器会切换到 11 状态,此时单次脉冲触发器不会输出脉冲信号,第二个 JK 触发器的状态仍然是 10。 11. 当时钟信号的上升沿再次到来时,第一个 JK 触发器会切换到 00 状态,此时单次脉冲触发器仍然不会输出脉冲信号,第二个 JK 触发器的状态仍然是 10。 12. 重复上述步骤,即可实现 00 01 10 11 的循环输出。 下面是一个简单的电路图示例: ![JK触发器和单次脉冲按钮实现00 01 10 11循环输出](https://img-blog.csdnimg.cn/20211217161127491.png) 需要注意的是,在实际电路中,时钟信号需要进行适当的缓冲和滤波,以保证稳定性和可靠性。同时,还需要注意时序和同步问题,以避免出现意外的错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值