返回首页


{S0}简介
发布的Office 2007,您将要更新您的应用程序的最新研究和感觉。 。NET 2.0中,这是一个简单的过程,因为你只需要使用此自定义渲染的ToolStrip经理。分配自定义渲染器的ToolStripManager.Renderer属性,它将所有的ToolStrip,MenuStrip中,StatusStrip,并在您的应用程序的ContextMenuStrip实例自定义的外观。 使用自定义渲染
为了使自定义渲染器的使用,你需要挂接到您的表单的Load事件。在设计时只需双击表格自动生成的Load事件的事件处理程序。然后,您需要添加眼前这个单一的代码行...私人无效Form1_Load的(对象发件人,EventArgs的发送){ ToolStripManager.Renderer =新Office2007Renderer();
有几个您可能需要在设计时采取的其他步骤。如果您使用的是一个StatusStrip,那么你需要更新的渲染模式,因为默认情况下,它不会使用在上面的代码行中指定的全球性。因此,对于每一个StatusStrip,你只需要单击智能标记,并设置RenderMode要ManagerRenderMode。同样,任何创建的ToolStripContainer,只是留在容器区域中心按一下,然后看看RenderMode的属性窗口,并再次改变它,以ManagerRenderMode。兴趣点
我想有上下文菜单中有圆润,就像Office 2007的角落,但是这是不是因为工具条已经实施的方式。总是在一个弹出窗口的整个客户区的颜色绘制的上下文菜单中的背景。所以这是不可能的,模拟绘制像素的位置一个圆角。我不能找到一种方法来设置弹出窗口的一个地区。也许别人有更好的运气。历史
此自定义渲染器的发展过程中添加的Office 2007外观氪工具包的一部分。氪工具包是一个自由设定。NET 2.0的Windows窗体应用程序的控制。它实现了完整的Office 2007外观,包括其所有控制按钮,面板,头,等等。您可以下载免费的工具包。

回答

评论会员:MaximilianReisch 时间:2011/12/07
我创造了一个很好的类,压缩在一个文件,可以更容易地做同样的事情。我想问上传我的版本的权限
评论会员:?ISharp 时间:2011/12/07
版优秀
评论会员:!borchanii 时间:2011/12/07
可能是一些有绘画的ContextMenu禁用的形象问题时,大小超过16x16的,图像比预期大,
这个问题解决了modifing代码一点点

office2007Renderer.cs,在功能OnRenderItemImage,改变它这个代码:
 // We only override the image drawing for context menus

            if ((e.ToolStrip is ContextMenuStrip) ||

                (e.ToolStrip is ToolStripDropDownMenu))

            {

                if (e.Image != null)

                {

                    if (e.Item.Enabled)

                        e.Graphics.DrawImage(e.Image, e.ImageRectangle);

                    else

                        //bit correction : drawing the image with the needed size

                        ControlPaint.DrawImageDisabled(e.Graphics, new Bitmap(e.Image, e.ImageRectangle.Size),

                                                        e.ImageRectangle.X,

                                                        e.ImageRectangle.Y,

                                                        Color.Transparent);

                }

            }

            else

            {

                base.OnRenderItemImage(e);

            }

得益于此greatefull代码
评论会员:。2twotango 时间:2011/12/07
您好菲尔赖特,

能否请您就以下问题。
其在商业产品中的重用的故事,是它允许吗?
是否有任何限制,版权要插入的语句,信贷给予等?

的问候,
2twotango
评论会员:会员1940598 时间:2011/12/07
我要如何改变菜单项的文本颜色
防止渲染
评论会员:?dherrmann 时间:2011/12/07
喂,
我已经转换成VB C#渲染,但有如下因素的问题:

MenuStrip中是呈现在确定蓝色的多数民众赞成,但是当鼠标在某个项目时,没有渐变背景。当我调试我看到的代码,代码
DrawGradientToolItem(e.Graphics,e.Item,_itemToolItemSelectedColors)
数组_itemToolItemSelectedColors在它的颜色,但所有colorvalues​​的ARGB =(0,0,0,0)
转换后的代码没有错误!但是那是什么呢?
谁可以帮我吗?我应该发给一些更多的代码?

问候
迪特里希
评论会员:AngleV 时间:2011/12/07
同认为我
任何解决方案
评论会员:?AngleV 时间:2011/12/07
我发现的解决方案

更改以下变量的名称,通过交流,在他们面前的

#地区"公共字段"
  ; 公共cInsideTop1颜色
&# 160; 由于颜色的公共cInsideTop2
 0; 公共cInsideBottom1颜色
& #160; 公共cInsideBottom2颜色
 0; 公共cFillTop1颜色
  ; 由于颜色的公共cFillTop2
  ; 公共cFillBottom1颜色
公共cFillBottom2颜色
& #160; 由于颜色的公共cBorder1
 60; 公共cBorder2如颜色
#END地区

#地区"身份"
 0;的Public Sub New(BYVAL insideTop1 BYVAL insideTop2颜色,颜色,BYVAL insideBottom1由于颜色为彩色,BYVAL insideBottom2,BYVAL fillTop1 BYVAL fillTop2至于颜色,颜色,如颜色,BYVAL fillBottom1,BYVAL fillBottom2如颜色,BYVAL border1颜色,BYVAL如颜色border2)
cInsideTop1 = insideTop1
&# 160; cInsideTop2 = insideTop2
&# 160; cInsideBottom1 = insideBottom1
&# 160; cInsideBottom2 = insideBottom2
cFillTop1 = fillTop1
  ; cFillTop2 = fillTop2
& #160; cFillBottom1 = fillBottom1
 60; cFillBottom2 = fillBottom2
  ; cBorder1 = border1
  ; cBorder2 = border2
END SUB
#END地区
评论会员:pimb2 时间:2011/12/07
当一个菜单项被选中,它也是打勾。我不知道是否有可能对其进行修复,但我刚遇到的和想告诉它。
评论会员:lextm 时间:2011/12/07
使用这个渲染器后,我得到了一些图标的问题。例如一些主菜单图标由几个大小。渲染在这种情况下,拿起一个较大的尺寸比主菜单的标准,效果不好。

为什么不主机SF.net或CodePlex上或谷歌代码的这个渲染,使人们可以轻松消防错误报告?
评论会员:JeremyHill 时间:2011/12/07
您好,
非常好的前瞻性渲染。
一个小细节:

OnRenderToolStripContentPanelBackground

你对此有何评论:

/ /必须调用基类,否则随后的图形不会出现!

其实,你不会需要这个调用 - 你会消除沉重的背景闪烁 - 如果你正确设置e.Handled为true,当你有画自己

欢呼声,

JD
评论会员:查Catron 时间:2011/12/07
感谢我只是插在OfficeRenderer,它是伟大的。


评论会员:caddzooks 时间:2011/12/07
"你可以检查出http://www.componentfactory.com/products.php我们氪免费工具包库"

哪里是'自由'库

我似乎无法找到它。

如果没有自由的图书馆,请修改您的文章,并停止使用它,以吸引人们到一个网站,你是卖一个商业产品。


评论会员:AbsCode 时间:2011/12/07
嗯...点击"氪工具包"的头版,你最终会在这里:

评论会员:ComponentPhil 时间:2011/12/07
更快,只需下载免费的工具包,直接从这里...

http://www.componentfactory.com/downloads/KryptonToolkit251.msi

关于
菲尔

菲尔赖特
http://www.componentfactory.com
免费用户界面NET2功能
控制库
评论会员:osvaldas_briedis 时间:2011/12/07
任何人都可以说是这个源代码是免费的。因为当我看到http://www.componentfactory.com/源是99元,因此,如何以及在何处没有你。我可以自由地使用它。
感谢。

Osikas
评论会员:lextm 时间:2011/12/07
我不是代表菲尔,但似乎这个源代码是不是内氪工具包的最终代码,菲尔不到位一个明确的许可协议。那么,为什么不自由使用代码?如果菲尔想要告你,他必须说明等等等等,已经向您发出警告。

还要注意,你会从元件厂本文不支持。菲尔为什么不明确的状态,我们可以自由地使用这篇文章的源代码?
评论会员:MaximilianReisch 时间:2011/12/07
菲尔的帐户已被禁用。也许permisson问题是不必要的?我想上传一个更易于使用的紧凑版本,所以我会做,如果他ACC。禁用/
评论会员:MaximilianReisch 时间:2011/12/07
菲尔的帐户已被禁用。应该使用自己的代码我上传的东西,或者我应该更好地等待
评论会员:?thachvv18 时间:2011/12/07
我如何能呈现在2007年主题"选项卡控制

感谢

thachvv
评论会员:jpmsoft 时间:2011/12/07
你需要支付的氪导航工具包
有一个非常酷的标签控制,可以在任何Office 2007年的主题绘制。

我不的事情,笔者将同意给所有免费。若有,在哪里下载链接
评论会员:??thachvv18 时间:2011/12/07
图纸加载时速度很慢,我的申请
。http://farm2.static.flickr.com/1054/838707123_307a518ae7.jpg?v=0

如何才能提高在渲染模式的负载performce?

感谢。

thachvv
评论会员:afaz 时间:2011/12/07
我怎样才能渲染器状态条上的进度,使其在Office 2007相同吗?我怎么能得到2007年的办公模式的其他颜色表
感谢前言

没有什么是不可能的
评论会员:KoaQiu 时间:2011/12/07
this.statusStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.ManagerRenderMode;