日期:2008-11-30  浏览次数:20427 次

聊天主题:如何用C#定制个性化的界面控件
主持人和专家介绍主持人:Guest_jswang_MS 微软专家: 韩定一(Guest_Danny_MS),赵彦(Guest_Francs_MS)
Host Guest_jswang_MS says: 欢迎大家参加微软在线技术聊天。 Host Guest_jswang_MS says: 本次聊天的主题是如何用C#定制个性化的界面控件 Host Guest_jswang_MS says: 首先,让我们欢迎来自微软全球技术中心工程师赵彦,韩定一 Host Guest_Francs_MS says: 大家好,我是微软全球技术中心技术专员赵彦,很高兴今天能和大家一起在这里讨论。 Host Guest_Danny_MS says: 大家好!我是微软全球技术中心(上海)技术专员韩定一。欢迎大家来和我们一起讨论问题。
来宾提问 Q 和专家解答 A[Q] sarillafan : Hi, I want to ask one question, Is there any method to change the whole appliation style in a simple way? [A] 你可以将控件的Flat属性设为System,并写一个manifest文件 [A] 想要让程序里的控件在Windows XP下呈现出XP的风格,请参考http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchusingwindowsxpvisualstyleswithcontrolsonwindowsforms.asp。 [Q] xiaohei : manifest文件主要包括那些内容 [A] 我刚才给出的链接里有的:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><assemblyIdentity   version="1.0.0.0"   processorArchitecture="X86"   name="Microsoft.Winweb.<Executable Name>"   type="win32"/><description>.NET control deployment tool</description><dependency>   <dependentAssembly>     <assemblyIdentity       type="win32"       name="Microsoft.Windows.Common-Controls"       version="6.0.0.0"       processorArchitecture="X86"       publicKeyToken="6595b64144ccf1df"       language="*"     />   </dependentAssembly></dependency></dependency>......
[Q]i在控件重画时,请问怎样可以实现不规则的渐变效果? [A].Net类库中有System.Drawing.Drawing2D.LinearGradientBrush可以画出渐变的效果, http://www.codeproject.com/cs/miscctrl/cutebutton.asp [A]如果自己画(drawline)可以定制更丰富的效果,但是实现比较复杂 [Q]可否自定义渐变的公式? [A]所有东西都从底层做起,当然可以自己定义渐变公式 [Q] sarillafan : 能不能给一点代码来示范如何画扁平的控件(Flat Control) [A] 重画菜单的例子有:http://www.codeproject.com/cs/miscctrl/vsnetmenu.asp,该例子画出了Visual Studio .NET样式的例子。 [A] 重画工具栏的例子有:http://www.codeproject.com/cs/miscctrl/vsnettoolbar.asp。 [A] 需要扁平的下拉框控件,您可以参考http://www.codeproject.com/cs/miscctrl/vsnetcombobox.asp上的例子。 [Q] seventh : 请问在重画过程中,能否改变MainMenu条的背景颜色? [A] 可以的,您可以重载 MenuItem.OnDrawItem() [Q] LiuLiu : 所有的控件都可以被重画吗?好像有的控件很复杂。 [A] 是的。确实有的类比较复杂。例如:ComboBox、ToolBar。 [Q] LiuLiu : 那么如何重画那些比按钮、窗体复杂的东东?例如Toolbar? [A] 您需要对许多事件响应函数进行重载,http://www.codeproject.com/cs/miscctrl/vsnettoolbar.asp上有例子。 [Q] xiaohei : 能不能介绍一个自绘不规则窗体的例子及方法 [A] 您可以将窗体设为透明,并利用贴图来实现 [Q] seventh : 如果再redraw过程中大量贴图,似乎会使程序变得很慢,怎样能解决这个问题? [A] 可以开一个缓存Graphics对象,在那里面画好,再显示到屏幕上 [Q]what is MSIL? [A]那是Microsoft intermediate language的简称 [A].Net将所有其上的语言首先编译成IL,在执行的,这样就能使不同的语言在.Net平台上有几乎相同的表现,前提就是他们遵重规范,并能被编译成IL [Q]Shall we study IL just as we should study ASM? [A]不需要,IL对于上层语言的编写者是透明的,如果你了解IL规范,你就能开发一种.net支持的新语言了 [Q] 在贴图过程中,我发现图片色彩的RGB值有时会很莫名地改变,影响到界面效果,请问为什么会导致这样的情况发生?可否避免? [A] 可能是由于您设图片的颜色位数太低了 [Q] seventh : 如果我需要贴一些形状不规则的图片,是否一定要把图片设置成背景透明的gif图片,有时候这样很麻烦阿~!! [A] bitmap.maketransparent() 需要画出像Outlook那样的快捷方式栏可以参见http://www.codeproject.com/cs/miscctrl/OutlookBar.asp上的例子。 有关System.Windows.Forms.Control类的信息请参见MSDN:ms-help://MS.VSCC/MS.MSDNVS/cpref/html/frlrfSystemWindowsFormsButtonMembersTopic.htm [Q] maorachow : Question: if I created a C# program,can I run it on window98? [A] 如果您的Windows98装了.NET Framework的话,那是可以的 [Q]做想vs.net里面的属性窗口的那种控件那有例子? [A]你可以看看MSDN上的例子:property grid http://samples.gotdotnet.com/quickstart/winforms/doc/ControlRef/PropertyGridCtl.aspx http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/usingpropgrid.asp http://msdn.microsoft.com/library/default [A] 您可以使用Sy