返回首页

{A}
{S0}简介
这是我的第一篇文章在CodeProject上,所以请让我知道任何糟糕的英语,或坏的执行代码和错误。
我一直很喜欢苹果设计为两个操作系统和设备。因此,很自然,我尝试模仿一些OSX和iTunes在他们的GUI提供的清凉控制。控制,我会在这里目前是quot;多少空间是leftquot;在iTunes的iPod视图下吧。
我也延长了控制值的增加和减少,全部可以进行定制,以支持一个ProgressBar风格。兴趣点
的所有功能,控制使用是完全可定制,inluding基础颜色,边框,镜面浑浊等控制
控制来作为一个DLL,让所有您需要做的的就是添加一个引用。NET项目中的DLL,你将有充分的访问控制,或者你也可以包括DLL项目和使自己的额外自定义。
的控制也有单声道的全力支持。只要您使用System.Windows.Forms的绑定使用Mono,它的伟大工程。 公共属性

public float StepSize

public int StepInterval

public int BarDividersCount

public float BarMirrorOpacity

public float BarFillProcent

public float BarBorderWidth

public Color BarBackgroundLight

public Color BarBackgroundDark

public Color BarLight

public Color BarDark

public Color BarBorderColor

public BarType BarType

这里列出的所有属性都是您唯一需要修改控制看- N -感觉完全的值。其中一些需要解释一下。
步长和StepInterval属性控制或不控制是否应作为一个ProgressBar控件。您激活的步长设置一个值,该值不为0(零)。如果该值小于0,进度将向后打勾,如果该值大于0,它将作为一个普通的进度控制移动和StepInterval值GT; 0。
BarDividersCount控制控制将吸引多少垂直线。
BarType属性是一个枚举,控制控制状态或类型。例如,如果你设置的BarType财产的ProgressBar,它会作为一个ProgressBar。 ,如果设置了BarType动画,控制将quot;橡胶Bandquot;新的百分比值,最后,您可以设置BarType为静态,这将是一个没有运动或动画的静态控制。
的动画效果的想法提交Ben_64,感谢伟大的想法:)基本知识,以落实quot;下降effectquot;
要完成的下拉作用,我们需要创建一个我们原本画,然后翻转180度的图像的副本。此外,我们需要使图像半透明,然后添加目标的背景颜色透明淡出。
下面的代码演示了这个:{C}最后
我真的希望有人会把这种控制在一些项目中使用。也许,我有一个简单的翻转图形对象和修改图像的透明度。因为我的英文不好,我真的希望,该代码会为自己说话。 ;)

回答

评论会员:游客 时间:2011/12/14
马塞洛里卡多-奥利维拉
我喜欢的镜面效果。我是从5。

查看代码项目在这里
评论会员:。SNEWS 时间:2011/12/14
欢呼的队友!
评论会员:OnAir公司 时间:2011/12/14
!非常可观的控制
有谁知道如何修改这个控制​​,使其填满从右到左?BR}感谢。
评论会员:SNEWS 时间:2011/12/14
我终于得到了一些时间,使一个feaue更新控制。更新大多是设计师的具体变化。
享受。
评论会员:andy74656 时间:2011/12/14
什么是授权?可以使用在一个商业项目,通过适当修改吗?

感谢



评论会员:SNEWS 时间:2011/12/14
喜andy74656
您可以使用任何你喜欢的方式控制。如果可能,也可能是不错的一个小提一个关于"框或东西,但没有必要。
我希望你享受的控制,你把它处于良好的使用。顺便说一句,如果你有告诉一些有关应用程序的可能性,这里会是巨大的,只是纯粹的好奇心

/ /马库斯
评论会员:chris175 时间:2011/12/14
我真的很喜欢这个控制了很多。它的伟大工程。我有几点建议...

1。这个词"Procent"拼写"百分比"。
2。无法使用_BarFillProcent。创建的形式设置为1秒的时间间隔,然后iTunesProgressBar.BarFillProcent = 10的形式和一个计时器,并有BarType动画。
这并不期望的结果,因为BarFillProcent有时会只parially得到更新。3。在所有的公共属性,这将是很好属性喜欢[System.ComponentModel.Description ("")],的DefaultValue RefreshProperties。
4。它是把一些属性的例外情况,然后将它们设置为防止在路上的麻烦。例如:确保BarDividersCount是GT; 0,因为浮动procentMarkerWidth =(宽/ BarDividersCount);是在代码中使用
5。 [System.Drawing.ToolboxBitmap(typeof运算(System.Windows.Forms.ProgressBar))]可添加到您ITunesProgressBar类的顶部
6。你的类OnBarValueChanged事件应该被命名为BarValueChanged事件。那么你可以有一个受保护的虚拟无效OnBarValueChanged(级E)的函数调用BarValueChanged事件。然后在你的代码,而不是调用(OnBarValueChanged = NULL!)OnBarValueChanged(,EventArgs.Empty);可以调用OnBarValueChanged(EventArgs.Empty)。这将是重要的从你的类派生的任何类,因为他们可以覆盖OnBarValueChanged功能,并获得做事情之前或之后调用base.OnBarValueChanged()。
7。也可能宣布BarValueChanged事件这样会更容易阅读...公共事件EventHandlerlt; EventArgsgt; BarValueChanged;
8。我不知道你为什么设置控制的宽度和高度是恒定的值。
任何宽度和高度,你可以让这种控制,它仍然有效。
只是想给你一些建议....

克里斯
评论会员:SNEWS 时间:2011/12/14
喜克里斯
您的建议和拼写检查=坦克)

一段时间,我会尽量更新的控制,并添加一些如果没有您的所有建议。我很高兴地看到,你所花费的时间,建议在控制一些需要改进。坦克再次

*请注意,我目前正在参与一个项目,吮吸我的全部时间(包括备用时间),但我会尝试获得本周末一些空余时间,并进行更新。
评论会员:Andre_J 时间:2011/12/14
您好,

整洁寻找吧。尼斯的工作。不过,我有大问题,在Vista中的CPU密集型任务栏重绘。难道仅仅是我还是其他任何人都可以重现这个问题吗?

我什至试图运行此:
ibar.BarFillProcent =值;
ibar.Refresh()
Application.DoEvents();

它不工作。如果我更改为一个标准的进度,它得到绘制(也许你可以使用卢茨反射扭转原来的进度,研究它的重绘机制)

谢谢!

安德烈
评论会员:SNEWS 时间:2011/12/14
Andre_J写道:不过,我有大问题,在CPU密集型任务,在Vista
栏重绘
高CPU密集型任务驻留在您的应用程序,我的意思是,你做了很多CPU密集型操作,您尝试显示伊巴尔进展?{BR了}
如果洙,尝试从单独的线程内呈现逻辑分离应用程序逻辑。

请提交有关的应用程序的结构的信息多一点点,如果你的CPU昂贵的操作,使栏无法正确重绘。 在晚上在这里,我将调查(本地时间= UTC 1)目前,我在我的Linux机器无法访问的代码,直到后来。 坦克的反馈,我非常有信心,我们会找到一个解决这个问题。
评论会员:Andre_J 时间:2011/12/14
您好再次感谢您的答复。

是的,驻留在我的应用程序的任务。的任务,包括意甲运行SQL脚本来更新数据库,但现在我的任务只是睡觉的MS夫妇每个模拟工作。

在每一项工作中,我设置一个值(m_NumberOfExecutedTasks = 1),然后我有一个计时器蜱每500毫秒更新进度计算(浮点)m_NumberOfExecutedTasks /(浮动)m_TotalTask​​s和设定BarFillProcent值。在这里,我看到我的一个失误,我忘了乘以100。规模是不是0-1,whoopsie。

无论如何,现在我可以得到酒吧更新使用这种方法,只要我在每个定时器滴答运行ibar.Refresh()。只是运行Application.DoEvents()是不够的。因此,有一些内刷新()应引发更多的时候,我想(我如何更新GUI组件本身是有限的知识)

BTW:我们在同一时区的时候,我坐在在Ängelholm,但我认为我们可以留在英国的讨论,以便其他人可以按照。 {七}

安德烈
评论会员:SNEWS 时间:2011/12/14
确定,这是很好的,你已经发现的一些问题BR} 关于你的SQL任务,我必须强调线程长期运行的任务的重要性,所以GUI可以保持响应用户。 Andre_J写道:只要运行Application.DoEvents()是不够的。因此,有一些内刷新()应引发更多的时候,我想

这是正常和不正常的。因为当你设置伊巴尔的新的价值,它应该执行重新绘制它的自我。我要设置相同的模拟样,你这样做,以确保控制将正常运行。

Andre_J写道:无论如何,现在我可以得到酒吧更新使用这种方法,只要我运行在每个定时器滴答
ibar.Refresh()
这是内部使用相同的方法来重绘控制上的变化。此方法无效的控制和控制该地区的占用,使触发OnPaint方法。
Anywho,我会回来做一些模拟的信息多一些。

评论会员:SNEWS 时间:2011/12/14
您好再次
我已经做了简单的模拟应用程序处理的任务是模拟的同类,只有diffrence是我长期的任务,并在一个单独的线程控制工程greate然后

我可以向您发送线程任务,如果你喜欢的示例代码。给我发送电子邮件snewss@gmail.com和I'l发送给您的代码示例。
有一个愉快的一天。
评论会员:gembob 时间:2011/12/14
您好,

多数民众赞成一个超级寻找栏
是否有可能喜欢上运行的东西。NET CF 2.0?

Thnks
宝石
评论会员:SNEWS 时间:2011/12/14
坦克的客气话{七}

我认为这是可以做到的,使得它的CF 2.0下运行的实际。
如果你想,我可以尝试让在本星期happend。

只要给我的信号
评论会员:SNEWS 时间:2011/12/14
我做了一些重新搜索栏支持在移动应用方面的问题

不幸theres没有办法使它成真时刻。在Compact Framework的图形支持的缺乏是巨大的,如果你比较。NET 2.0的Windows窗体框架。我不认为这将是特别有效,让我自己的实现,如紧凑型设备LinearGradientBrush类

但是你可以端口没有影响,但然后你会刚刚结束与酒吧几乎定期寻找,而不是。
评论会员:EDVBS 时间:2011/12/14
我使用这种控制在一个大的用户heldesk项目。

迈克尔
评论会员:SNEWS 时间:2011/12/14
。哇,酷
然后,你必须喜欢它:P

享受和应用程序的好运气。
评论会员:Darchangel 时间:2011/12/14
简单和令人难以置信的的。伟大的工作!
评论会员:SNEWS 时间:2011/12/14
坦克
{七}希望你会做的东西
评论会员:tim_mcgwyn 时间:2011/12/14
您好,

您的控制看起来很大

关于

评论会员:SNEWS 时间:2011/12/14
坦克希望你把一些好的使用
评论会员:SNEWS 时间:2011/12/14
似乎喜欢我忘了上传源最后一次,我更新了文章,对不起
。但现在应该是OK的。
评论会员:ronzulu 时间:2011/12/14
我还没有尝试过... ...但它看起来很酷!感谢。
评论会员:SNEWS 时间:2011/12/14
坦克的男人! {七}