如何实现如下功能:
1.窗口的title上的字显示几种字体,其中一部分显示粗体,一部分细体(其中可能还包括显示颜色的不同),比如,"MainForm"用粗体显示size为9,接着的"....."用细体显示,且字size为8.
2.title颜色渐变,默认的都是蓝色,我如何让它的背景色变为渐变色,比如,"欢迎来到CSDN技术社区...",这个title的背景色,变为渐变色.
3.如何活得某个application的多个实例一共占用了多少虚拟内存.Thx
1.窗口的title上的字显示几种字体,其中一部分显示粗体,一部分细体(其中可能还包括显示颜色的不同),比如,"MainForm"用粗体显示size为9,接着的"....."用细体显示,且字size为8.
2.title颜色渐变,默认的都是蓝色,我如何让它的背景色变为渐变色,比如,"欢迎来到CSDN技术社区...",这个title的背景色,变为渐变色.
3.如何活得某个application的多个实例一共占用了多少虚拟内存.Thx
解决方案 »
- 在数据库通用模块设计时出错,请高手指教
- 最奇怪的IIS错误,喜欢挑战的进来看看。
- c# 如何只设置本地连接的IP地址, 网关?
- [Vista下装vs2008]为什么总是提示文件错误
- C#有什么好点的参考书?
- 导出导入文件到文件到EXCEL报错
- 母版页中播放音频的问题
- OpenFileDialog 里如何捕获错误信息,输出自定义信息?
- linq DataSet group 多字段 出现:必须至少有一个对象实现 IComparable 的错误。请我应该怎样解决??
- C#如何判断本机上是否安装word公式编辑器?
- 最后10分.求C# 如何获得数据库多行bool类型的值
- 【求助】如何可以无效部分窗口?
GetWindowDC得到关于整个窗体的DC,然后就可以在整个窗体上绘制了,当然也就可以在窗体的标题上绘制了,至于标题中的字体或颜色都可以用这个DC来操作,这个没有问题.
GetWindowDC的API原型如下,在User32.dll中:HDC GetWindowDC(
HWND hWnd // handle to window
);
[DllImport("user32.dll", EntryPoint = "GetWindowDC", CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern IntPtr GetWindowDC(IntPtr hWnd);
private void button1_Click(object sender, EventArgs e)
{
IntPtr hdc = GetWindowDC(this.Handle);
Graphics g = Graphics.FromHdc(hdc);
int width = 0;
using (Font font = new Font("宋体", 9, FontStyle.Bold))
{
g.DrawString("MainForm", font, SystemBrushes.Window, 0,0);
width = TextRenderer.MeasureText("MainForm", font).Width;
}
using (Font font = new Font("宋体", 9))
{
g.DrawString("...", font, SystemBrushes.Window, width, 0);
}
}
还有就是这样的话,resize的时候他闪动.效果不好
我想顺便请教一个问题,我现在自己重新写的内容,已经失去了原有内容的一些特性,比如,当我拖动的时候,form的最小化图标已经超过我重写的内容,如何让他动态的将不能显示的部分用"..."表示,我写过一个函数处理这种情况,但是效果不是很好.诚心请教.
比如: string ="一个长的字符串只显示一部分";
显示成 "一个长的字..."可以这样来做:
StringFormat format = new StringFormat(StringFormatFlags.NoWrap);
format.Trimming = StringTrimming.EllipsisCharacter;
Rectangle rect = new Rectangle(0, 0, 50, 30);
string str ="一个长的字符串只显示一部分";
Graphics g = this.CreateGraphics();g.DrawString(str, this.Font, SystemBrushes.WindowText, rect, format);
比如
1.你打开了我这个页面,页面上的title显示"如何改变窗口title状态(具体如下) - internet Explorer"
2.你拖拉页面,将页面变小,当最小化的图标可以掩盖最后title的最后一个字符"r"的时候,此时,标题栏内容变为"如何改变窗口title状态(具体如下) - internet Explo...", 如果你继续拖拉,则动态的变化,直到"如何改变窗口title..."为止,此时不能继续拖拉,使得width变小,内容不变.我采用的办法是实时截取相应的form的长度和字符长度的关系,然后截取对应的一段字符,然后补上"...",最后赋值.
我觉得这个方法好像有点笨
你只要给定了在字符串显示的Rectangle及StringFormat就可以自动的显示成带...的字符串.在你的问题中实际的情况是当窗体变化的时候标题的显示的区域(Rectangle)在不断的变小,而字符串的长度是不变的,正好用
g.DrawString(str, this.Font, SystemBrushes.WindowText, rect, format);
来显示,因为
format.Trimming = StringTrimming.EllipsisCharacter;
所以这个DrawString是自动的来显示最后的不可见的字符用...来表示了.
不能太懒了,哈哈哈哈,hbxtlhx(平民百姓) 赞!
Graphics g = this.CreateGraphics();
LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush(this.ClientRectangle, Color.Blue, Color.Green, LinearGradientMode.Horizontal);
g.FillRectangle(myLinearGradientBrush, this.ClientRectangle);第三个问题可以参见这个用法(不知道这个对不对题):
long totalMem =0;
for(int i = 0;i<ps.Length;i++)
{
totalMem+=ps[i].PeakVirtualMemorySize64;
}